数值计算中的优化算法

 

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

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

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

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

image

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

如果假设我们已经知道了

image 

那么有image

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

算法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

posted @ 2016-04-11 13:30  勤奋的笨鸟  阅读(1064)  评论(0)    收藏  举报