我编了一下拉格朗日插值方法的C语言程序。y=lnx。
测试数据
x=1 f=0.0
x=2 f=0.693
x=3 f=1.099
x=4 f=1.386
取xa=1.5作为验证点。
#include <stdio.h>
int main()
{
FILE *fp;
int i,n,k;
double x[10], f[10],l,ff,xa;
n=3;
xa=1.5;
fp = fopen("F:\\专业\\数值分析编程\\插值方法 Interpolation Algorithm\\Data1.txt", "r");
//if(!fp) return 1;
//fscanf(fp,"n=%d xa=%lf" ,&n,&xa);
for(k=0;k<=n;k++)
{
fscanf(fp,"%lf %lf",&x[k],&f[k]);
}
/*while(fscanf(fp,"%f%lf", x+k, f+k) == 2)
{
k++;
if(k>=n) break;
}*/
ff=0.0;
for(k=0;k<=n;k++)
{
l=1.0;
for(i=0;i<=n;i++)
{
if(i!=k)
{
l=l*(xa-x[i])/(x[k]-x[i]);
}
}
ff=ff+l*f[k];
}
printf("The value of L(%lf)=%.41f\n",xa,ff);
fclose(fp);
return 0;
}
我的文档里没有写x=和y=。同样谢谢您。
追答那你测试数据写x=1 f=0.0
→_→