c语言实现拉格朗日插值
时间: 2023-10-14 16:04:54 浏览: 99
拉格朗日插值是一种多项式插值方法,可以用来估计离散数据点之间的未知函数值。下面是C语言实现拉格朗日插值的示例代码:
```c
#include <stdio.h>
// 定义数据点结构体
typedef struct {
double x; // 自变量
double y; // 因变量
} point;
// 定义拉格朗日插值函数
double lagrange(point* data, int n, double x) {
double result = 0.0;
for (int i = 0; i < n; ++i) {
double term = data[i].y;
for (int j = 0; j < n; ++j) {
if (i != j) {
term *= (x - data[j].x) / (data[i].x - data[j].x);
}
}
result += term;
}
return result;
}
int main() {
// 定义数据点
point data[] = {{1.0, 1.0}, {2.0, 4.0}, {3.0, 9.0}, {4.0, 16.0}};
int n = sizeof(data) / sizeof(point);
// 计算插值
double x = 2.5;
double y = lagrange(data, n, x);
printf("f(%g) = %g\n", x, y);
return 0;
}
```
在上面的示例代码中,我们首先定义了一个数据点结构体,包含自变量和因变量两个成员。然后我们实现了一个`lagrange`函数来计算拉格朗日插值。该函数接受一个数据点数组`data`、数据点个数`n`和自变量`x`作为参数,并返回对应的因变量值。在函数内部,我们首先遍历所有数据点,然后对于每个数据点,计算其对应的拉格朗日基函数值,最后将所有基函数值相加得到插值结果。最后在`main`函数中,我们定义了一个数据点数组,计算插值并输出结果。
阅读全文