牛顿迭代法求平方根

牛顿迭代法求平方根

1.假设要求6的平方根,当Xn和X(n+1)的差值小于0.000001时,可以认为已经找到了精确值。

2.根据牛顿迭代法的步骤,首先猜测一个值X1,猜测X1=6/2=3。

3.将X1=3代入公式X(n+1)=(Xn+a/Xn)/2,则X2=(X1+6/X1)/2=(3+6/3)/2=2.5,由于3和2.5的差大于0.000001,需要继续计算。

4.将X2=2.5代入公式X(n+1)=(Xn+a/Xn)/2,则X3=(X2+6/X2)/2=(2.5+6/2.5)/2=2.45,由于2.5-2.45=0.5>0.000001,故需要继续计算。

...

代码

#include
#include

double my_sqrt(double a)
{
    double x0=a/2;
    double x1=(x0+a/x0)/2;
    while(fabs(x0-x1)>0.000001)
    {
        x0=x1;
        x1=(x0+a/x0)/2;
    }
    return x1;
}


int main()
{
    double a=0.0,x=0.0;
    scanf("%lf",&a);//双精度lf
    x=my_sqrt(a);
    printf("%lf",x);
    return 0;
   
}

你可能感兴趣的:(C语言学习,几何学,算法,c语言,c++,数据结构)