c语言构造插值多项式,拉格朗日多项式插值(C语言).docx
时间: 2023-08-15 17:08:40 浏览: 131
以下是C语言实现的拉格朗日插值多项式的代码示例:
```c
#include <stdio.h>
// 拉格朗日插值函数
double lagrange(double x, double *xs, double *ys, int n) {
double res = 0;
for (int i = 0; i < n; i++) {
double w = 1;
for (int j = 0; j < n; j++) {
if (j == i) continue;
w *= (x - xs[j]) / (xs[i] - xs[j]);
}
res += w * ys[i];
}
return res;
}
int main() {
double xs[] = {0, 1, 2, 3};
double ys[] = {1, 2, 1, 0};
int n = 4;
// 输出插值点的函数值
for (int i = 0; i < n; i++) {
printf("f(%.1f) = %.1f\n", xs[i], lagrange(xs[i], xs, ys, n));
}
// 输出插值多项式的函数值
for (double x = 0; x <= 3; x += 0.1) {
printf("f(%.1f) = %.1f\n", x, lagrange(x, xs, ys, n));
}
return 0;
}
```
其中,`lagrange`函数实现了拉格朗日插值多项式的计算。`xs`和`ys`分别是插值点的自变量和因变量数组,`n`是插值点的个数。`main`函数中,我们以一个样例函数$f(x)=x^3-2x^2+x$为例,计算出插值点和插值多项式在一些特定点的函数值。
阅读全文