java牛顿迭代法_Java牛顿迭代法
一、简介
牛顿迭代法(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.二分法 //求方程 2*x*x*x-4*x*x+3*x-6 的根 /* 二分法*/ #include<stdio.h> #include<math.h> #define E ...
- 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 ...
- 牛顿迭代法python_python 牛顿迭代法
使用牛顿迭代法求方程 在x附近的一个实根. 赋值X,即迭代初值:用初值x代入方程中计算此时的f(x)=(a * x * x * x + b * x * x + c * x + d)和f'(x)=(3 ...
- 极坐标 c语言,牛顿 拉夫逊迭代法极坐标潮流计算C语言程序
<牛顿 拉夫逊迭代法极坐标潮流计算C语言程序>由会员分享,可在线阅读,更多相关<牛顿 拉夫逊迭代法极坐标潮流计算C语言程序(31页珍藏版)>请在人人文库网上搜索. 1.*利用牛 ...
- java求解立方根_java 利用牛頓迭代法求平方根和立方根,不使用Math類
最近遇到一個題目,就是不使用Math方法去求解一個數的立方根和平方根,搜索了好多,現在記錄下自己掌握的方法. 首先,在編碼之前,我們得熟悉 什么是牛頓迭代法.下面我為大家找了兩處鏈接.大家可以去看一下 ...
- Jacobi迭代法与Gauss-Seidel迭代法
之前我在博客里介绍过牛顿-拉弗逊迭代法,对数据挖掘技术熟悉的同学应该还知道有梯度下降法(其实也是一种迭代算法).今天刚好有朋友和我讨论泊松图像融合算法,我说我过去文章里给出的是最原始.最直观的实现算法 ...
- matlab 高斯迭代法求解,高斯迭代法matlab算例
Matlab 线性方程组的迭代解法 Gauss-Seidel 迭代法 Matlab 线性方程组的迭代解法 Gauss-Seidel 迭代法实验报告 1.熟悉 Gauss-Seidel 迭代法,并编写 ...
- 用java的io做一个代码计数器,如何制作Java页面计数器_java
大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...
- 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目
课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...
最新文章
- 深度学习和目标检测系列教程 7-300:先进的目标检测Faster R-CNN架构
- jQuery中的视图样式和动画效果
- python-day1-03-格式化输出
- poj 1655 Balancing Act(求树的重心)
- CCF201403-1 相反数(解法三)(100分)(废除!!!)
- (转载)python re模块详解 正则表达式
- asp.net千奇百怪的日历
- oracle索引有哪些分类,Oracle中的索引分类
- 概率论与数理统计——Chapter0
- php图文编辑,ThinkPHP整合百度Ueditor编辑器的图文教程
- Cuteftp9.0安装说明书
- 百度ai开放平台体验
- MySQL 面试知识点 汇总
- Flutter由其他页面回到当前页面时监听并刷新当前页面的内容
- 应用程序无法正常启动(oxc000007b)
- oracle用升序索引去降序查询,Oracle工作札记
- 网易运营微专业_用户运营
- openresty出现socket read/write busy的原因及解决方法
- Hive的核心概念以及建库建表语句
- 写一个登录界面——用窗体界面实现
热门文章
- scrpy学习-02
- Kerberos双机备份方案
- 【毕业季|进击的技术er】作为一名职场人,精心总结的嵌入式学习路线图
- 如何准备算法工程师面试,斩获一线互联网公司机器学习岗offer?
- 因特网提供的基本服务的计算机,因特网能提供的最基本服务有哪些
- 移动端html5手写板,Vue利用canvas实现移动端手写板的方法
- 7款安全测试自动化工具推荐!
- CentOS7 无法使用yum命令,无法更新解决方法
- 网易面试Java开发凉凉经,面试官:基础不牢,技术不够深入,无缘offer,无缘网易......
- Linux应急模式这怎样处理,瑞星linux应急杀毒盘揭秘+制作