我以前想到的方法
以前我想到的一种方式是二分法;
假设求根号 2 的平方根;
假设最开始 min = 1.0,max = 2.0;
则它们的中间值 val = (min+max)/2.0;
然后判断 num = val*val 的结果,
如果 num > 2;则 max = val;
如果 num < 2;则 min = val;
如果 num = 2;则算术平方根是 val,返回。
当然有人会问,一直不等于能,当然我们可以设置计算次数;
比如执行超过 20 次后就返回,这样可以避免无线循环下去。
然而这种方法的收敛速度实在太慢,导致要计算很多次才能达到比较高的精度。
牛顿的方法
网上看到一个说是牛顿的计算方法,假设 f(x) = x^2-2;
在 x^2-2 的曲线上面,先找一个点 A(X0,Y0),
过点 A 做曲线的切线交 x 轴于 B(X1,0);
找到当前点 B 对应曲线上的点 C(X1,Y1);
过点 C 做曲线的切线交 x 轴于 D(X2,0);
找到当前点 D 对应曲线上的点 E(X2,Y2);
过点 E 做曲线的切线交 x 轴于 F(X3,0);
……
按照这个过程一直下去,B D F……将会离曲线与 x 轴的交点越来越近,即逼近原理。