#include <iostream> #include <stdio.h> using namespace std; int main() { double x,sum,w,w_; int number; cout << "请输入待插值的点的个数:"; cin >> number; double array[2][number]; cout << "请输入x值" << endl; for(int i = 0;i<number;++i) cin >> array[0][i]; cout << "请输入y值" << endl; for(int j = 0;j<number;++j) cin >> array[1][j]; cout << "请分别输入待求点的x坐标:"; cin >> x; sum = 0; w = w_ = 1; for(int i = 0;i<number;++i) w = w*(x-array[0][i]); for(int i = 0;i<number;++i) { w_ = 1; for(int j = 0;j<number;++j) { if(j == i) continue; w_ = w_*(array[0][i]-array[0][j]); } sum = sum+w/(x-array[0][i])/w_*array[1][i]; } printf("求解答案:%f",sum); }
算法思想:由拉格朗日插值定义式及推导过程,设计算法。