#include <iostream>
using namespace std;
double lagrange(double x);
double baseFunc(double x,double xi[], int i, int times);
double polynominal(double x, double xi[], int times);
double yFunc(double x);
int main(int argc, const char * argv[]) {
cout<<"请输入插值次数"<<endl;
int t;
cin>>t;
double xi[t];
for (int j = 0; j <= t; ++j) {
cout<<"请每次输入一个插值节点xi"<<endl;
cin>>xi[j];
}
double x;
cout<<"请输入要插值估计的x"<<endl;
cin>>x;
double result = polynominal(x, xi, t);
cout<<result<<endl;
return 0;
}
double polynominal(double x, double xi[], int times){
double poly = 0;
for (int j = 0; j <= times; ++j) {
poly += (baseFunc(x, xi, j, times) * yFunc(xi[j]));
}
return poly;
}
double baseFunc(double x,double xi[], int i, int times){
double l;
double denominator = 1;
double numerator = 1;
for (int j = 0; j <= times; ++j) {
if(j != i){
denominator *= (xi[i] - xi[j]);
numerator *= (x - xi[j]);
}
}
l = numerator / denominator;
return l;
}
double yFunc(double x){
double re = sqrt(x);
return re;
}