Appearance
给出
拉格朗日的想法是这样的:构造一个开关函数
这个开关函数在学术上称为「插值基函数」。只有代入
进而构造
代入
问题就变成了如何构造开关函数。
容易发现
把
为使
于是我们成功地构造出了开关函数
模板
cpp
#include <iostream>
#include <vector>
using namespace std;
double f(vector<double>& x, vector<double>& y, double t) {
double result = 0.0;
int n = x.size();
for (int i = 0; i < n; i ++) {
double term = y[i];
for (int j = 0; j < n; j ++) {
if (j != i) {
term *= (t - x[j]) / (x[i] - x[j]);
}
}
result += term;
}
return result;
}
int main() {
vector<double> x = {1, 2, 3, 4, 5};
vector<double> y = {1, 4, 9, 16, 25};
double t;
while (cin >> t) {
cout << f(x, y, t) << endl;
}
return 0;
}