仿照课本P54 6.3 题目使用Lagrange插值法
#include<iostream>
using namespace std;
double arr[2][5],rslt;
int n;
double f(double x){return x*x*x;}
int main(){
cout<<"Lagrange插值法:\n";
cout<<"函数 y = x³\n输入插值节点的数量:"; cin>>n;
cout<<"请输入节点值:";
for(int i=0;i<n;i++)cin>>arr[0][i],arr[1][i] = f(arr[0][i]);
double x;
cout<<"请输入要计算的x:"; cin>>x;
puts("");
cout<<"节点"<<'\t';
for(int i=0;i<n;i++)cout<<arr[0][i]<<'\t';
puts("");
cout<<"y"<<'\t';
for(int i=0;i<n;i++)cout<<arr[1][i]<<'\t';
puts("");
double tmp=0;
for(int i=0;i<n;i++){
tmp =1 ;
for(int j=0;j<n;j++){
if(i == j)tmp *= arr[1][i];
else tmp = tmp *(x-arr[0][j])/(arr[0][i]-arr[0][j]);
}
cout<<i+1<<"式计算结果"<<tmp<<'\n';
rslt +=tmp;
}
cout<<"综上"<<n-1<<"次插值计算结果为结果为:"<<rslt;
return 0;
}