给出c语言代码,构造一次和二次lagrange插值多项式,f(x)=sinx
时间: 2024-11-07 15:13:48 浏览: 38
在C语言中,我们可以使用Lagrange插值法来构造一个多项式来近似给定函数,如`f(x) = sin(x)`。Lagrange插值是一种线性插值技术,可以用于构建n+1个点的数据函数拟合。以下是构造一次和二次Lagrange插值多项式的简单代码示例:
### 一、一次Lagrange插值 (线性插值)
对于两个数据点(a, f(a)) 和 (b, f(b)),一次Lagrange插值公式如下:
```c
#include <stdio.h>
#include <math.h>
double linear_interpolate(double x, double a, double fa, double b, double fb) {
return fa * (b - x) + fb * (x - a);
}
int main() {
double a = 0, fa = sin(a);
double b = M_PI / 2, fb = sin(b); // pi/2 约等于 1.5708
double x = M_PI / 4; // 求解 sin(pi/4)
printf("Linear interpolation of sin(%lf): %lf\n", x, linear_interpolate(x, a, fa, b, fb));
return 0;
}
```
### 二、二次Lagrange插值 (二次多项式)
对于三个数据点(a, f(a)), (b, f(b)), (c, f(c)),二次Lagrange插值需要两组线性插值:
```c
// 先计算中间节点的y值
double quadratic_interpolate(double x, double a, double fa, double b, double fb, double c, double fc) {
double lb = (fb - fa) / (b - a);
double lc = (fc - fa) / (c - a);
return lb * (x - a) + lc * (x - a); // 线性插值的结果再相加
}
int main() {
double a = 0, fa = sin(a);
double b = M_PI / 3, fb = sin(b);
double c = M_PI / 2, fc = sin(c);
double x = M_PI / 4; // 求解 sin(pi/4)
printf("Quadratic interpolation of sin(%lf): %lf\n", x, quadratic_interpolate(x, a, fa, b, fb, c, fc));
return 0;
}
```
注意:上述代码仅适用于特定点的数据,如果需要对整个区间求解,需要遍历所有点进行插值。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![java](https://img-home.csdnimg.cn/images/20250102104920.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)