public static double sqrt(double c)
{
if(c<0) return -1;
double err = 1e-15;
double t = c;
while(Math.abs(t-c/t)>err*t)
t=(t+c/t)/2.0;
return t
}
原理解释:
先假设t为c的平方根,x1=t,再利用公式x(n)=(x(n-1)+c/x(n-1))/2,然后不断迭代求x(n)的值,直到x(n+1)-x(n)的差值小于err为止。
比如求6的平方根,此时t=c=6,x1=6,运用公式迭代求得x2=3.5,x3=4.35,x4=2.86,...x(n)=2.45
来源:CSDN
作者:qq_36669347
链接:https://blog.csdn.net/qq_36669347/article/details/104214076