深入理解多项式求值的原理和意义

                                     多项式求值的原理和意义

摘要:多项式是由多个单项(符号项如:5x或者常数项4)通过四则运算组合起来的式子,如P(x)=2x^4+3x^3-3x^2+5x-1  

一般的求解会将特定的x代入到上式中,一个一个的计算,共需要花费10次的乘法和4次加法运算,但是我们可以通过霍纳方法对多项式进行组合计算,在需要每秒对多个不同输入的x多次计算多项式对应的值时,该方法可以极大的提高计算效率。

原理:采用霍纳方法对上式进行分解步骤如下:

            P(x) = -1+x(5-3x+3x^2+2x^3)

               = -1+x(5+x(-3+3x+2x^2))

               = -1+x(5+x(-3+x(3+2x)))

               = -1+x*(5+x*(-3+x*(3+2*x)))                 (1)

这里的多项式是从低阶向高阶项分解,关于x的幂次被分解为余下的多项式的乘积,然后可以从括号内层向外层进行求值计算。

算法实现:本文采用递归方式求解多项式,其中向量a 存储的是从低次到高次多项式的常数项值,x为变量,n为多项式的次数,最开始为0

template < class T>
inline T Algorithm::polynomial(vector<T > a, T x, int n)  //可定义模板类和模板函数               //多项式相加
{
	if (n < a.size() - 1)
	{
		return a[n] + polynomial(a, x, n + 1)*x;
	}
	else
	{
		return a[n];  //递归终止条件:当n等于最大值的前个数是,递归截止
	}
}

main.cpp

void main()
{
Algorithm testPloy;
vector<double> a;
double t;
cin >> t;
while (t)
{
	a.push_back(t);
	cin >> t;
}
cout<<testPloy.polynomial(a, 0.5, 0);
	cout << endl;
	system("pause");
}

测试结果:


总结:

通过对多项式求值的计算,让我更深刻的理解到在计算领域计算效率往往可以从最基础的理论找到突破点,结果却会产生巨大的效果。

其中,多项式求值的原理和应用体现了科学计算方法的最重要的特征:

(1)计算机在做简单计算的时候速度很快;

(2)由于简单计算可能会被进行多次,尽可能有效地进行简单计算,可以大大提高计算的效率;

最后,在对多项式求值理论进行研究后,我们将其推广到更一般的形式,以适应更多实际的应用:

f(x)=c1+(x-r1)(c2+(x-r2)(c3+(x-r3)(c4+(x-r4)(c5))))

其中,r1,r2,r3,r4表示基点,当r1,r2,r3,r4为0时,则就是上式(1)中的特殊形式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值