来看一下大数的计算。n=9 1674 8676 9200 3915 8098 6609 2758 5380 1624 8310 6680 1443 0862 2407 1265 1642 7934 6570 4086 7096 5932 7920 5767 4808 0679 0022 7830 1635 4924 8523 8033 5745 3169 3511 1903 5965 7754 7340 0756 8168 8305 6208 2101 6129 1328 4556 4805 7801 5880 6771。
这是一个201位的10进制整数。现在要求它的23次方根。设根为x。仍然用牛顿下山法。
x ** 23 = n
y= x ** 23 -n
y’= 23 * x **22
迭代式为:
x = x- x/23+ n/(23*x**22)
先估计x的初值,n近似为9.16 * 10**200。
print 200/23;
8
print 200-8*23;
16
print (9.16**(1.0/23) *10.0**(16.0/23));
5.463535
x的初值为8(+1)位数,有效数字为5.463535。简便起见, 取整为
x = 5 0000 0000
func mu23(x) {
t=x;
t*=t;
t*=t; t*=x;
t*=t; t*=x;
t*=t; t*=x;
return t;
}
func new(x, a) {return x-x/23+a*x/mu23(x)/23;}
x= 500000000;
print x;
5 0000 0000
for(i=0; i<10; i++) print x=new(x,n);
6 4544 0115
6 1798 5205
5 9269 7549
5 7089 2637
5 5511 4472
5 4773 2592
5 4640 9383
5 4637 2918
5 4637 2891
5 4637 2891
求得这个数的23次方根为5 4637 2891。