⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 拉格朗日插值法.cpp

📁 数值计算方法的程序: 加速迭代 牛顿迭代 Gauss 杜里特尔分解法 克洛特 追赶法 平方根法 改进平方根法 雅可比迭代 高斯 赛德尔迭代 拉格朗日插值法 分段线性插值 分段
💻 CPP
字号:
#include<stdio.h>
void main()
{int N,i,j;
float x[10],y[10],l[10],x0,y0=0,fz,fm;
printf("input N:");
scanf("%d",&N);
printf("input x[i] i=0.....N-1:\n");
for(i=0;i<N;i++)
scanf("%f",&x[i]);

printf("input y[i] i=0.....N-1:\n");
for(i=0;i<N;i++)
scanf("%f",&y[i]);

printf("input x0:");
scanf("%f",&x0);

for(i=0;i<N;i++)
printf("x[%d]=%f ",i,x[i]);
printf("\n");
for(i=0;i<N;i++)
printf("y[%d]=%f ",i,y[i]);
printf("\nx0=%f\n",x0);

for(i=0;i<N;i++)
{fz=1;fm=1;

for(j=0;j<N;j++)
if(j!=i)
{fz*=x0-x[j];
fm*=x[i]-x[j];
printf("l[%d].%d=%f/%f ",i,j,fz,fm);
}

/*  why not?
for(j=0;j<N&&j!=i;j++)
{fz*=(x0-x[j]);
fm*=(x[i]-x[j]);
printf("l[%d].%d=%f/%f ",i,j,fz,fm);
}
*/

/*  or right
for(j=0;j<i;j++)
{fz*=(x0-x[j]);
fm*=(x[i]-x[j]);
printf("l[%d].%d=%f/%f ",i,j,fz,fm);
}

for(j=i+1;j<N;j++)
{fz*=(x0-x[j]);
fm*=(x[i]-x[j]);
printf("l[%d].%d=%f/%f ",i,j,fz,fm);
}
*/

l[i]=fz/fm;printf("\nl[%d]:%f\n",i,l[i]);
}

for(i=0;i<N;i++)
y0=y0+l[i]*y[i];

printf("\n%f",y0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -