Mathc initiation/003d
Apparence
Installer ce fichier dans votre répertoire de travail.
x_sphabr.h |
|---|
/* --------------------------------- */
/* save as x_sphabr.h */
/* --------------------------------- */
double spheric_x_dadbdr(
double (*P_f)(double a, double b, double r),
double (*Pa0)(double b, double r),
double (*Pa1)(double b, double r),
int na,
double b,
double r
)
{
double a = 0;
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.;}
a = ((*Pa0)(b,r)) + i*(((*Pa1)(b,r))-((*Pa0)(b,r)))/na;
M += m * (*P_f)(a,b,r) * r*r * sin(b);
}
return( ((((*Pa1)(b,r)) -((*Pa0)(b,r)))*M) / (3*na) );
}
/* --------------------------------- */
double spheric_b_dadbdr(
double (*P_f)(double a, double b, double r),
double (*Pa0)(double b, double r),
double (*Pa1)(double b, double r),
int na,
double (*Pb0)(double r),
double (*Pb1)(double r),
int nb,
double r
)
{
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_dadbdr( (*P_f),
(*Pa0),
(*Pa1),
na,
(((*Pb0)(r))+i*(((*Pb1)(r))-((*Pb0)(r)))/nb),
r);
}
return( ((((*Pb1)(r)) -((*Pb0)(r)))*M) / (3*nb) );
}
/* --------------------------------- */
double spheric_dadbdr(
double (*P_f)(double a, double b, double r),
double (*Pa0)(double b, double r),
double (*Pa1)(double b, double r),
int na,
double (*Pb0)(double r),
double (*Pb1)(double r),
int nb,
double r0,
double r1,
int nr
)
{
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.;}
M += m * spheric_b_dadbdr((*P_f),
(*Pa0),
(*Pa1),
na,
(*Pb0),
(*Pb1),
nb,
(r0+i*(r1-r0)/nr));
}
return( ((r1 -r0)*M) / (3*nr) );
}
/* --------------------------------- */
/* --------------------------------- */