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;
}
---------------------
作者:luzi_这个人有点意思
来源:CSDN
原文:https://blog.csdn.net/qq_34528297/article/details/70327734
Java实现牛顿迭代法求解平方根、立方根的更多相关文章
- 141. Sqrt(x)【牛顿迭代法求平方根 by java】
Description Implement int sqrt(int x). Compute and return the square root of x. Example sqrt(3) = 1 ...
- C语言之基本算法11—牛顿迭代法求平方根
//迭代法 /* ================================================================== 题目:牛顿迭代法求a的平方根!迭代公式:Xn+1 ...
- sqrt()平方根计算函数的实现2——牛顿迭代法
牛顿迭代法: 牛顿迭代法又称为牛顿-拉夫逊方法,它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法.多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特 ...
- 牛顿迭代法解指数方程(aX + e^x解 = b )
高中好友突然问我一道这样的问题,似乎是因为他们专业要做一个计算器,其中的一道习题是要求计算器实现这样的功能. 整理一下要求:解aX + e^X = b 方程.解方程精度要求0.01,给定方程只有一解, ...
- C语言之基本算法25—牛顿迭代法求方程近似根
//牛顿迭代法! /* ============================================================ 题目:用牛顿迭代法求解3*x*x*x-2*x*x-16 ...
- 华为OJ1964-求解立方根(牛顿迭代法)
一.题目描述 描述: 计算一个数字的立方根,不使用库函数. 函数原型double getCubeRoot(double input) 输入: 待求解参数 double类型 输出: 输出参数的立方根,保 ...
- 牛顿迭代法的理解与应用( x 的平方根)
题目来源与LeetCode算法题中的第69题,具体内容如下(点击查看原题): 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只 ...
- NOIP2001 一元三次方程求解[导数+牛顿迭代法]
题目描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差 ...
- 【Java例题】4.4使用牛顿迭代法求方程的解
4. 使用牛顿迭代法求方程的解:x^3-2x-5=0区间为[2,3]这里的"^"表示乘方. package chapter4; public class demo4 { publi ...
随机推荐
- ASP.NET 里身份验证安全相关配置
安全相关的 <authorization > <allow verbs = "" users = "" roles = "" ...
- java的递归异常—一个异常可能由另一个异常触发
关键字: Caused by nested exception java.lang.reflect.InvocationTargetException: null at sun.reflect.Nat ...
- 通俗的讲,就是高层模块定义接口,低层模块负责实现。 Bob Martins对DIP的定义: 高层模块不应依赖于低层模块,两者应该依赖于抽象。 抽象不不应该依赖于实现,实现应该依赖于抽象。
通俗的讲,就是高层模块定义接口,低层模块负责实现. Bob Martins对DIP的定义: 高层模块不应依赖于低层模块,两者应该依赖于抽象. 抽象不不应该依赖于实现,实现应该依赖于抽象. 总结出使用D ...
- Gtksharp编译时提示下载gtk文件问题
Gtksharp编译时提示下载gtk文件问题 1.昨天晚上新建gtksharp项目之后,安装gtksharp之后,编译时无法成功,提示无法下载gtk-3.24.zip 2.记得前几天,另一个项目可以生 ...
- WPF通过不透明蒙板切割显示子控件
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/Backspace110/article/ ...
- Linux查看日志常用命令(转载)
转自: https://www.cnblogs.com/kbkiss/p/7567725.html -------------------------------------------------- ...
- 一行 Python
很多人学Python,除了它功能强大,简单易学外,代码行数少.语法简洁也是很吸引人的地方.那么,Python的语法到底有多简洁呢?一行Python代码,能实现什么丧心病狂的功能呢? 1.一行代码,实现 ...
- PHP 类/对象函数
PHP类/对象函数是PHP核心的一部分,无需要安装就可以使用. 函数名称 描述 __autoload 尝试加载未定义的类 class_alias 为一个类创建别名 class_exists 检查类是否 ...
- CentOS7 安装FastDFS单机版
1. 下载 FastDFS https://github.com/happyfish100/fastdfs/releases libfastcommon https://github.com/happ ...
- [PHP] substr占用内存谨慎使用
在下面的场景中使用substr的时候, 有时候会报超出内存fatal error ,当curl读取的内容过大的时候 $header_size = curl_getinfo($curl_handle, ...