Mathc initiation/c34cc
Installer et compiler ces fichiers dans votre répertoire de travail.
/* save as c17c.c */
int main(void)
double ay,by,n,ny,M;
 clrscrn();
 printf(" f : (x,y)-> %s \n\n", feq);
 printf(" u : (y)-> %s \n", ueq);
 printf(" v : (y)-> %s\n\n\n", veq);
 ay = 0; by = 4;
 n = 2*10; ny = 2*10;
 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;
/* --------------------------------- */
 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)-> x**3+4*y 
 u : (y)-> y/2. 
 v : (y)-> sqrt(y)
 With the simpson's rule.
 (4.000 (sqrt(y)
 int( int( x**3+4*y dx dy = 10.667659
 (0.000 (y/2.
 Press return to continue.

Mathc initiation/c34cd
Installer et compiler ces fichiers dans votre répertoire de travail.
/* save as c17d.c */
int main(void)
double ay,by,n,ny,M;
 clrscrn();
 printf(" f : (x,y)-> %s\n\n\n", feq);
 printf(" u : (y)-> %s \n\n", ueq);
 printf(" v : (y)-> %s\n\n\n", veq);
 ay = 0; by = 3;
 n = 2*10; ny = 2*10;
 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;
/* --------------------------------- */
 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)-> sqrt(9-y**2)
 u : (y)-> 0 
 v : (y)-> sqrt(9-y**2)
 With the simpson's rule.
 (3.000 (sqrt(9-y**2)
 int( int( sqrt(9-y**2) dx dy = 18.000000
 (0.000 (0
 Press return to continue.

Mathc initiation/c35a1
Installer ce fichier dans votre répertoire de travail.
/* save as x_hfile.h */
 Déclaration des fichiers h.

Mathc initiation/c35a2
Installer ce fichier dans votre répertoire de travail.
/* save as x_def.h */
void clrscrn(void)
 printf("\n\n\n\n\n\n\n\n\n\n\n"
 "\n\n\n\n\n\n\n\n\n\n\n"
 "\n\n\n\n\n\n\n\n\n\n\n");
/* ---------------------------------- */
void stop(void)
 printf(" Press return to continue. ");
 getchar();
/* --------------------------------- */
Dans ce fichier il y a les utilitaires.

Mathc initiation/c35a3
Installer ce fichier dans votre répertoire de travail.
/* save as x_xyz.h */
double intx_dxdydz(
double (*P_f)(double x, double y, double z),
double z,
double y,
double (*Pux)(double y, double z),
double (*Pvx)(double y, double z),
 int nx
 int i = 0;
double m = 0.;
double M = 0.;
 for(i = 0; i <= nx; i++)
 M += m * (*P_f)( (((*Pux)( y,z)) + i*(((*Pvx)( y,z))-((*Pux)( y,z)))/nx), y, z);
 return( ((((*Pvx)( y,z)) -((*Pux)( y,z)))*M) / (2*nx) );
/* --------------------------------- */
double inty_dxdydz(
double (*P_f)(double x, double y, double z),
double z,
double (*Psy)(double x),
double (*Pty)(double x),
 int ny,
double (*Pux)(double y, double z),
double (*Pvx)(double y, double z),
 int nx
 int i = 0;
double m = 0.;
double M = 0.;
 for(i = 0; i <= ny; i++)
M += m * intx_dxdydz((*P_f),
 z,
 (((*Psy)(z))+i*(((*Pty)(z))-((*Psy)(z)))/ny),
 (*Pux),
 (*Pvx),
 nx);
 return( ((((*Pty)(z)) -((*Psy)(z)))*M) / (2*ny) );
/* --------------------------------- */
double trapezoid_dxdydz(
double (*P_f)(double x, double y, double z),
double az,
double bz,
 int nz,
double (*Psy)(double x),
double (*Pty)(double x),
 int ny,
double (*Pux)(double y, double z),
double (*Pvx)(double y, double z),
 int nx
 int i = 0;
double m = 0.;
double M = 0.;
 for(i = 0; i <= nz; i++)
M += m * inty_dxdydz((*P_f),
 (az+i*(bz-az)/nz),
 (*Psy),
 (*Pty),
 ny,
 (*Pux),
 (*Pvx),
 nx);
 return( ((bz -az)*M) / (2*nz) );
/* --------------------------------- */
Les fonctions pour calculer les intégrales de la forme dxdydz

Mathc initiation/c35a4
Installer ce fichier dans votre répertoire de travail.
/* save as x_xzy.h */
double intx_dxdzdy(
double (*P_f)(double x, double y, double z),
double y,
double z,
double (*Pux)(double y, double z),
double (*Pvx)(double y, double z),
 int nx
 int i = 0;
double m = 0.;
double M = 0.;
 for(i = 0; i <= nx; i++)
 M += m * (*P_f)( (((*Pux)( y,z)) + i*(((*Pvx)( y,z))-((*Pux)( y,z)))/nx), y, z);
 return( ((((*Pvx)( y,z)) -((*Pux)( y,z)))*M) / (2*nx) );
/* --------------------------------- */
double intz_dxdzdy(
double (*P_f)(double x, double y, double z),
double y,
double (*Psz)(double x),
double (*Ptz)(double x),
 int nz,
double (*Pux)(double y, double z),
double (*Pvx)(double y, double z),
 int nx
 int i = 0;
double m = 0.;
double M = 0.;
 for(i = 0; i <= nz; i++)
M += m * intx_dxdzdy((*P_f),
 y,
 (((*Psz)(y))+i*(((*Ptz)(y))-((*Psz)(y)))/nz),
 (*Pux),
 (*Pvx),
 nx);
 return( ((((*Ptz)(y)) -((*Psz)(y)))*M) / (2*nz) );
/* --------------------------------- */
double trapezoid_dxdzdy(
double (*P_f)(double x, double y, double z),
double ay,
double by,
 int ny,
double (*Psz)(double x),
double (*Ptz)(double x),
 int nz,
double (*Pux)(double y, double z),
double (*Pvx)(double y, double z),
 int nx
 int i = 0;
double m = 0.;
double M = 0.;
 for(i = 0; i <= ny; i++)
M += m * intz_dxdzdy( (*P_f),
 (ay+i*(by-ay)/ny),
 (*Psz),
 (*Ptz),
 nz,
 (*Pux),
 (*Pvx),
 nx);
 return( ((by -ay)*M) / (2*ny) );
/* --------------------------------- */
Les fonctions pour calculer les intégrales de la forme dxdzdy

Mathc initiation/c35a5
Installer ce fichier dans votre répertoire de travail.
/* save as x_yxz.h */
double inty_dydxdz(
double (*P_f)(double x, double y, double z),
double z,
double x,
double (*Puy)(double x, double z),
double (*Pvy)(double x, double z),
 int ny
 int i = 0;
double m = 0.;
double M = 0.;
 for(i = 0; i <= ny; i++)
 M += m * (*P_f)( x, (((*Puy)( x,z)) + i*(((*Pvy)( x,z))-((*Puy)( x,z)))/ny), z);
 return( ((((*Pvy)( x,z)) -((*Puy)( x,z)))*M) / (2*ny) );
/* --------------------------------- */
double intx_dydxdz(
double (*P_f)(double x, double y, double z),
double z,
double (*Psx)(double z),
double (*Ptx)(double z),
 int nx,
double (*Puy)(double x, double z),
double (*Pvy)(double x, double z),
 int ny
 int i = 0;
double m = 0.;
double M = 0.;
 for(i = 0; i <= nx; i++)
M += m * inty_dydxdz((*P_f),
 z,
 (((*Psx)(z))+i*(((*Ptx)(z))-((*Psx)(z)))/nx),
 (*Puy),
 (*Pvy),
 ny);
 return( ((((*Ptx)(z)) -((*Psx)(z)))*M) / (2*nx) );
/* --------------------------------- */
double trapezoid_dydxdz(
double (*P_f)(double x, double y, double z),
double az,
double bz,
 int nz,
double (*Psx)(double x),
double (*Ptx)(double x),
 int nx,
double (*Puy)(double x, double z),
double (*Pvy)(double x, double z),
 int ny
 int i = 0;
double m = 0.;
double M = 0.;
 for(i = 0; i <= nz; i++)
M += m * intx_dydxdz( (*P_f),
 (az+i*(bz-az)/nz),
 (*Psx),
 (*Ptx),
 nx,
 (*Puy),
 (*Pvy),
 ny);
 return( ((bz -az)*M) / (2*nz) );
/* --------------------------------- */
Les fonctions pour calculer les intégrales de la forme dydxdz