用迭代法求x=sqrt(a),求平方根的迭代公式为:
Xn+1=1/2(Xn+a/Xn),
要求前后两次求出的x的差的绝对值小于
1e-5.
直接给出代码:
#include<stdio.h>
#include<math.h>
#define a 5//求x=sqrt(5);
int main()
{
int i=0;
double X1=1,X2;//相当于Xn与Xn+1
do
{
X1=(1.0/2)*(X1+a/X1);
X2=(1.0/2)*(X1+a/X1);
printf("第%d次迭代 x1=%9.6f\tx2=%9.6f\n",++i,X1,X2);
}while (fabs(X2-X1)>=1e-5);
printf("\n迭代结果:x=%9.6f\t共迭代:%d次\n",X2,i);
printf("\nsqrt(%d)=%9.6f\n\n",a,sqrt(a));
return 0;
}
下面给出测试结果:
版权声明:本文为wtdm_160604原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。