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.
Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.