C++ 反插值程序示例:拉格朗日插值法
反插值是一种通过已知数据点推断未知数据点的技术。在 C++ 中,我们可以使用拉格朗日插值法实现反插值。以下是一个简单的反插值程序示例:
#include <iostream>
#include <vector>
double lagrange_interpolation(const std::vector<double>& x, const std::vector<double>& y, double xi) {
double yi = 0.0;
int n = x.size();
for (int i = 0; i < n; i++) {
double Li = 1.0;
for (int j = 0; j < n; j++) {
if (i != j) {
Li *= (xi - x[j]) / (x[i] - x[j]);
}
}
yi += y[i] * Li;
}
return yi;
}
int main() {
std::vector<double> x = {1.0, 2.0, 3.0, 4.0, 5.0};
std::vector<double> y = {1.0, 4.0, 9.0, 16.0, 25.0};
double xi = 2.5;
double yi = lagrange_interpolation(x, y, xi);
std::cout << "The interpolated value at x=" << xi << " is " << yi << std::endl;
return 0;
}
在此示例中,我们使用了一个包含五个数据点的向量 'x' 和一个包含对应 'y' 值的向量 'y'。我们还定义了一个要插值的点 'xi',然后使用拉格朗日插值法计算该点的 'y' 值。在这种情况下,我们插值的点是已知点之间的中点,但在实际应用中,插值点可以是任何值。
原文地址: https://www.cveoy.top/t/topic/nPVy 著作权归作者所有。请勿转载和采集!