Diferenças Divididas - Cod

Você também pode gostar

Você está na página 1de 3

#include <windows.

h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#define ORDEM 10
#define INDICE 10
int main(void)
{
float X[INDICE],Y[ORDEM][INDICE],Dif[INDICE],Prod[INDICE];
float xi,yi,x,y,xa,xb,ya,yb,Difi,Prodj,somatorio,Px;
int i,j,k,m,n,numero;
printf("INTERPOLACAO DE NEWTON -- DIFERENCAS DIVIDIDAS \n");
printf("Digite a quantidade de pontos: ");
scanf("%d",&numero);
n=numero-1;
printf("\n");
for(j=0;j<=n;j++)
{
printf("Digite as coordenadas do ponto %d: ",j);
scanf("%f",&xi);
scanf("%f",&yi);
X[j]=xi; Y[0][j]=yi;
}
printf("\n");
k=0; m=n-1;
for(i=0;i<=n;i++)
{
for(j=0;j<=m;j++)
{
xa=X[j]; xb=X[j+1+k]; ya=Y[i][j]; yb=Y[i][j+1];
y=(yb-ya)/(xb-xa); Y[i+1][j]=y;
}
k++; m--;
}
m=n;
printf("i ");
printf("xi\t");
for(k=0;k<=n;k++)
{
printf("
y[%d]\t",k);
}
printf("\n\n");
for(j=0;j<=n;j++)

{
x=X[j];
printf("%d",j);
if(x<0)
{
printf("%.4f ",x);
}
else
{
printf(" %.4f ",x);
}
for(i=0;i<=m;i++)
{
y=Y[i][j];
if(y<0)
{
printf("%.4f ",y);
}
else
{
printf(" %.4f ",y);
}
}
m--;
printf("\n");
}
printf("\n");
printf("Digite o valor de x para ser calculado: ");
scanf("%f",&x);
printf("\n");
printf("i
xi
(x-xi)
Prodi");
printf("\n\n");
Prodj=1;
for(i=0;i<n;i++)
{
xi=X[i];
Difi=x-xi;
Prodj*=Difi;
printf("%d\t",i);
if(xi<0)
{
printf("%f\t",xi);
}

else
{
printf(" %f\t",xi);
}
if(Difi<0)
{
printf("%f\t",Difi);
}
else
{
printf(" %f\t",Difi);
}
if(Prodj<0)
{
printf("%f\t",Prodj);
}
else
{
printf(" %f\t",Prodj);
}
printf("\n");
Prod[i]=Prodj;
}
somatorio=0; Prodj=0;
for(i=0;i<n;i++)
{
yi=Y[i+1][0]; Prodj=Prod[i];
somatorio+=yi*Prodj;
}
yi=Y[0][0];
Px=yi+somatorio;
printf("\n\n");
printf("O valor da funcao no ponto x=%.4f vale %.8f.",x,Px);
getch();
}

Você também pode gostar