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.
{程序(包含对大整数的操作)}
三次:
由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)
例:
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),
...
|