用牛顿迭代法求输入的数的平方根

前言:

  欲求a的平方根,首先猜测一个值x1=a/2(也可以是随便什么其他值)作为其平方根,然后根据下面的迭代公式算出x2,再将x2代入公式右边算出x3……直到连续两 次算出的xn和xn+1的差的绝对值小于某个值ε,即认为找到了足够精确的平方根。这 个ε值取得越小,计算出来的平方根就越精确。

  迭代公式: xn+1 = (xn + a / xn ) / 2

程序实现:

  

#include <iostream>
using namespace std;
double EPS = 0.001; //用以控制计算精度
int main(){
    double a;
    cin >> a ; //输入a,要求a的平方根
    if( a >= 0) {
        double x = a/2, lastX = x + 1 + EPS;//确保能够进行至少一次迭代
        while( x - lastX > EPS || lastX - x > EPS){ //只要精度未达要求,
                                                                      //就继续迭代
                lastX = x;
                x = (x + a/x)/2;
        }
        cout << x;
    }
    else
        cout << "It can't be nagitive.";
return 0;
}

猜你喜欢

转载自www.cnblogs.com/parzulpan/p/10325034.html