平方根:求 a 的平方根 \(x=\sqrt{a}\),相当于求 \(f(x)=x^2-a=0\) 的根。

立方根:求 a 的立方根 \(x=\sqrt[3]{a}\),相当于求 \(f(x)=x^3-a=0\) 的根。

迭代步骤:(实际上就是不停地作切线,直到切点和所求的根非常接近)

先选取一个迭代的初始值\(x_0\)

可以求出\(f(x)\)在\(x_0\)处的切线方程:\(y=f'(x_0)(x-x_0)+f(x_0)\)

该切线与x轴的交点为:\(x_1=x_0-\frac{f(x_0)}{f'(x_0)}\)

令\(x_0=x_1\),继续上述迭代过程,直到\(\lvert x_0-x_1\rvert\)小于阈值。

当\(f(x)=x^2-a\)时,\(x_1=x_0-\frac{x_0^2-a}{2x_0}=\frac{x_0}{2}+\frac{a}{2x_0}\)

当\(f(x)=x^3-a\)时,\(x_1=x_0-\frac{x_0^2-a}{2x_0}=\frac{2x_0}{3}+\frac{a}{3x_0^2}\)

根据以上步骤,取阈值\(10^{-5}\)作为迭代终止条件,Java 代码如下:

public class Test {

public static void main(String[] args) {

double x = 100;

System.out.println("平方根测试:");

System.out.println(new Solution().mySqrt(x));

System.out.println(Math.sqrt(x));

System.out.println("立方根测试:");

System.out.println(new Solution().mySqrt3(x));

System.out.println(Math.pow(x, 1.0 / 3));

}

}

class Solution {

// 平方根

public double mySqrt(double x) {

if (x == 0 || x == 1) return x;

double x_0 = 1.0, x_1 = x;

do {

x_0 = x_1;

x_1 = (x_0 + x / x_0) / 2;

} while (Math.abs(x_0 - x_1) > 1e-5);

return x_1;

}

// 立方根

public double mySqrt3(double x) {

if (x == 0 || x == 1) return x;

double x_0 = 1.0, x_1 = x;

do {

x_0 = x_1;

x_1 = (2 * x_0 + x / x_0 / x_0) / 3;

} while (Math.abs(x_0 - x_1) > 1e-5);

return x_1;

}

}

python牛顿法算立方根_使用牛顿法迭代求平方根与立方根相关推荐

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

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

  2. python数值分析算例_只要一杯秋天的奶茶,就能学会Python数值分析(2)

    只要一杯秋天的奶茶,就能学会Python数值分析(2) 上节(https://www.jianshu.com/p/671a94ce586b)说到高斯消元法,今天从高斯列主元消元法开始,拓展到线性方程组 ...

  3. python用牛顿迭代法求平方根_利用牛顿迭代法求平方根 - 业精于勤,荒于嬉;行成于思,毁于随! - OSCHINA - 中文开源技术交流社区...

    数理介绍,不喜欢数学的言下之意也就是绝大部分人可以略过了. 简单推导 假设f(x)是关于X的函数: 求出f(x)的一阶导,即斜率: 简化等式得到: 然后利用得到的最终式进行迭代运算直至求到一个比较精确 ...

  4. 牛顿迭代法求平方根、立方根

    牛顿迭代公式 平方根迭代公式:a(n+1)=( a(n) + num/a(n) )/2,a(0) 初始化为1: 立方根迭代公式:a(n+1)=( 2a(n) + num/( (a(n))^2 ) )/ ...

  5. python牛顿法求立方根_【华为机试】求解立方根(牛顿迭代法)

    先分享马同学的科普,深入浅出,很容易理解.https://www.matongxue.com/madocs/205.html 关于牛顿迭代法,除开理论部分,核心公式其实就一个. 题目描述 •计算一个数 ...

  6. python怎么算反三角函数_用Python计算三角函数之acos()方法的使用

    acos()方法返回x的反余弦值,以弧度表示. 语法 以下是acos()方法的语法: acos(x) 注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math的静态对象来调用这个 ...

  7. python怎么算积分_利用python求积分的实例

    利用python求积分的实例 python的numpy库集成了很多的函数.利用其中的函数可以很方便的解决一些数学问题.本篇介绍如何使用python的numpy来求解积分. 代码如下: # -*- co ...

  8. python怎么算反三角函数_用Python计算三角函数之atan()方法的使用

    Python 这篇文章主要介绍了python中使用xlrd.xlwt操作excel表格详解,python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写exce ...

  9. python加速度算位移_基于Labview的加速度两次积分求位移

    理论上讲,加速度的积分是速度,再积分便是位移.然而实际操作中这有很多不便,比如两次积分过程中,积分常量造成的线性漂移是很麻烦的.幸运的是,对于一些周期信号,比如有规律的振动信号,我们仍然是可以通过积分 ...

最新文章

  1. 安卓机更新系统会卡吗_iOS13.3系统值得更新吗?信号怎么样?续航改善了没有?...
  2. 10.16 多校联测
  3. BZOJ1061: [Noi2008]志愿者招募
  4. 创建yum存储库;文件目录下存RPM包,不挂载镜像,不使用外网yum源;
  5. java jnlp_java – 调试JNLP启动应用程序
  6. 记一次Jquery获取值的典型错误
  7. [ASP.NET]动态页面调用JS错误。保存为HTML文件就不报错了。
  8. Unity3D之Material(材质、着色器、纹理)
  9. 你写过哪些原创的风骨傲气,热血沸腾的句子?
  10. Project Euler 628: Open chess positions(公式)
  11. javac 命令的作用_机加工行业MES系统在生产调度中的重要作用
  12. 鸿蒙升级最佳时间,鸿蒙升级时间确定,17款华为优先,荣耀或成遗珠!
  13. cad2014卡顿的解决方法_cad卡顿解决办法(cad卡顿怎么解决)
  14. 使用frps建立内网穿透从而实现外界连接内网电脑的全教程
  15. P1598垂直柱状图
  16. 爱优芒角逐“剧场风”,腾讯为何“按兵不动”
  17. 超级全面-深拷贝与浅拷贝的实现方式
  18. 用互联网对接传统行业,改良还是颠覆?
  19. 模块化封装和组件化封装
  20. 免激活Vista并合法使用1年的方法

热门文章

  1. 计算机系统与用户的交互界面是,人机交互与人机界面基础知识对比分析
  2. MacOS Big Sur 如何安装创新SBX-Fi Surround 5.1Pro(USB外置)声卡?
  3. N01web网页设计实例作大作业(div+css) ——中国茶文化(6页) 茶文化网页制作作业_中国化(网页设计...
  4. cad工具箱详细讲解_筑龙网CAD工具箱使用说明
  5. Build Metal-based Core Image kernels with Xcode
  6. WIN10电脑热点无法共享
  7. labelimg标注yolo格式Bug
  8. intellIj idea修改英文字体解决大写的“I”和小写的“l”显示冲突问题
  9. 鸟哥的Linux私房菜(基础篇)中涉及的所有网址
  10. Android 和 iOS 实现录屏推流的方案整理