用C语言给我写一段求拉格朗日插值的代码
时间: 2023-05-25 22:04:29 浏览: 54
下面是一段用 C 语言实现拉格朗日插值的代码:
```
#include <stdio.h>
double lagrange(double* x, double* y, int n, double z) {
double result = 0.0, term;
// Calculate L_i for each i in [0, n-1]
for (int i = 0; i < n; i++) {
term = 1.0;
for (int j = 0; j < n; j++) {
if (j != i) {
term *= (z - x[j]) / (x[i] - x[j]);
}
}
result += y[i] * term;
}
return result;
}
int main() {
double x[] = {1.0, 2.0, 4.0, 5.0};
double y[] = {3.0, 5.0, 2.0, 1.0};
double z = 3.0;
// Call the lagrange function with the given data
double result = lagrange(x, y, 4, z);
printf("f(%0.2lf) = %0.2lf\n", z, result);
return 0;
}
```
这个代码片段实现了一个名为 `lagrange` 的函数,在给定的 `n` 个点 `x` 和 `y` 的情况下,求出拉格朗日插值多项式在 `z` 处的值。在主函数中,我们定义了三个数组:点坐标 `x` 和 `y`,以及要求出的插值点 `z`,然后调用 `lagrange` 函数计算插值多项式的值,并将结果打印出来。