lagrange插值c++
时间: 2023-07-01 10:29:26 浏览: 119
下面是一个使用拉格朗日插值法的C++代码示例:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 拉格朗日插值函数
double lagrange(vector<double> x, vector<double> y, double z) {
double result = 0.0;
// 求出每一个 Li(x) 的值
for (int i = 0; i < x.size(); i++) {
double tmp = 1.0;
for (int j = 0; j < x.size(); j++) {
if (i != j) {
tmp *= (z - x[j]) / (x[i] - x[j]);
}
}
result += tmp * y[i];
}
return result;
}
int main() {
vector<double> x{1, 2, 3, 4};
vector<double> y{7, 2, 3, 5};
double z = 2.5;
cout << "f(" << z << ") = " << lagrange(x, y, z) << endl;
return 0;
}
```
这段代码中,我们使用了 vector 来存储输入的 x 和 y 值,然后调用 lagrange 函数来计算在给定点 z 处的插值结果。函数中的实现按照拉格朗日插值公式进行计算,返回插值结果。在主函数中,我们使用了一组示例数据来测试函数的正确性。
阅读全文