Mathc initiation/c36ce
Installer et compiler ces fichiers dans votre répertoire de travail.
/* save as c17e.c */
int main(void)
double ay,by,ny, 
 nx,nz,M;
 clrscrn();
 printf(" f : x,y,z -> %s\n\n", feq);
 printf(" v : x,y -> %s \n", veq);
 printf(" u : x,y -> %s\n\n", ueq);
 printf(" t : y -> %s \n", teq);
 printf(" s : y -> %s\n\n", seq);
 ay = 0;
 by = 4;
 ny = 2*50; nx = 2*50; nz = 2*50;
 M = sympson_dzdxdy( f,
 ay, by,ny,
 sx, tx,nx,
 uz, vz,nz);
 printf(" With the sympson's rule.\n\n\n");
 printf(" (%+.1f (%s (%s \n", by, teq, veq);
 printf(" A = int( int( int( %s dz dx dy = %.6f\n",feq, M);
 printf(" (%+.1f (%s (%s\n\n\n", ay, seq, ueq);
 stop();
 return 0;
/* --------------------------------- */
 Même résultat que la version avec l'algorithme des trapèzes à quelques décimales près.
Exemple de sortie écran :
 f : x,y,z -> 1
 v : x,y -> 4-y 
 u : x,y -> 0
 t : y -> sqrt(y) 
 s : y -> -sqrt(y)
 With the sympson's rule.
 (+4.0 (sqrt(y) (4-y 
 A = int( int( int( 1 dz dx dy = 17.061462
 (+0.0 (-sqrt(y) (0
 Press return to continue.

Mathc initiation/c36cf
Installer et compiler ces fichiers dans votre répertoire de travail.
/* save as c17f.c */
int main(void)
double ax,bx,nx, ny, nz, M;
 clrscrn();
 printf(" f : x,y,z -> %s\n\n", feq);
 printf(" v : x,y -> %s \n", veq); 
 printf(" u : x,y -> %s\n\n", ueq);
 printf(" t : x -> %s \n", teq); 
 printf(" s : x -> %s\n\n", seq);
 ax = 0; 
 bx = 1; 
 nx = 2*50; ny = 2*50; nz = 2*50;
 M = sympson_dzdydx( f,
 ax, bx, nx,
 sy, ty, ny,
 uz, vz, nz);
 printf(" With the sympson's rule.\n\n\n");
 printf(" (%+.1f (%s (%s \n", bx, teq, veq);
 printf(" A = int( int( int( %s dz dy dx = %.6f\n",feq, M);
 printf(" (%+.1f (%s (%s\n\n\n", ax, seq, ueq);
 stop();
 return 0;
/* --------------------------------- */
 Même résultat que la version avec l'algorithme des trapèzes à quelques décimales près.
Exemple de sortie écran :
 f : x,y,z -> x*y
 v : x,y -> x**2*y**3 
 u : x,y -> x*y
 t : x -> x**2 
 s : x -> x
 With the sympson's rule.
 (+1.0 (x**2 (x**2*y**3 
 A = int( int( int( x*y dz dy dx = 0.010582
 (+0.0 (x (x*y
 Press return to continue.

Mathc initiation/d36
<br>
Comparons les trois fonctions de l'intégrale triple à la fonction de l'intégrale simple.
Dans les colonnes de gauche, il y a la fonction de référence pour calculer une intégrale simple par la méthode de Sympson. Dans les colonnes de droite il y a trois fonctions pour calculer l'intégrale triple. L'intégrale triple est calculé par la fonction sympson_dxdydz(); qui appelle la fonction inty_dxdydz();
sympson_dxdydz(); Cette fonction applique la méthode de Sympson sur la variable z en appelant la fonction inty_dxdydz();
inty_dxdydz(); Cette fonction applique la méthode de Sympson sur la variable y en appelant la fonction intx_dxdydz();
intx_dxdydz(); Cette fonction applique la méthode de Sympson sur la variable x
En comparant ces trois fonctions à la fonction de référence, on voit immédiatement l'analogie qu'il existe entre ces fonctions.
<br>
<br>
<br>

Mathc initiation/c36bg
Installer ce fichier dans votre répertoire de travail.
/* save as fg.h */
/* --------------------------------- */
double f(
double x,
double y,
double z)
 return( (cos(x)*sin(y)*z) );
char feq[] = "cos(x)*sin(y)*z";
/* --------------------------------- */
double vx(
double y,
double z)
 return((1));
char veq[] = "1";
double ux(
double y,
double z)
 return((0));
char ueq[] = "0";
/* --------------------------------- */
double ty(
double y)
 return((2));
char teq[] = "2";
double sy(
double y)
 return((0));
char seq[] = "0";
/* --------------------------------- */
Dans ce fichier il y a les fonctions pour le fichier c17g.c

Mathc initiation/c36cg
Installer et compiler ces fichiers dans votre répertoire de travail.
/* save as c17g.c */
int main(void)
double az,bz,nz, 
 nx, ny, M;
 clrscrn();
 printf(" f : x,y,z -> %s\n\n", feq);
 printf(" vx : y,z -> %s \n", veq);
 printf(" ux : y,z -> %s\n\n", ueq);
 printf(" ty : z -> %s \n", teq);
 printf(" sy : z -> %s\n\n", seq);
 az = 0;
 bz = 3;
 nz = 2*20; nx = 2*20; ny = 2*20;
 M = sympson_dxdydz( f,
 az, bz, nz,
 sy, ty, ny,
 ux, vx, nx);
 printf(" With the sympson's rule.\n\n\n");
 printf(" (%+.1f (%s (%s \n", bz, teq, veq);
 printf(" A = int( int( int( %s dx dy dz = %.6f\n",feq, M);
 printf(" (%+.1f (%s (%s\n\n\n", az, seq, ueq);
 stop();
 return 0;
/* --------------------------------- */
Vous pouvez vérifier avec Octave version 5.2 :
I = triplequad (f, xa, xb, ya, yb, za, zb)
» triplequad (@(x, y, z) (cos(x).*sin(y).*z), 0, 1, 0, 2, 0, 3)
ans = 5.3624
 Remarque :
 Avec la méthode de Sympson, il faut (2*20+2*20+2*20 =) 120 itérations pour obtenir quatre chiffres exact après la virgule. Avec la méthode de trapèzes il faut (2*250+2*250+2*250) = 1500 itérations pour obtenir le même résultat.
Exemple de sortie écran :
 f : x,y,z -> cos(x)*sin(y)*z
 vx : y,z -> 1 
 ux : y,z -> 0
 ty : z -> 2 
 sy : z -> 0
 With the sympson's rule.
 (+3.0 (2 (1 
 A = int( int( int( cos(x)*sin(y)*z dx dy dz = 5.362409
 (+0.0 (0 (0
 Press return to continue.

Mathc initiation/c34be
Installer ce fichier dans votre répertoire de travail.
/* save as fe.h */
double f(
double x,
double y)
 return( (sin(cos(x*y))) );
/* --------------------------------- */
char feq[] = "sin(cos(x*y))";
/* --------------------------------- */
double v(
double y)
 return( (.5) );
/* --------------------------------- */
char veq[] = ".5";
/* --------------------------------- */
double u(
double y)
 return( (0) );
/* --------------------------------- */
char ueq[] = "0";
/* --------------------------------- */
Dans ce fichier il y a les fonctions pour le fichier c17e.c

Mathc initiation/c34ce
Installer et compiler ces fichiers dans votre répertoire de travail.
/* save as c17e.c */
int main(void)
double ay,by,n,ny,M;
 clrscrn();
 printf(" f : (x,y)-> %s\n\n\n", feq);
 printf(" v : (y)-> %s \n", veq);
 printf(" u : (y)-> %s \n\n", ueq);
 ay = 0; by = 1;
 n = 2*5; ny = 2*5;
 M = simpson_dxdy(f, u,v,n, ay,by,ny);
 printf(" With the simpson's rule.\n\n");
 printf(" (%.3f (%s\n", by, veq);
 printf(" int( int( %s dx dy = %.6f\n", feq, M);
 printf(" (%.3f (%s\n\n\n", ay, ueq);
 stop();
 return 0;
/* --------------------------------- */
Vous pouvez vérifier le résultat avec Octave version 5.2 :
» I = dblquad (@(x, y) sin(cos(x.*y)), 1, 0, .5, 0)
I = 0.41688
Exemple de sortie écran :
 f : (x,y)-> sin(cos(x*y))
 v : (y)-> .5 
 u : (y)-> 0 
 With the simpson's rule.
 (1.000 (.5
 int( int( sin(cos(x*y)) dx dy = 0.416884
 (0.000 (0
 Press return to continue.

Mathc initiation/d35
Installer et compiler ces fichiers dans votre répertoire de travail.
/* save as c17g.c */
int main(void)
double az,bz,nz, 
 nx, ny, M;
 clrscrn();
 printf(" f : x,y,z -> %s\n\n", feq);
 printf(" v : y,z -> %s \n", veq);
 printf(" u : y,z -> %s\n\n", ueq);
 printf(" t : z -> %s \n", teq);
 printf(" s : z -> %s\n\n", seq);
 az = 0;
 bz = 3;
 nz = 2*250; nx = 2*250; ny = 2*250;
 printf(" Please Wait !!!\n\n");
 M = trapezoid_dxdydz( f,
 az, bz, nz,
 sy, ty, ny,
 ux, vx, nx);
 printf(" With the trapezoidal's rule.\n\n\n");
 printf(" (%+.1f (%s (%s \n", bz, teq, veq);
 printf(" A = int( int( int( %s dx dy dz = %.6f\n",feq, M);
 printf(" (%+.1f (%s (%s\n\n\n", az, seq, ueq);
 stop();
 return 0;
/* --------------------------------- */
Vous pouvez vérifier avec Octave version 5.2 :
I = triplequad (f, xa, xb, ya, yb, za, zb)
» triplequad (@(x, y, z) (cos(x).*sin(y).*z), 0, 1, 0, 2, 0, 3)
ans = 5.3624
 Remarque :
 Avec la méthode de Sympson , il faut (2*20+2*20+2*20 =) 120 itérations pour obtenir quatre chiffres exact après la virgule. Avec la méthode de trapèzes il faut (2*250+2*250+2*250) = 1500 itérations pour obtenir le même résultat.

Exemple de sortie écran :
 f : x,y,z -> cos(x)*sin(y)*z
 v : y,z -> 1 
 u : y,z -> 0
 t : z -> 2 
 s : z -> 0
 With the trapezoidal's rule.
 (+3.0 (2 (1 
 A = int( int( int( cos(x)*sin(y)*z dx dy dz = 5.362400
 (+0.0 (0 (0
 Press return to continue.