Olá pessoal, sou inexperiente em linguagens de programação, mas estou mais familiarizado com a linguagem C.
Tenho de realizar um código que realize interpolação de Newton mostrando o polinômio no final do programa.
#include <stdio.h>
#include <stdlib.h>
int main () {
int i,j,m,n,p,q,w,o,k;
double S[20],B[20],V[2],U[2],C[20];
double A[20][20];
scanf("%d",&p);//numero de pontos estabelecidos no plano
for (i=0; i<19; i++){
for (j=0; j<19; j++)
A[i][j]=0;
}
for (i=0;i<19;i++){
S[i]=0;
V[i]=0;
B[i]=0;
C[i]=0;
U[i]=0;
}
q=p;
w=p+1;
for (i=0;i<p;i++)
for (j=0;j<2;j++){
if(j==0){
printf("Digite o valor de X %d \n",i+1);
scanf("%lf",&A[i][j]);
}
else {
printf("Digite o valor de Y %d \n",i+1);
scanf("%lf",&A[i][j]);
}
}
for (j=2; j<p+1;j++){
for (i=0; i<p; i++){
A [i][j] = (A[i+1][j-1]-A[i][j-1])/ (A[j+i-1][0] - A [i][0]);
}
}
for (i=0; i<q; i++){
for (j=0; j<w; j++){
printf("%lf\t", A[i][j]);
}
w--;
printf("\n");
}
S[0]=A[0][1];
U[1]=1;
V[1]=1;
i=1;
while (i<p){
V[0]= - A[i-1][0];
U[0]= - A[i][0];
switch (i){
case 1:{
for (m=0;m<2;m++){
for(n=0;n<2;n++){
k=m+n;
B[k]=B[k]+V[m]*U[n];
}
}
for (n=0;n<p;n++)
C[n]=B[n];
}
default :{
for (m=0;m<p;m++){
for(n=0;n<2;n++){
k=m+n;
B[k]=B[k]+C[m]*U[n];
}
}
for (n=0;n<p;n++)
C[n]=B[n];
}
for (n=0;n<p+1;n++)
S[n]=S[n]+C[n];
}
i++;
for (n=0;n<p+1;n++)
B[n]=0;
}
for(n=0;n<p+1;n++)
printf("\n%lf",S[n]);
}
No caso, o polinômio sairia como um vetor, no qual, as linhas diriam qual a ordem da potência de x, ou seja, S[0]= n1* x ^0, S[1] = n2*x^1, etc.
Mas estou com alguns problemas de execução, alguem poderia dar uma olhada e me ajudar?