首页 > 编程语言 > 详细

数值计算中的优化算法

时间:2016-04-11 14:15:27      阅读:170      评论:0      收藏:0      [点我收藏+]

三人行必有我师焉     ——《论语·述而》

 

一、多项式计算的优化算法

假设技术分享  是一个多项式,求解该多项式的直接方法为计算Pn(x)中的每一项,然后求各项之和的到结果。

然而这种方法的效率并不高,因为它需要进行 n+(n-1)+(n-2)+…+1=n(n-1)/2 次乘法运算,而我们知道乘法运算的效率要远远小于加法运算,因此是否

存在一种更加高效的算法能够减少乘法运算的次数呢?由此引出下面的 “ Honor ‘s Rule ”。

技术分享

这种变化的计算策略被称作 Honor ‘s Rule ,它只需要进行n次加法运算和n次乘法运算即求得结果,大大降低了运算的时间复杂度。

如果假设我们已经知道了

技术分享 

那么有技术分享

由归纳法可以的得到下面的多项式计算算法

算法HONOR

输入: 多项式的常数项 A(n),A(n-1)…A(1),A(0) 以及底数 x

输出:多项式计算结果 Pn(x)

1. p=A(n)

2. for j =1 to n

3.       p=x*p+A(n-j)

4. end for

5. return p

 

二、指数计算中的优化算法

求解 y=x^n (n为整数),一般的直接计算需要n次乘法运算。

而一种更加有效的算法描述如下:

可令 m= [n/2] (这里的”[] ”表示取下整),假设我们知道如何计算 x^m

那么就有两种情况 : ① n为偶数,则 x^n=(x^m)^2

                           ② n为奇数,则 x^n= x* (x^m)^2

由此得出一种递归的求指数计算的算法:

算法 EXPREC

输入:实数x和非负整数n
输出:x^n

         power(x,n)

1. if m=0 then y=1

2. else

3.     y=power(x,[m/2])

4.     y=y^2

5.     if m is odd then y=xy

6. endif

7. return y

数值计算中的优化算法

原文:http://www.cnblogs.com/diligent-bird/p/5377997.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!