一、简介

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

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

泰勒级数的前面几项来寻找方程  的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程 的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。另外该方法广泛用于计算机编程中。

二、牛顿迭代公式

三、代码实现

我们现在先求平方根: 设函数 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

//迭代法求立方根
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;
}

---------------------
作者:luzi_这个人有点意思
来源:CSDN
原文:https://blog.csdn.net/qq_34528297/article/details/70327734

最新文章

  1. 苹果mac电脑中brew的安装使用及卸载详细教程
  2. css3选择器总结
  3. Objective-C 中的类和对象
  4. OpenFileDialog获取文件名和文件路径问题
  5. SpringMVC学习系列(9) 之 实现注解式权限验证
  6. 分享9款极具创意的HTML5/CSS3进度条动画
  7. leetcode@ [318] Maximum Product of Word Lengths (Bit Manipulations)
  8. 深入prototype源码之--Class
  9. python和django的一些小技巧(locals()...)
  10. For each db / table
  11. More lumber is required
  12. Intel hex 文件格式解密
  13. 使用Android平板编程,执行linux命令
  14. linux设置虚拟内存(swap)解决mysql因内存不足挂掉的故障
  15. foreach_and_函数
  16. Mail.Ru Cup 2018 Round 3 B. Divide Candies
  17. C. Songs Compression(简单贪心)
  18. .Net高级进阶,教你如何构建企业模型数据拦截层,动态控制字段验证
  19. 重建索引解决mssql表查询超时的问题
  20. 自学Linux Shell11.4-重定向输入输出

热门文章

  1. LeetCode 1291. Sequential Digits
  2. WPF,ComboBox,取汉字首字母,extBoxBase.TextChanged
  3. JQ动态生成节点绑定事件无效问题
  4. LeetCode——Nth Highest Salary
  5. Django 中使用 js 操作 cookies
  6. 使用python实现后台系统的JWT认证
  7. 3-8 pivot操作
  8. Linux 配置Java环境
  9. JS高阶---变量与函数提升
  10. Flask框架整理及配置文件