Mathematics & Programme

返回主页<-

高精度求倒数

----翻译自 Mathematical Constants and computation  的

Computation of inverse and square root in high precision

此页的.DOC版本

 用我们已学过的除法, 算N位数的倒数可以在 O(n2)的时间里完成. 实际上, 用快速乘法可以在 O(nlog(n)) 的时间里完成, 这就要用到 Newton 叠代法.它有一次叠代式、二次叠代式、三次…….它们都可以用作高精度快速计算.

1.1 二次叠代式

1.2 多次叠代式

1.1  Newton's 叠代法

一个低精度的 x0≈1/A 用 Newton's 叠代法变换函数 f(x) = 1/x-A, 得到近似序列.
xn+1 = xn- f(xn)
f¢(xn)
= 2xn-Axn2.     (*)
每算一次上式, 可比前次多几乎一倍的精度. 因此, 算 n 位 1/A 只要反复约 logmn 次.

它的好处是只需进行乘法.

例如要计算 p 的倒数, 开始取近似值 x0 = 0.31831 (5 位).前三次叠代:

x1=2x0-px02 = 0.3183098861 (10 位)

x2=2x1-px12 = 0.31830988618379067151 (20 位)

x3=2x2-px22 = 0.3183098861837906715377675267450287240665 (40 位)

x3 前 38 位是正确的 1/p.

注意: 更好的二次叠代式如下:

hn=1-Axn

xn+1=xn+xnhn

除法 B/A 可以转为算 1/A 乘以 B.

{程序(包含对大整数的操作)}

1.2 多次叠代式

 三次:

    由Newton 叠代法得

xn+1 = xn- f(xn)
f¢(xn)
æ
ç
è
1+ f(xn)f¢¢(xn)
2f¢(xn)2
ö
÷
ø

于是: 

hn=1-Axn,   
xn+1=xn+xn(hn+hn2)

例: 算π的倒数

x0 = 0.31831 (5 位).

x1=0.3183098861837906715(523...), (19 位正确)

x2=0.3183098861837906715377675267450287240689...,(58 位正确)

x3 有 174 位正确.

四次叠代式:

hn=1-Axn ,         

xn+1=xn+xn(hn+hn2+hn3).


五次叠代式:

hn=1-Axn

xn+1=xn+xn( hn+hn2+hn3+hn4) = xn+xn( 1+hn2) ( hn+hn2)

r 次叠代式:

hn=1-Axn

xn+1=xn+xnPr-1(hn)

Pm(u)

=

m
å
k = 1 

akuk

ak

=

1.

例:

P3(u)=u+u2+u3,

P4(u)=u+u2+u3+u4 = (1+u2)(u+u2),

P5(u)=u+u2+u3+u4+u5 = u+(1+u)(u2+u4),

P6(u)=u+u2+u3+u4+u5+u6 = (1+u2+u4)(u+u2),

P7(u)=u+u2+u3+u4+u5+u3+u6 = u+(1+u3)(u2+u3+u4),

...

 

 

It is never too late to lean   活到老, 学到老.

Last update 04/09/2006

 

交流:  留言本 or xyy82148@163.com