Aller au contenu

Mathc initiation/003j

Un livre de Wikilivres.

Installer ce fichier dans votre répertoire de travail.

x_sphrba.h
/* --------------------------------- */
/* save as x_sphrba.h                */
/* --------------------------------- */
double spheric_x_drdbda(

double (*P_f)(double a, double b, double r),

double (*Pr0)(double a, double b),
double (*Pr1)(double a, double b),
   int   nr,
   
double    b,
   
double    a
)
{
double r = 0;
   int i = 0;
double m = 0.;
double M = 0.;

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

  r = ((*Pr0)(a,b)) + i*(((*Pr1)(a,b))-((*Pr0)(a,b)))/nr;
  
  M += m * (*P_f)(a,b,r) * r*r * sin(b);
 }

  return( ((((*Pr1)(a,b)) -((*Pr0)(a,b)))*M) / (3*nr) );
}
/* --------------------------------- */
double spheric_b_drdbda(
double (*P_f)(double a, double b, double r),
   
double (*Pr0)(double a, double b),
double (*Pr1)(double a, double b),
   int    nr,

double (*Pb0)(double r),
double (*Pb1)(double r),
   int    nb,
   
double a
)
{
   int i = 0;
double m = 0.;
double M = 0.;

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

  M += m * spheric_x_drdbda(  (*P_f),
                           
                             (*Pr0),
                             (*Pr1),
                               nr,
                               
                           (((*Pb0)(a))+i*(((*Pb1)(a))-((*Pb0)(a)))/nb),
                               
                              a);
 }

 return( ((((*Pb1)(a)) -((*Pb0)(a)))*M) / (3*nb) );
}
/* --------------------------------- */
double spheric_drdbda(
double (*P_f)(double a, double b, double r),
   
double (*Pr0)(double a, double b),
double (*Pr1)(double a, double b),
   int    nr,
   
double (*Pb0)(double r),
double (*Pb1)(double r),
   int    nb,

double a0,
double a1,
   int na
)
{
   int i = 0;
double m = 0.;
double M = 0.;

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

  M += m *  spheric_b_drdbda((*P_f),
                               
                             (*Pr0),
                             (*Pr1),
                                nr,
                             
                             (*Pb0),
                             (*Pb1),
                                nb,
                                
                             (a0+i*(a1-a0)/na));
 }

  return( ((a1 -a0)*M) / (3*na) );
}
/* --------------------------------- */
/* --------------------------------- */