平方根公式
算法描述:
设x=sqrt(a), 设初值为x[0],则迭代公式为
x[n+1]=(x[n]+a/x[n])/2
由此公式产生序列x[1],x[2],x[3],...将逐渐接近a的平方根。
设迭代结束条件为: fabs((x[n+1]-x[n])/x[n+1]) <1.0e-10
程序运行结果如下:
输入:
2
输出:
1.41421
分析:用题目中给的公式,进行计算……看懂题目很重要==(语文不好的我路过--)需要注意一点最后输出的数值是x[i]还是x[i-1];自己想一下为什么。
#include<iOStream>
#include<cmath>
using namespace std;
int main(){
double a,x[10000];
cin>>a;
int i=0;
x[i]=a;
x[i+1]=(x[i]+a/x[i])/2;
while (fabs((x[i+1]-x[i])/x[i+1])>=1.0e-10){
i++;
x[i+1]=(x[i]+a/x[i])/2;
}
cout<<x[i];
return 0;
}