一、简介

牛顿迭代法(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;

}

java牛顿迭代法_Java牛顿迭代法相关推荐

  1. 二分法+牛顿迭代法+简化牛顿迭代法+牛顿下山法解方程的近似值

    1.二分法 //求方程 2*x*x*x-4*x*x+3*x-6 的根 /* 二分法*/ #include<stdio.h> #include<math.h> #define E ...

  2. R语言 牛顿-拉夫森迭代法求方程组

    牛顿-拉夫森迭代法: xk+1=xk−[f′(x)]−1f(x)x_{k+1}=x_{k}-{[f'(x)]^{-1}}f(x)xk+1​=xk​−[f′(x)]−1f(x) 其中,f′(x)f'(x ...

  3. 牛顿迭代法python_python 牛顿迭代法

    使用牛顿迭代法求方程 在x附近的一个实根. 赋值X,即迭代初值:用初值x代入方程中计算此时的f(x)=(a * x * x * x + b * x * x + c * x + d)和f'(x)=(3 ...

  4. 极坐标 c语言,牛顿 拉夫逊迭代法极坐标潮流计算C语言程序

    <牛顿 拉夫逊迭代法极坐标潮流计算C语言程序>由会员分享,可在线阅读,更多相关<牛顿 拉夫逊迭代法极坐标潮流计算C语言程序(31页珍藏版)>请在人人文库网上搜索. 1.*利用牛 ...

  5. java求解立方根_java 利用牛頓迭代法求平方根和立方根,不使用Math類

    最近遇到一個題目,就是不使用Math方法去求解一個數的立方根和平方根,搜索了好多,現在記錄下自己掌握的方法. 首先,在編碼之前,我們得熟悉 什么是牛頓迭代法.下面我為大家找了兩處鏈接.大家可以去看一下 ...

  6. Jacobi迭代法与Gauss-Seidel迭代法

    之前我在博客里介绍过牛顿-拉弗逊迭代法,对数据挖掘技术熟悉的同学应该还知道有梯度下降法(其实也是一种迭代算法).今天刚好有朋友和我讨论泊松图像融合算法,我说我过去文章里给出的是最原始.最直观的实现算法 ...

  7. matlab 高斯迭代法求解,高斯迭代法matlab算例

    Matlab 线性方程组的迭代解法 Gauss-Seidel 迭代法 Matlab 线性方程组的迭代解法 Gauss-Seidel 迭代法实验报告 1.熟悉 Gauss-Seidel 迭代法,并编写 ...

  8. 用java的io做一个代码计数器,如何制作Java页面计数器_java

    大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...

  9. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

最新文章

  1. 深度学习和目标检测系列教程 7-300:先进的目标检测Faster R-CNN架构
  2. jQuery中的视图样式和动画效果
  3. python-day1-03-格式化输出
  4. poj 1655 Balancing Act(求树的重心)
  5. CCF201403-1 相反数(解法三)(100分)(废除!!!)
  6. (转载)python re模块详解 正则表达式
  7. asp.net千奇百怪的日历
  8. oracle索引有哪些分类,Oracle中的索引分类
  9. 概率论与数理统计——Chapter0
  10. php图文编辑,ThinkPHP整合百度Ueditor编辑器的图文教程
  11. Cuteftp9.0安装说明书
  12. 百度ai开放平台体验
  13. MySQL 面试知识点 汇总
  14. Flutter由其他页面回到当前页面时监听并刷新当前页面的内容
  15. 应用程序无法正常启动(oxc000007b)
  16. oracle用升序索引去降序查询,Oracle工作札记
  17. 网易运营微专业_用户运营
  18. openresty出现socket read/write busy的原因及解决方法
  19. Hive的核心概念以及建库建表语句
  20. 写一个登录界面——用窗体界面实现

热门文章

  1. scrpy学习-02
  2. Kerberos双机备份方案
  3. 【毕业季|进击的技术er】作为一名职场人,精心总结的嵌入式学习路线图
  4. 如何准备算法工程师面试,斩获一线互联网公司机器学习岗offer?
  5. 因特网提供的基本服务的计算机,因特网能提供的最基本服务有哪些
  6. 移动端html5手写板,Vue利用canvas实现移动端手写板的方法
  7. 7款安全测试自动化工具推荐!
  8. CentOS7 无法使用yum命令,无法更新解决方法
  9. 网易面试Java开发凉凉经,面试官:基础不牢,技术不够深入,无缘offer,无缘网易......
  10. Linux应急模式这怎样处理,瑞星linux应急杀毒盘揭秘+制作