Sommaire

Présentation de la fonction de Green.
Intégrale double (dydx)Fonction de Green (dydx)
/* ---------------------------------- */
double simpson_dydx(
double (*P_f)(double x, double y),


double ax,
double bx,
   int nx,
   

double (*P_u)(double x),
double (*P_v)(double x),

   int ny)
{
   int i = 0;
double m = 0.;
double M = 0.;

 for(i = 0; i <= nx; i++)
 {
       if(i ==0 || i== nx){m = 1.;}
  else if(fmod(i,2) == 0){m = 2.;}
  else                   {m = 4.;}

  M += m * int_dy((*P_f),

                  (ax + i*(bx-ax)/nx),

  
                  (*P_u),
                  (*P_v),
                     ny);
 }

  return( ((bx -ax)*M) / (3*nx) );
}
/* ---------------------------------- */
/* ---------------------------------- */
double green_dydx(
double (*P_M)(double x, double y),
double (*P_N)(double x, double y),

double ax,
double bx,
   int nx,
double h,
   
double (*P_u)(double x),
double (*P_v)(double x),

   int ny)
{
   int i = 0;
double m = 0.;
double M = 0.;

 for(i = 0; i <= nx; i++)
 {
       if(i ==0 || i== nx){m = 1.;}
  else if(fmod(i,2) == 0){m = 2.;}
  else                   {m = 4.;}

  M += m * gint_dy((*P_M),
                   (*P_N), 
                   (ax + i*(bx-ax)/nx), 
                    h, 
                    
                    (*P_u),
                    (*P_v), 
                     ny);
 }

  return( ((bx -ax)*M) / (3*nx) );
}
/* ---------------------------------- */

Comparons les deux fonctions.

Dans les deux premières colonnes, il y a la fonction de référence pour calculer une intégrale double par la méthode de Sympson. Dans les deuxièmes colonnes il y a les deux fonctions pour calculer la fonction de Green.


On peut remarque que dans les fonctions de Green il y a une fonction supplémentaire en entrée. (Voir (*P_M),(*P_N) ). Il y a aussi le paramètre h pour calculer les équations partielles. (Voir fxy_x());

Dans la deuxième partie de la fonction de Green, il y a le calcul des dérivées partielles au lieu d'un simple appel à la fonction f.


En comparant ces deux fonctions aux fonctions de référence, on voit immédiatement l'analogie qu'il existe entre ces fonctions.


Présentation de la fonction de Green.
Intégrale double (dydx)Fonction de Green (dydx)
/* ---------------------------------- */
double int_dy(
double (*P_f)(double x, double y),

double x,


double (*P_u)(double x),
double (*P_v)(double x),
   int ny
)
{
   int i = 0;
double m = 0.;
double M = 0.;

double tx = 0;
double ty = 0;

 for(i = 0; i <= ny; i++)
 {
       if(i ==0 || i== ny){m = 1.;}
  else if(fmod(i,2) == 0){m = 2.;}
  else                   {m = 4.;}

  tx = x;
  ty = ((*P_u)(x)) + i*(((*P_v)(x))-((*P_u)(x)))/ny;


  M += m * (*P_f)(tx,ty);
 }

  return( ((((*P_v)(x)) -((*P_u)(x)))*M) / (3*ny) );
}
/* ---------------------------------- */
/* ---------------------------------- */
double gint_dy(
double (*P_M)(double x, double y),
double (*P_N)(double x, double y),
double x,
double h,

double (*P_u)(double x),
double (*P_v)(double x),
   int ny
)
{
   int i = 0;
double m = 0.;
double M = 0.;

double tx = 0;
double ty = 0;

 for(i = 0; i <= ny; i++)
 {
       if(i ==0 || i== ny){m = 1.;}
  else if(fmod(i,2) == 0){m = 2.;}
  else                   {m = 4.;}
  
  tx = x;
  ty = ((*P_u)(x)) + i*(((*P_v)(x))-((*P_u)(x)))/ny;

  M += m * ( fxy_x((*P_N),tx,ty,h)-
             fxy_y((*P_M),tx,ty,h) ) ;
 }

  return( ((((*P_v)(x)) -((*P_u)(x)))*M) / (3*ny) );
}
/* ---------------------------------- */
Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.