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

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[计算机数值分析]利用秦九韶算法求多项式的值相关的知识,希望对你有一定的参考价值。

问题描述

例:求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。依次迭代,最终得出多项式的值。

运行示例

源码

//实现利用秦九韶算法求多项式的值
//示例:例如求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<iostream>
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;

以上是关于[计算机数值分析]利用秦九韶算法求多项式的值的主要内容,如果未能解决你的问题,请参考以下文章

秦九韶算法知识点

多项式计算之秦九韶算法

多项式求值的秦九韶算法 python

武理四年课程实验导航

算法的时间复杂度比较,计算多项式的直接法和秦九韶法

霍纳法则