牛顿迭代法求根

时间:2023-01-07 22:01:14

1. 牛顿迭代法 - 切线是曲线的线性逼近

曲线 f(x) 上随机选择一点(Xn,f(Xn)) ,求出切线方程;  切线方程与x轴相交的点作为Xn+1进行下一轮循环;直到Xn+1 无限逼近  f(x)=0; 得到根。

根据上述可得:

切线   y-f(Xn) = f ' (Xn) (x -Xn);    ->  当 y=0 时,x =Xn+1 ;   Xn+1 = Xn - f(Xn)/ f ' (Xn);


应用到 求根方程中 :

f(x) = x^2 - n;

那么  Xn+1 = Xn - (Xn^2-n)/2Xn ;


2. java实现代码

public static double sqrt( double n) {

if (n < 0) return  Double.NaN;

int  x = n; // 设置 起始 Xn

        int err = 1e-15 ; // 设置 误差范围

while( (x - n/x) > err) {

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

        }

return x;

}