public class Sqrt
{
public static void main(String[] args)
{
double c = Double.parseDouble(args[0]);
double EPSILON = 1e-15;
double t = c;
while (Math.abs(t - c/ t) > EPSILON * t)
{
t = (c/t + t) / 2.0;
}
System.out.println(t);
}
}
这段程序的计算方法是4000年前巴比伦人所提出的迭代计算方法。这种算法也是17世纪Isaac Newton 和 Joseph Raphson 开发的通用求平方根方法的特殊形式,因此也称为牛顿法。 在一般情况下,牛顿法可以用于求解给定函数的根,即值为0时,的值。对于某个估计点,通过在点处绘制与曲线相切的线,并将该切线与轴的交点记为,就是新的估计值。从最初的估计值开始,不断迭代这个过程,就会越来越接近函数的根。