名称:牛顿迭代法
目的:求算术平方根(可以在复数域范围内求解,在此仅做实数范围)
核心思想:
概括的说,欲求A的平方根,先猜测一个值如A/2(或其他任何值),后由迭代公式计算。
直到小于某个已经给定的精度ε(Xn+1与Xn差的绝对值),即可认为该输出值是ε精度上的平方根。
迭代公式:Xn+1=(Xn+A/ Xn)/2
与算法的关系:运用到迭代的循环思想。
算法实现(C++):
#include<iostream>
using namespace std;
#define E 0.0001
int main(){
double A,X,lastX;
cin>>A;//求A的平方根
if(A>=0){
X=A/2;//上一次的根
lastX=X+1+E;//上上一次的根
while(X-lastX>E||lastX-X>E){
lastX=X;
X=(X+A/X)/2;//迭代公式
}
cout<<X;
}
else cout<<"GKD POSITIVE NUMBER NEEDED" ;
return 0;
}
完)