Aller au contenu

Mathc initiation/Fichiers h : x 18a4

Un livre de Wikilivres.


Sommaire


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.