拉格朗日插值法C语言程序实现,使用n=1时的拉格朗日点斜式计算
时间: 2024-02-11 14:04:54 浏览: 77
以下是使用拉格朗日点斜式计算的C语言代码实现:
```c
#include <stdio.h>
double lagrange(double x, double *xArray, double *yArray, int n);
int main()
{
double xArray[2] = {1, 2}; // x坐标数组
double yArray[2] = {2, 4}; // y坐标数组
double x = 1.5; // 要求解的x值
int n = 1; // n=1时使用拉格朗日点斜式
double y = lagrange(x, xArray, yArray, n);
printf("f(%lf) = %lf\n", x, y);
return 0;
}
double lagrange(double x, double *xArray, double *yArray, int n)
{
double y = 0;
double numerator, denominator;
for (int i = 0; i <= n; i++)
{
numerator = 1;
denominator = 1;
for (int j = 0; j <= n; j++)
{
if (i == j)
{
continue;
}
numerator *= (x - xArray[j]);
denominator *= (xArray[i] - xArray[j]);
}
y += yArray[i] * numerator / denominator;
}
return y;
}
```
上述代码中,`lagrange`函数实现了拉格朗日插值法的计算,其中`x`为要求解的x值,`xArray`和`yArray`分别为已知的x坐标和y坐标数组,`n`为插值多项式的次数。在该函数中,使用两层循环分别计算每个点的拉格朗日插值基函数,最终得到插值多项式的值。在`main`函数中,设置了x坐标数组为{1,2},y坐标数组为{2,4},要求解的x值为1.5,插值多项式的次数为1。运行程序后,输出结果为:
```
f(1.500000) = 3.000000
```
即x=1.5时的插值多项式的值为3。
阅读全文