Mathc initiation/a07
---- 
Mathc initiation/a37a
Sommaire
En langage C, le nom d'une fonction est un pointeur. Cela représente une adresse. Une adresse est représentée par un nombre. Si ce nombre est 123456 cela veut dire que si je vais à l'adresse 123456 et que je commence à exécuter les commandes en assembleur en fait j'exécute la fonction. 
On peut utiliser ce pointeur comme argument dans l'appel d'une fonction.
Exemple : 
La fonction graphique G_plot(); peut donc dessiner les fonctions f, g, h.
<br>
Déclarer les pointeurs de fonctions :
Un pointeur de fonction doit avoir les mêmes arguments que les fonctions qui vont l'utiliser.
double (*P_f)(double x)
double (*P_g)(double x,double y)
Exemple :
double Dx_1(
double (*P_f)(double x),/* Declaration de pointeur de fonction */
double a,
double h
Pour appeler les fonctions dans le code, nous utiliserons cette méthode :
((*P_f)(a)) /* corresponds à un appel de fonction de forme f(a). */
((*P_g)(a,b)) /* corresponds à un appel de fonction de forme g(a,b). */
Exemple :
 return( ( ((*P_f)(a+h))-((*P_f)(a-h)) ) / (2.*h) );
 f'(a) = f(a+h) - f(a-h)
 2h
Remarque :

Mathc initiation/a37b
Sommaire
Les fonctions f‘.
Calculer la dérivée première.
/* Save as c00.c */
double f(
double x)
char feq[] = "x**2";
/* ------------------------------ */
double g(
double x)
char geq[] = "cos(x)**2+sin(x)+x-3";
/* ------------------------------*/
 f'(a) = f(a+h) - f(a-h)
 2h
double Dx_1(
double (*P_f)(double x),
double a,
double h
 return( ( ((*P_f)(a+h))-((*P_f)(a-h)) ) / (2.*h) );
/* ------------------------------*/
int main(void)
double x = 2.;
double h = 0.001;
printf("\n\n");
printf(" f : -> %s\n\n",feq);
printf(" f(%.3f) = %.3f \n",x,f(x) );
printf(" f'(%.3f) = %.3f \n",x,Dx_1(f,x,h));
printf("\n\n");
printf(" g : -> %s\n\n",geq);
printf(" g(%.3f) = %.3f \n",x,g(x) );
printf(" g'(%.3f) = %.3f \n",x,Dx_1(g,x,h));
printf("\n\n Press return to continue.");
getchar();
 return 0;
/* ------------------------------*/
Exemple de sortie écran :
 f : -> x**2
 f(2.000) = 4.000 
 f'(2.000) = 4.000 
 g : -> cos(x)**2+sin(x)+x-3
 g(2.000) = 0.082 
 g'(2.000) = 1.341 
 Press return to continue.

Mathc initiation/a37c
Sommaire
La fonction FoG.
Ici on passe les deux fonctions f et g à la fonction FoG(). Rappel fog() cela veut dire que l'on commence par calculer g(a) puis on l'applique à f. Soit f(g(a)).
La même fonction peut calculer gof, fog et fof...
/* Save as c01.c */
double f(
double x)
char feq[] = "x**2";
/* ------------------------------ */
double g(
double x)
char geq[] = "2.0*x + 3.0";
/* ------------------------------ */
double FoG(
double (*P_F)(double x),
double (*P_G)(double x),
double a
 return((*P_F)( ((*P_G)(a))) );
/* ------------------------------ */
int main(void)
double a = 2.0;
 printf(" f : x-> %s\n", feq);
 printf(" g : x-> %s\n", geq);
 printf(" \n\n");
 printf(" f(g(%.0f)) = %6.1f\n", a, FoG(f,g,a));
 printf(" g(f(%.0f)) = %6.1f\n", a, FoG(g,f,a));
 printf(" f(f(%.0f)) = %6.1f\n", a, FoG(f,f,a));
 printf("\n\n Press return to continue.\n");
 getchar();
 return 0;
/* ------------------------------ */
Résultat :
 f : x-> x**2
 g : x-> 2.0*x + 3.0
 f(g(2)) = 49.0
 g(f(2)) = 11.0
 f(f(2)) = 16.0
 Press return to continue.

Mathc initiation/a01
Sommaire 
Installer les fichiers h du sommaire dans votre répertoire de travail.
Introduction :
Les fonctions sinus et cosinus :

Mathc initiation/a02
Sommaire 
Installer les fichiers h du sommaire dans votre répertoire de travail.

Mathc initiation/a03
Sommaire 
Installer les fichiers h du sommaire dans votre répertoire de travail.

Mathc initiation/a04
Sommaire 
Installer les fichiers h du sommaire dans votre répertoire de travail.

Mathc initiation/a05
Sommaire 
Installer les fichiers h du sommaire dans votre répertoire de travail.
Dessiner l'aire entre deux courbes :

Mathc initiation/a11
Sommaire 
Installer les fichiers h du sommaire dans votre répertoire de travail.
Dessiner la tangente quand x = 1 :

Mathc initiation/a12
Sommaire 
Installer les fichiers h du sommaire dans votre répertoire de travail.
Dessiner des données :

Mathc initiation/a13
Sommaire 
Installer les fichiers h du sommaire dans votre répertoire de travail.

Mathc initiation/a15
Installer et compiler ce fichier dans votre répertoire de travail.
/* Save as : c00a.c */
nb_Z acos_Z(
nb_Z A
nb_Z A_n;
nb_Z sA;
nb_Z sinA = i_Z(0,0);
nb_Z PIt = i_Z(3.14159265359/2., 0.);
int n = 10; 
int i;
 for(i=0.; i <= n; i++)
 A_n = pow_Z((2.*i+1.), A); 
 sA = smul_Z( factorial(2.*i)
 (pow(4.,i)*pow(factorial(i),2.)*(2.*i+1.)), 
 A_n);
 sinA = add_Z(sinA,sA);

sinA = sub_Z(PIt,sinA);
 return (sinA); 
/* ------------------------------------ */
int main(void)
nb_Z a = i_Z(-.98112545.02453546);
nb_Z b = cos_Z(a);
 clrscrn();
 printf(" cos(");
 p_Z(a,S3,P8,S3,P8);
 printf(") = ");
 p_Z(cos_Z(a),S3,P8,S3,P8);
 printf("\n\n\n");
 printf(" acos(");
 p_Z(b,S3,P8,S3,P8);
 printf(") = ");
 p_Z(acos_Z(b),S3,P8,S3,P8);
 printf("\n\n\n");
 stop(); 
 return 0;
/* ------------------------------------ */

Cet exemple pose des problèmes. Je l'ai installé pour mémoire.
Exemple de sortie écran : 
 cos(-0.98112545+0.02453546i ) = +0.55625490+0.02039405i 
 acos(+0.55625490+0.02039405i ) = +0.98112783-0.02453392i 
 Press return to continue.

Psychologie cognitive pour l'enseignant/Changement conceptuel