Aller au contenu

Mathc initiation/Fichiers h : c54da

Un livre de Wikilivres.
Version datée du 6 août 2021 à 19:32 par Xhungab (discussion | contributions) (petit correction)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

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) );
}
/* ---------------------------------- */