牛顿迭代法求平方根
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<stdio.h>
#include<math.h>
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;
}