[C] Erreur dans l'execution: interpolation de Newton
Bonjour tout le monde,
J'ai essayé de faire un petit programme en langage C, calculant les coefficients qui nous permettent d'avoir une fonction avec l'interpolation de newton, mais ça n'a pas marché.
Ci-dessous le code du programme, et je ne sais pas ou est l'erreur.
J'obtiens comme résultat ce qui suit: A[1]=29817731, A[2]=0, et ce n'est pas le résultat que je devrai avoir
Merci d'avance pour votre aide.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| #include <stdio.h>
void newton(int n)
{
int i,j;
double X[20];
double Y[20];
float F[n][n];
float A[20];
for(i=1;i<n;i++)
{
F[i][0]=Y[i];
}
for(i=1;i<n;i++)
{
for(j=1;j<i;j++)
{
F[i][j]=(F[i][j-1]-F[i-1][j-1])/(X[i]-X[i-j]);
}
}
for(i=1;i<n;i++)
{
A[i]=F[n][i];
}
for(i=1;i<n;i++)
{
printf("A[%d]=%d \n" , i,A[i]);
}
}
int main() {
int i,n,j;
float F[20][20];
double X[20];
double Y[20];
printf("donner le degre du polynome \n");
scanf("%d",&n);
for(j=1;j<=n;j++)
{
printf("element X[%d]= ",j);
scanf("%d",&X[j]);
}
for(i=1;i<=n;i++)
{
printf("element Y[%d]= ",i);
scanf("%d",&Y[i]);
}
newton(n);
system("pause");
return 0;
} |