拉格朗日插值的c++代码
时间: 2023-10-14 07:06:39 浏览: 146
c++拉格朗日插值法
5星 · 资源好评率100%
以下是拉格朗日插值的C代码示例:
```c
#include <stdio.h>
double lagrange(double x[], double y[], int n, double xi) {
double yi = 0.0;
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 += li * y[i];
}
return yi;
}
int main() {
double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0 };
double y[] = { 2.0, 3.0, 1.0, 4.0, 5.0 };
int n = sizeof(x) / sizeof(x[0]);
double xi = 2.5;
double yi = lagrange(x, y, n, xi);
printf("f(%g) = %g\n", xi, yi);
return 0;
}
```
在此示例中,我们定义了一个 `lagrange` 函数,该函数将输入数组 `x` 和 `y` 中的数据点进行插值,并返回插值结果 `yi`。`n` 参数是插值点的数量,`xi` 是要插值的位置。
在 `lagrange` 函数中,我们使用两个嵌套的循环来计算每个 Li 值,并计算插值结果。在最内层循环中,如果 `i != j`,则计算 Li 值。包含 Li 值的总和是插值函数的值。
在主函数中,我们定义了输入数据点的数组 `x` 和 `y`,并将数组的大小存储在变量 `n` 中。我们还定义了要插值的位置 `xi`,并使用 `lagrange` 函数计算插值结果 `yi`。最后,我们打印出插值结果。
阅读全文