例:利用秦九韶算法求
p ( x ) = x 5 − 3 x 4 + 4 x 2 − x + 1 p(x)=x^{5}-3x^{4}+4x^{2}-x+1 p(x)=x5−3x4+4x2−x+1
当 x = 3 时的值。
解:上式按秦九韶算法展开得 p ( x ) = ( x ( x ( x ( x − 3 ) + 4 ) − 1 ) + 1 ) p(x)=(x(x(x(x-3)+4)-1)+1) p(x)=(x(x(x(x−3)+4)−1)+1),对它的解释为最高次项的系数与 x x x 的乘积加上次高项的系数,这个结果作为下一次循环的系数。例如 ( x ( x − 3 ) + 4 ) (x(x-3)+4) (x(x−3)+4) 等于上一次计算结果 ( x − 3 ) (x-3) (x−3) 与 x x x 的乘积 x ( x − 3 ) x(x-3) x(x−3) 加上次高项 ( x ( x − 3 ) + 4 ) (x(x-3)+4) (x(x−3)+4) 的系数 4。依次迭代,最终得出多项式的值。
运行示例:
程序源码:
#include <iostream>
using namespace std;
int main(void)
{
double x;
cout << "请输入自变量 x 的值:";
cin >> x;
int up;
cout << "请输入最高次项的次数:";
cin >> up;
double coefficient;
cout << "请输入 " << up << " 次项的系数:";
cin >> coefficient;
// 把 sum 赋值为最里层最高次项的系数, 以便进入第一次循环时进行最里层第一项的计算,避免再次输入次高项系数时最高项系数被覆盖
double sum = coefficient;
for (int i = up - 1; i >= 0; i--)
{
if (i == 0)
{
cout << "请输入常数项的值:";
cin >> coefficient;
}
else
{
cout << "请输入 " << i << " 次项的系数:";
cin >> coefficient;
}
// 按秦九韶算法展开,最里面一项为最高次项的一次乘系数加上次高项的系数,往后依次迭代
sum = sum * x + coefficient;
}
cout << "\n所求多项式的值为:" << sum << endl;
return 0;
}