拉格朗日插值法的实现就是通过构造函数,通过已知几对数据然后估算输入对应的数据所得得值。
通过例子可知道拉格朗日法,假设有三组数据分别为(x0,y0),(x1,y1),(x2,y2),与第一个y值相乘得数的分母是(x0-x1)*(x0-x2),分子是:(x-x1)*(x-x2),第二个数就是分母是(x1-x0)*(x1-x2),分子是(x-x0)*(x-x2),第三个数分子是:(x-x0)*(x-x1),分母是(x2-x0)*(x2-x1).
代码实现:
#include<stdio.h>
# define N 100
int main()
{
//设置数据;
int n,i,j;double l[N],l1[N],l2[N],x,f=1.0,y=0 ,x1[N],y1[N];
printf("输入已知数据对数:");
scanf("%d",&n);
printf("输入一个x,输入一个y:");
for(i=0;i<n;i++)
{
//先输入一个x,再输入一个y
scanf("%lf",&x1[i]);
scanf("%lf",&y1[i]);
//将数据进行赋初值
l1[i]=1;
l2[i]=1;
}
printf("输入最后已知的x,求y:") ;//输入数据对
scanf("%lf",&x);
//赋初值
//进行l(x)的分子分母构造
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
l1[i]=1.0*l1[i]*(x-x1[j]);//分子构造
if(i!=j)
{
l2[i]=1.0*l2[i]*(x1[i]-x1[j]);//分母构造
}
}