用C语言利用秦九韶算法求多项式
时间: 2024-09-26 20:17:51 浏览: 52
秦九韶算法,也称为快速多项式乘法,是一种用于计算多项式值的古老算法,以中国古代数学家秦九韶命名。在C语言中,我们可以编写函数来实现这个算法,步骤如下:
1. **定义输入数组**:存储多项式的系数,从最高次幂到常数项。
2. **函数声明**:创建一个接受多项式系数数组、次数n以及x的值作为参数的函数。
```c
void qinjiushao(int* poly, int n, double x);
```
3. **算法实现**:
- 初始化一个长度为n的结果数组`result[]`,并设置第一个元素为`poly[0]`。
- 使用循环,从1到n,依次计算每个位置的结果:
a. 对于i从1到n:
i. 初始化一个临时变量`temp = 0`。
ii. 从j = n-i+1开始,对每个系数`coeff`执行:
- `temp = temp * x + poly[j]`
iii. 将`temp`存入`result[i]`。
4. **返回结果**:`result[n]`即为多项式在x处的值。
下面是一个简单的C语言实现示例:
```c
#include <stdio.h>
void qinjiushao(int* poly, int n, double x) {
int result[n];
result[0] = poly[0];
for (int i = 1; i <= n; ++i) {
double temp = 0;
for (int j = n - i + 1; j >= 0; --j)
temp = temp * x + poly[j];
result[i] = temp;
}
printf("多项式 %d*(x-%d)^%d + ... 的值在 x=%lf 时为 %lf\n", poly[0], poly[1], n, x, result[n]);
}
int main() {
// 示例:计算多项式3x^2 + 2x + 1在x=2处的值
int poly[] = {3, 2, 1};
int n = sizeof(poly) / sizeof(poly[0]);
qinjiushao(poly, n, 2);
return 0;
}
```
阅读全文