java牛顿迭代法_Java牛顿迭代法

一、简介

牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。

多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数

3c6d55fbb2fb4316f767debd2ca4462308f7d3f9.jpg

的泰勒级数的前面几项来寻找方程

f31fbe096b63f624c49a80c48b44ebf81b4ca336.jpg 的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程 

f31fbe096b63f624c49a80c48b44ebf81b4ca336.jpg的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。另外该方法广泛用于计算机编程中。

二、牛顿迭代公式

08118fc943a9131c7519b09280201bb2.png

1617f3fa71e93b5197f9520b94538dd2.png

三、代码实现

我们现在先求平方根: 设函数 f(x) = x^2 - a  ,那么求 a 的平方根等价于求 f(x) = 0 , 由牛顿迭代公式有:

x = x0 - f(x0)/f `(x0)                           ( f `(x) 为函数 f(x)  的一阶导数 f `(x) != 0)

进行迭代:

x1 = x0 -f(x0)/f `(x0)

x2 = x1 - f(x1)/f `(x1)

x3 = x2 - f(x2)/f `(x2)

......

xk+1 = xk - f(xk)/f `(xk)  (k = 0,1,2,3......)

同样道理,求立方根时 我们设函数 f(x) = x^3 - a,  那么求  a  的立方根等价于求 f(x) = 0

48304ba5e6f9fe08f3fa1abda7d326ab.png

//迭代法求立方根

public double getCube(double input){

double x = 1;

double x1 = x - (x*x*x - input) / (3*x*x);

while(x - x1 >0.000000001 || x - x1 < -0.000000001){ //判断精度

x = x1;

x1 = x - (x*x*x - input) / (3*x*x);

}

return x1;

}

//迭代法求平方根

public double getSqrt(double input){

double x = 1;

double x1 = x - (x*x - input)/(2*x);

while(x - x1 > 0.00000001 || x - x1 < -0.00000001){

x = x1;

x1 = x - (x*x - input)/(2*x);

}

return x1;

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值