求平方根的迭代公式:x1 = 1/2 * (x0 + a/x0)
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
/* 注解:
a 为 所给数
x0 初始化为 a的平方根
a/2 为a的初值
算法:
迭代求出x1 ,此时与a的真正平方根误差较大
把新求出的x1 带入x0,从而再求出一个新的x1,经过不断迭代,此值将趋近于真正的平方根值
比较前后两次求得的平方根x0,x1,若差值小于指定值,即达到了要求精度,x1 为 a 的平方根
*/
double x1,x0,a;
cin>>a;
if(a < 0)
{
cout<<"error!"<<endl;
}else{
x0 = a/2;
x1 = 1.0/2 * (x0 + a/x0); // 1/2 结果为0, 应为1.0/2 = 0.5
// cout << x0 << " " << x1<<endl; debug
do{
x0 = x1;
x1 = 1.0/2 * (x0 + a/x0);
// cout << x0 << " " << x1<<endl; debug
}while(fabs(x0-x1) >= 1e-6);
printf("%f",x1);
return 0;
}
}