Mathc initiation/a509
Installer et compiler ces fichiers dans votre répertoire de travail.
c00b.c |
---|
/* --------------------------------- */
/* save as c00b.c */
/* --------------------------------- */
#include "x_afile.h"
#include "fb.h"
/* --------------------------------- */
int main(void)
{
pt2d Q = i_pt2d(1./2.,-1./4.);
clrscrn();
printf(
" |f_xx f_xy| \n"
" H = |f_yx f_yy|\n\n"
" Verify the sign of the Hessian matrix for Q(%0.2f,%0.2f)\n\n\n",
Q.x,Q.y);
printf(" f : x,y-> %s\n\n\n", feq );
printf(" Hessian(%0.2f,%0.2f) = %0.9f \n\n",Q.x,Q.y, Hessian(f,f_xy,Q) );
stop();
return 0;
}
/* --------------------------------- */
/* --------------------------------- */
Remarque : La bibliothèque possède les fonctions f_xx et f_yy, mais elle ne possède pas les fonctions f_xy et f_yx. f_xy et f_yx sont égales. Il faut donc les introduire dans le fichier f.h de manière symbolique pour que la fonction Hessian(f,f_xy,Q) puisse y faire appel.
Par exemple :
/* --------------------------------- */
double f(
double x,
double y)
{
return( (x*x*x + 3*x*y - y*y*y) );
}
/* --------------------------------- */
char feq[] = "x**3 + 3*x*y - y**3";
/* --------------------------------- */
double f_xy(
double x,
double y)
{
return( ( 3 ) );
}
/* --------------------------------- */
char feq_xy[] = "3";
/* --------------------------------- */
/* --------------------------------- */
Exemple de sortie écran :
|f_xx f_xy|
H = |f_yx f_yy|
Verify the sign of the Hessian matrix for Q(0.50,-0.25)
f : x,y-> x**2 + 4*y**2 - x + 2*y
Hessian(0.50,-0.25) = 15.999999939
Press return to continue.