C++中使用拉格朗日插值拟合曲线的代码
时间: 2024-05-06 17:21:54 浏览: 78
基于c++语言实现拉格朗日插值
以下是使用拉格朗日插值拟合曲线的C代码:
```
#include <stdio.h>
float lagrange_interpolation(float x[], float y[], int n, float xi) {
float yi = 0.0;
for(int i = 0; i < n; i++) {
float li = 1.0;
for(int j = 0; j < n; j++) {
if(j != i) {
li *= (xi - x[j]) / (x[i] - x[j]);
}
}
yi += li * y[i];
}
return yi;
}
int main() {
float x[] = {0.0, 1.0, 2.0, 3.0, 4.0};
float y[] = {1.0, 2.0, 3.0, 5.0, 8.0};
int n = sizeof(x) / sizeof(float);
float xi = 2.5;
float yi = lagrange_interpolation(x, y, n, xi);
printf("Interpolated value at x = %f is y = %f", xi, yi);
return 0;
}
```
在这个例子中,我们使用拉格朗日插值来拟合一条曲线,这条曲线由5个点组成。我们定义了一个函数 `lagrange_interpolation`,该函数使用拉格朗日插值公式来计算给定点 `xi` 的插值 `yi`。在主函数中,我们定义了5个点的x和y坐标,并使用 `lagrange_interpolation` 函数计算在x = 2.5处的插值。最后,我们将插值输出到控制台上。
阅读全文