巴比伦平方根方法背后的数学
我读了计算任何数字的平方根的方法,算法如下:
double findSquareRoot(int n) { double x = n;
double y = 1;
double e = 0.00001;
while(x-y >= e) {
x = (x+y)/2;
y = n/x;
}
return x;
}
它如何计算平方根?我不了解其背后的数学原理。如何
x=(x+y)/2 and y=n/x
收敛到n的平方根。解释这个数学。该算法的复杂性是什么?
回答:
很容易看出您是否进行了一些运行并打印了x和y的连续值。例如100:
50.5 1.980198019801980226.24009900990099 3.8109612300726345
15.025530119986813 6.655339226067038
10.840434673026925 9.224722348894286
10.032578510960604 9.96752728032478
10.000052895642693 9.999947104637101
10.000000000139897 9.999999999860103
见,诀窍是,如果x
是
的平方根n
,那么它是高于或低于实际的根,并n/x
始终是在另一侧上。所以,如果你计算的中点x
,并n/x
会在一定程度上更接近真正的根。
关于复杂性,它实际上是无限的,因为真正的根永远都不会到达。这就是为什么要使用e
参数。
以上是 巴比伦平方根方法背后的数学 的全部内容, 来源链接: utcz.com/qa/430944.html