Mathc initiation/003i
Apparence
Installer ce fichier dans votre répertoire de travail.
x_sphrab.h |
|---|
/* --------------------------------- */
/* save as x_sphrab.h */
/* --------------------------------- */
double spheric_x_drdadb(
double (*P_f)(double a, double b, double r),
double (*Pr0)(double a, double b),
double (*Pr1)(double a, double b),
int nr,
double a,
double b
)
{
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_drdadb(
double (*P_f)(double a, double b, double r),
double (*Pr0)(double a, double b),
double (*Pr1)(double a, double b),
int nr,
double (*Pa0)(double r),
double (*Pa1)(double r),
int na,
double b
)
{
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_x_drdadb( (*P_f),
(*Pr0),
(*Pr1),
nr,
(((*Pa0)(b))+i*(((*Pa1)(b))-((*Pa0)(b)))/na),
b);
}
return( ((((*Pa1)(b)) -((*Pa0)(b)))*M) / (3*na) );
}
/* --------------------------------- */
double spheric_drdadb(
double (*P_f)(double a, double b, double r),
double (*Pr0)(double a, double b),
double (*Pr1)(double a, double b),
int nr,
double (*Pa0)(double r),
double (*Pa1)(double r),
int na,
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_drdadb((*P_f),
(*Pr0),
(*Pr1),
nr,
(*Pa0),
(*Pa1),
na,
(b0+i*(b1-b0)/nb));
}
return( ((b1 -b0)*M) / (3*nb) );
}
/* --------------------------------- */
/* --------------------------------- */