您的位置:首页 > 其它

求平方根的方法(牛顿迭代法和二分法)

2013-09-17 11:00 239 查看
#include <iostream>

#include <cstdlib>

#include <cmath>

using namespace std;

double _sqrt(double val, double x)          //牛顿迭代法

{

    if(abs(x*x - val) < 0.00001){return x;}

    else{

        x = (x + val/x)/2;

        return _sqrt(val, x);

    }

}

double sqrt_Rec(double val)

{

    return _sqrt(val, 1.0);

}

double sqrt_2(double val)        //二分法

{

    double left = 0;

    double right = val > 1.0?val: 1.0;

    double mid = (left + right)/2;

    while(abs(mid*mid - val) > 0.00001){

        if( mid*mid - val > 0){

            right = mid;

        }else{

            left = mid;

        }

        mid = (left + right)/2;

    }

    return mid;

}

int main()

{

    double num;

    while(cin >> num){

        cout << sqrt_2(num) << endl;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: