Mathc initiation/Fichiers h : x 18a4
Installer ce fichier dans votre répertoire de travail.
![]() |
x_horner.h utilitaire |
---|
/* ---------------------------------- */
/* save as x_horner.h */
/* ---------------------------------- */
void p_P(
double *P)
{
int c;
double coeff;
int p0 = 1;
int p = P[0]-1;
printf(" ");
for (c=1; c<P[0]; c++)
{
coeff = P[c];
--p;
if(coeff)
{
p0 = 0;
if(p)
{
if(p==1)
{
if(coeff == 1) printf("+ x ");
else if(coeff == -1) printf("- x ");
else printf("%+.2f*x ",coeff);
}
else
{
if(coeff == 1) printf("+ x**%d ",p);
else if(coeff == -1) printf("- x**%d ",p);
else printf("%+.2f*x**%d ",coeff,p);
}
}
else printf("%+.2f ",coeff);
}
}
if(p0){printf(" 0");}
printf("\n\n");
}
/* ----------------------------------------------------- */
double compute_horner(
double x,
double *Px,
double *Pt,
double *Pa,
double *Pq
)
{
int c;
Pa[1]=Px[1];
for (c=1; c<(Px[0]-1); c++)
{
Pt[c+1] = Pa[c]*x;
Pa[c+1] = Pt[c+1]+Px[c+1];
Pq[c] = Pa[c];
}
return ( Pa[c] );
}
/* ----------------------------------------------------- */
void p_horner(
double *Px,
double *Pt,
double *Pa
)
{
int c;
printf(" ");
for (c=1; c<Px[0]; c++) printf("%+7.2f ", Px[c] );
printf("\n");
printf(" ");
for (c=1; c<Pt[0]; c++) printf("%+7.2f ", Pt[c] );
printf("\n");
printf(" ");
for (c=1; c<Px[0]; c++) printf("----------" );
printf("\n");
printf(" ");
for (c=1; c<Pa[0]; c++) printf("%+7.2f ", Pa[c] );
printf("\n\n");
}
La première fonction imprime un polynôme. La deuxième utilise l'algorithme de Horner. La troisième affiche le tableau des résultats obtenue par la deuxième fonction.