牛顿迭代法求平方根

来源:互联网 发布:淘宝设计属于什么行业 编辑:程序博客网 时间:2024/05/17 02:59

部分转自http://www.jianshu.com/p/f1d4a1a8efd2

牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。另外该方法广泛用于计算机编程中。


首先取x0,如果x0不是解,做一个经过(x0,f(x0))这个点的切线,与x轴的交点为x1。
同样的道理,如果x1不是解,做一个经过(x1,f(x1))这个点的切线,与x轴的交点为x2。
以此类推。
以这样的方式得到的xi会无限趋近于f(x)=0的解。



int mySqrt(int x) {        if (x <= 1) return x;        double x1 = 0, x2 = 1;        while (Math.abs(x1 - x2) > 0.000001)         {            x1 = x2;            x2 = x1 / 2 + (double)x / (2 * x1);        }        return (int)x1;}


原创粉丝点击