在C语言中,分别用如下三种算法完成P(x)=1+x+2x2+…+7x2在x=1计算编 码和验证: 1、计算一项累加一项; 2、高乘幂继承低乘幂; 3、秦九韶算法。
时间: 2024-09-18 09:07:58 浏览: 41
在C语言中,我们可以使用三种不同的算法来计算多项式 \( P(x) = 1 + x + 2x^2 + \ldots + 7x^2 \) 当 \( x = 1 \) 的值:
1. **逐项累加** (Iterative Approach):
```c
#include <stdio.h>
double calculate_poly_sum(int coefficients[], int degree) {
double result = 0;
for (int i = 0; i <= degree; i++) {
result += coefficients[i] * pow(1, i);
}
return result;
}
int main() {
int coefficients[] = {1, 0, 2, 0, 0, 0, 0, 0, 7}; // x^0 to x^2
int degree = sizeof(coefficients) / sizeof(coefficients[0]) - 1;
double value_at_x1 = calculate_poly_sum(coefficients, degree);
printf("P(1) = %.2lf\n", value_at_x1);
return 0;
}
```
在这个例子中,我们直接遍历系数数组,并将每个对应的 \( x^n \) 乘以 \( x=1 \),然后累加得到结果。
2. **递归高乘幂** (Recursive Approach with Power Function):
```c
#include <stdio.h>
double power(int base, int exponent) {
if (exponent == 0)
return 1;
else if (exponent % 2 == 0)
return power(base, exponent / 2) * power(base, exponent / 2);
else
return base * power(base, exponent / 2) * power(base, exponent / 2);
}
double recursive_poly_sum(int coefficients[], int degree, int index) {
if (index == degree)
return coefficients[index];
else
return coefficients[index] + recursive_poly_sum(coefficients, degree, index + 1) * power(1, index + 1);
}
int main() {
int coefficients[] = {1, 0, 2, 0, 0, 0, 0, 0, 7};
int degree = sizeof(coefficients) / sizeof(coefficients[0]);
double value_at_x1 = recursive_poly_sum(coefficients, degree, 0);
printf("P(1) = %.2lf\n", value_at_x1);
return 0;
}
```
这个方法通过递归地计算每一项 \( x^n \) 并相加来实现。
3. **秦九韶算法** (Chu-Shu Theorem or Horner's Method):
```c
#include <stdio.h>
double horner(const int *coeffs, int n, int x) {
double result = 0;
for (int i = n - 1; i >= 0; i--) {
result = result * x + coeffs[i];
}
return result;
}
int main() {
int coefficients[] = {1, 0, 2, 0, 0, 0, 0, 0, 7};
int degree = sizeof(coefficients) / sizeof(coefficients[0]);
double value_at_x1 = horner(coefficients, degree, 1);
printf("P(1) = %.2lf\n", value_at_x1);
return 0;
}
```
秦九韶算法也称为霍纳法,它通过一次性计算多项式的值,避免了多次乘法运算,效率较高。
阅读全文