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