霍纳法则求解一个多项式在一个给定点的值,给出详细的c++代码
时间: 2024-10-27 17:11:36 浏览: 34
horner:使用霍纳法则评估多项式
霍纳法则(Horner's Rule),也被称为霍纳方法,是一种高效的多项式数值计算方法,用于快速求解一次或更高阶多项式的值。它的基本思想是通过连续相乘和加法而不是逐项乘开和求和,减少了运算次数,提高了效率。
以下是使用C++实现霍纳法则求解一元多项式`P(x) = a_n*x^n + a_{n-1}*x^{n-1} + ... + a_0`在给定点`x`的值的示例:
```cpp
#include <iostream>
#include <vector>
// 定义多项式的函数模板
template<int n>
double horner_rule(const std::vector<double>& coefficients, double x) {
double result = coefficients[n - 1]; // 初始化为最高次项
for (int i = n - 2; i >= 0; --i) { // 从高次到低次迭代
result = x * result + coefficients[i];
}
return result;
}
int main() {
std::vector<double> polynomial_coefficients = {1, 2, 3, 4}; // 假设多项式系数为1x^3 + 2x^2 + 3x + 4
double evaluation_point = 5.0; // 要计算的点
double polynomial_value = horner_rule(polynomial_coefficients.size(), polynomial_coefficients, evaluation_point);
std::cout << "The value of the polynomial at x=" << evaluation_point << " is: " << polynomial_value << std::endl;
return 0;
}
```
在这个代码中,我们首先将最高次项作为结果,然后依次乘以当前点`x`并加上更低次的系数,直到所有项都处理完毕。这样就避免了直接展开多项式并求和。
阅读全文