C语言实现拉格朗日插值多项式
时间: 2023-07-13 21:35:20 浏览: 104
好的,以下是 C 语言实现拉格朗日插值多项式的代码:
```c
#include <stdio.h>
#define MAXSIZE 10
float lagrange(float x, float *x_list, float *y_list, int n)
{
float result = 0.0f;
for (int i = 0; i < n; i++) {
float term = y_list[i];
for (int j = 0; j < n; j++) {
if (i != j) {
term *= (x - x_list[j]) / (x_list[i] - x_list[j]);
}
}
result += term;
}
return result;
}
int main()
{
float x_list[MAXSIZE] = {0.0f};
float y_list[MAXSIZE] = {0.0f};
int n;
float x;
printf("请输入数据点个数(最多 %d 个):", MAXSIZE);
scanf("%d", &n);
printf("请依次输入 %d 个数据点(x,y):\n", n);
for (int i = 0; i < n; i++) {
printf("第 %d 个:", i + 1);
scanf("%f %f", &x_list[i], &y_list[i]);
}
printf("请输入插值点 x:");
scanf("%f", &x);
float y = lagrange(x, x_list, y_list, n);
printf("在 x=%f 处的插值结果为 y=%f\n", x, y);
return 0;
}
```
该程序通过 `lagrange` 函数实现拉格朗日插值多项式的计算,其中 `x_list` 和 `y_list` 分别为数据点的 x 和 y 坐标,`n` 为数据点个数,`x` 为需要插值的点的 x 坐标。最后通过 `main` 函数读入数据点和插值点的坐标,并输出插值结果。
阅读全文