#include<iostream>
#include<bits/stdc++.h>
using namespace std;
float lagrange(float x[],float y[],int n,float t)
{
float value=0.0;
float temp1,temp2;
for(int i=0; i<n; i++)
{
temp1=1.0;
temp2=1.0;
for(int j=0; j<n; j++)
{
if(i!=j)
{
temp1=temp1*(t-x[j]);
temp2=temp2*(x[i]-x[j]);
}
}
value=value+temp1/temp2*y[i];
}
return value;
}
int main()
{
float x[1000],y[1000];
int n;
cout<<"输入插值节点的个数"<<endl;
cin>>n;
cout<<"接下来输入这些插值节点"<<endl;
for(int i=0; i<n; i++)
{
cin>>x[i]>>y[i];
}
float t;
cout<<"请输入待求解的插值节点的t值"<<endl;
cin>>t;
float result=lagrange(x,y,n,t);
cout<<"输出拉格朗日的值 "<<result<<endl;
return 0;
}
测试数据
6
0.0 0.39894
0.1 0.39695
0.195 0.39142
0.3 0.38138
0.401 0.36812
0.5 0.35206
0.15