基于拉格朗日插值线性插值c++
时间: 2023-06-28 15:05:13 浏览: 48
以下是基于拉格朗日插值的线性插值 C++ 代码示例:
```c++
#include <iostream>
#include <vector>
using namespace std;
double lagrange(const vector<double>& x, const vector<double>& y, const double& xi) {
double yi = 0;
for (int i = 0; i < x.size(); ++i) {
double li = 1;
for (int j = 0; j < x.size(); ++j) {
if (i != j) {
li *= (xi - x[j]) / (x[i] - x[j]);
}
}
yi += y[i] * li;
}
return yi;
}
int main() {
vector<double> x = {0, 1}; // x 坐标
vector<double> y = {1, 2}; // y 坐标
double xi = 0.5; // 待插值的 x 坐标
double yi = lagrange(x, y, xi); // 插值结果
cout << "x = " << xi << " 时,y = " << yi << endl;
return 0;
}
```
这个示例实现了一个简单的线性插值,其中 `x` 和 `y` 分别表示已知的数据点的 x 和 y 坐标,`xi` 表示待插值的 x 坐标,`yi` 表示对应的插值结果。函数 `lagrange` 实现了拉格朗日插值算法,其中 `li` 表示第 `i` 个拉格朗日基函数的值,通过循环计算得到插值结果 `yi`。