算术平方根算法

2024-11-22 17:20:06
推荐回答(4个)
回答1:

牛顿迭代法求根号a:
(1)令
x1
=
a
(2)令
x2
=
(x1+
a/x1
)/2
(3)令
x1
=
x2
(4)若
x1
足够接近
根号a,

输出x1,
否则回到(2)
这样经过若干次迭代之后,x1就会十分逼近根号a了
比如说根号2:
x1
=
(2
+
2/2)/2
=
1.5
x1
=
(1.5
+
2
/
1.5)
/2
=
1.41666
x1
=
(1.41666
+
2
/
1.41666)
/2
=
1.414215
可见3步之后x1就十分接近根号2了

回答2:

算术平方根计算中的迷惑点

回答3:

回答4:

1.从个位起向左每隔两位为一节,若带有小数从小数点起向右每隔两位一节,用“,”号将各节分开;
2.求不大于左边第一节数的完全平方数,为“商”;
3.从左边第一节数里减去求得的商,在它们的差的右边写上第二节数作为第一个余数;
4.把商乘以20,试除第一个余数,所得的最大整数作试商(如果这个最大整数大于或等于10,就用9或8作试商);
5.用商乘以20加上试商再乘以试商。如果所得的积小于或等于余数,就把这个试商写在商后面,作为新商;如果所得的积大于余数,就把试商逐次减小再试,直到积小于或等于余数为止;
6.用同样的方法,继续求。
这种办法ms更适用于人+计算器,单用计算机做很繁琐。

后来请教Fish大牛,发现有更好的办法——逼近法:
要求sqrt(m),则设x^2-m=f(x),根据牛顿逼近法求f(x)=0的根。
参考资料:http://www.blogboy.net/user1/2218/archives/2005/18026.html

例子:
1. 4 1 4
----------
√2.00 00 00
1
----
24|1 00
| 96
-------
281| 4 00
| 2 81
--------
2824|1 19 00
|1 12 96
----------
......

其中24=1*20+4,281=14*20+1,2824=141*20+4
是以小数点为分界.每两位数为一记数点