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 : Sélectionner tout - Visualiser dans une fenêtre à part
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;
 
 
}