
Método de interpolacion de Newton-Rhapson
C/Visual C
Publicado el 23 de Julio del 2002 por Oliver Mar Ramirez (4 códigos)
44.024 visualizaciones desde el 23 de Julio del 2002
Método de interpolacion de Newton-Rhapson
# include <stdio.h>
# include <conio.h>
# include <graphics.h>
# include <malloc.h>
# include <stdio.h>
#define D double
D b(D X[], D Y[], int n)
{
D bres=0, ba=0;
if( n==0) return Y[n];
bres=(Y[n]-Y[n-1])/(X[n]-X[n-1]);
if(n==1) return bres;
ba=(Y[n-1]-Y[n-2])/(X[n-1]-X[n-2]);
return ( (bres-ba)/( X[n]-X[0] ) );
}
void main()
{
D * X, *Y, x, *B, res=0, mul=1;
int grado, i, j;
clrscr();
printf("\nDe que orden es la interpolacion deseada\n");
scanf("%d",&grado);
X=(D*)malloc(sizeof(D)*grado+1);
Y=(D*)malloc(sizeof(D)*grado+1);
B=(D*)malloc(sizeof(D)*grado+1);
printf("Ingresa la tabla los valores de \nx%8cy:\n", ' ');
for(i=0; i<grado+1; i++){scanf("%lf", &X[i]); gotoxy(wherex()+8, wherey()-1 ); scanf("%lf", &Y[i]);}
for(i=0; i<grado+1; i++){ B[i]=b(X,Y,i); printf("b(%d)=%lf\n",i,b(X,Y,i));}
printf("Numero a interpolar\t\t\t");
scanf("%lf",&x);
printf("f%d(x)=",grado);
for(i=0;i<grado;i++){//para todas las multiplicaciones
if(B[i]>=0 && i<grado && i>0) printf(" + ");
printf(" %.3lf", B[i]);
for(j=0;j<i;j++){//para cada una
//printf("(%.2lf-%.2lf)",x,X[j]);
//printf("(%lf)",x-X[j]);
mul*=x-X[j];
}
printf("(%lf)",mul);
res+=B[i]*mul;
mul=1;
}
printf("\nResultado %lf",res);
getch();
free(X); free(Y); free(B);
}
Comentarios sobre la versión: Versión 1 (4)
Es similar el codigo para el metodo del "punto fijo"
?????????