[数值分析]利用秦九韶算法求多项式的值

[数值分析]利用秦九韶算法求多项式的值

示例:例如求p(x) = x⁵ - 3 x⁴ + 4 x² - x + 1 ,当x=3时的值。
按秦九韶算法展开:则p(x)=(x(x(x(x-3)+4)-1)+1),则最里层为(x-3),对它的解释为最高项的系数与x的乘积加上次高项的系数,这个结果作为下一次循环的系数,即计算(x(x-3)+4)等于上次计算结果(x-3)与x的乘积x(x-3)加上次次高项(x(x-3)+4)的系数4。依次迭代,最终得出多项式的值。

  • 运行示例:

[数值分析]利用秦九韶算法求多项式的值_第1张图片

  • 源码:
//实现利用秦九韶算法求多项式的值
//示例:例如求p(x)=pow(x,5)-3*pow(x,4)+4*pow(x,2)-x+1 ,当x=3时的值
//按秦九韶算法展开:则p(x)=(x(x(x(x-3)+4)-1)+1)
#include
using namespace std;
int main(void)
{
     
	double item,x,coefficient;   //coefficient每项前的系数,x为自变量
	int up,i;   //up为最高次项的次数

	cout << "请输入自变量x的值:";
	cin >> x;

	cout << "请输入最高次项的次数:";
	cin >> up;

	cout << "请输入"<<up<<"次项的系数:";
	cin >> coefficient;

	//把item赋值为最里层最高次项的系数, 以便进入第一次循环时进行最里层第一项的计算,避免再次输入次高项系数时最高项系数被覆盖
	item = coefficient;

	//系数cofficient依次从次高项直至次数为0项依次输入
	for (i = up-1; i >= 0; i--) 
	{
     
		if (i == 0)
		 {
     
			cout << "请输入常数项的值:";
			cin >> coefficient;
		}
		else 
		{
     
			cout << "请输入" << i << "次项的系数:";
			cin >> coefficient;
		}

		//按秦九韶算法展开,最里面一项为最高次项的一次乘系数加上次高项的系数,往后依次迭代
		item = item * x + coefficient; 
	}

	cout << "\n所求多项式的值为:" << item << endl;

	return 0;
}

你可能感兴趣的:(#,数值分析,c++,数值分析,秦九韶算法,多项式,WHUT课程实验)