Mathc initiation/003f
Apparence
Installer ce fichier dans votre répertoire de travail.
x_spharb.h |
|---|
/* --------------------------------- */
/* save as x_spharb.h */
/* --------------------------------- */
double spheric_x_dadrdb(
double (*P_f)(double a, double b, double r),
double (*Pa0)(double b, double r),
double (*Pa1)(double b, double r),
int na,
double r,
double b
)
{
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_dadrdb(
double (*P_f)(double a, double b, double r),
double (*Pa0)(double b, double r),
double (*Pa1)(double b, double r),
int na,
double (*PR0)(double b),
double (*PR1)(double b),
int nR,
double b
)
{
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_x_dadrdb( (*P_f),
(*Pa0),
(*Pa1),
na,
(((*PR0)(b))+i*(((*PR1)(b))-((*PR0)(b)))/nR),
b);
}
return( ((((*PR1)(b)) -((*PR0)(b)))*M) / (3*nR) );
}
/* --------------------------------- */
double spheric_dadrdb(
double (*P_f)(double a, double b, double r),
double (*Pa0)(double b, double r),
double (*Pa1)(double b, double r),
int na,
double (*PR0)(double b),
double (*PR1)(double b),
int nR,
double b0,
double b1,
int nb
)
{
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_b_dadrdb((*P_f),
(*Pa0),
(*Pa1),
na,
(*PR0),
(*PR1),
nR,
(b0+i*(b1-b0)/nb));
}
return( ((b1 -b0)*M) / (3*nb) );
}
/* --------------------------------- */
/* --------------------------------- */