牛顿迭代法求解平方根

 

迭代简介

迭代,是一种数值方法,具体指从一个初始值,一步步地通过迭代过程,逐步逼近真实值的方法。
与之相对的是直接法,也就是通过构建解析解,一步求出问题的方法。

通常情况下,我们总是喜欢一步得到问题的结果,因此直接法总是优先考虑的。
但是,当遇到复杂的问题时,特别在未知量很多,方程非线性时,无法得到直接解法(例如五次方程并没有解析解)。
这时候,我们需要使用迭代算法,一步步逼近,得到问题的答案。

牛顿迭代法

牛顿迭代法简介

牛顿迭代法,求解如下问题的根x

 

f(x)=0

 

求解方法如下:

 

 

 

方法中,迭代变量是根x ,迭代关系式如上,迭代终止条件是:

                             

 

牛顿迭代法需要满足的条件是:
f(x) 是连续的,并且待求的零点x 是孤立的。
那么,在零点x 周围存在一个区域,只要初始值x0 位于这个邻域内,那么牛顿法必然收敛。
并且,如果f(x) 不为0,那么牛顿法将具有平方收敛的特性,也就是,每迭代一次,其结果的有效倍数将增加一倍。

简单推导

这里写图片描述

 

 

#include"iostream"
#include"map"
#include"cmath"
#include"string"
using namespace std;

int sortt( int x){
    double t = 1.0;
    while(fabs(t * t - x) > 1e-6){
        t = (t + x / t) / 2;
    }
    return t;
}

int main(){
    int x;
    while(cin>>x){
        cout<<sortt(x)<<endl;
    }
    return 0;
} 

 

 
本文转自:http://blog.csdn.net/young_gy/article/details/45766433
posted @ 2017-03-13 16:59  Hutonm  阅读(500)  评论(0编辑  收藏  举报