【学习笔记】牛顿迭代法求立方根

简介

介绍使用牛顿迭代法求立方根x3{\sqrt[3]{x}}3x​的C语言实现和公式的推导。

代码

float CubeRoot(float num)
{float x = num;float error = 1e-5;while (fabs(num - (x * x * x)) >= error){x = (2 * x + num / (x * x)) / 3.0;}return x;
}

代码很简单,就是使用牛顿迭代法计算,然后判断是否达到想要的精度,达到精度后退出。

这里精度设置是0.00001,可以根据自己实际情况调整。

公式推导

这里说明代码x = (2 * x + num / (x * x)) / 3.0;是如何得到的。

牛顿迭代法公式如下。

xn+1=xn−f(xn)f′(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}xn+1​=xn​−f′(xn​)f(xn​)​

我们计算立方根的公式:

y=x3=x13y = {\sqrt[3]{x}} = x^{\frac 13}y=3x​=x31​

所以

y3=x{{y}^3} = xy3=x

构建以y为自变量的函数方程为

f(y)=y3−x=0f(y) = {{y}^3} - x = 0f(y)=y3−x=0

f′(y)=3y2=0f'(y) = {3}{y^2} = 0f′(y)=3y2=0

将f(y)f(y)f(y)和f′(y)f'(y)f′(y)带入

y−f(y)f′(y)=y−y3−x3y2y - \frac{f(y)}{f'(y)} = y - \frac{{{y}^{3}} - x}{{3}{y^2}}y−f′(y)f(y)​=y−3y2y3−x​

​ =13(2y+xy2)= \frac{1}{3}{(2y + \frac{x}{y^2})}=31​(2y+y2x​)

所以

yn+1=13(2yn+xyn2)y_{n+1} = \frac{1}{3}{(2y_n + \frac{x}{y_n^2})}yn+1​=31​(2yn​+yn2​x​) = (2yn+x÷yn2)÷3(2{y_n} + {x}÷{y_n^2})÷3(2yn​+x÷yn2​)÷3

实际计算,设x=2x = 2x=2,y1=2y_1 = 2y1​=2

y2=(2×2+2÷22)÷3=1.5y_2 = (2 × 2 + 2 ÷ 2^2) ÷ 3 = 1.5y2​=(2×2+2÷22)÷3=1.5

y3=(2×1.5+2÷1.52)÷3=1.296296y_3 = (2 × 1.5 + 2 ÷ 1.5^2) ÷ 3 = 1.296296y3​=(2×1.5+2÷1.52)÷3=1.296296

y4=(2×1.296296+2÷1.2962962)÷3=1.260932y_4 = (2 × 1.296296 + 2 ÷ 1.296296^2) ÷ 3 = 1.260932y4​=(2×1.296296+2÷1.2962962)÷3=1.260932

y5=(2×1.260932+2÷1.2609322)÷3=1.259922y_5 = (2 × 1.260932 + 2 ÷ 1.260932^2) ÷ 3 = 1.259922y5​=(2×1.260932+2÷1.2609322)÷3=1.259922

经过多次迭代,计算出来的结果23≈1.259922{\sqrt[3]{2}} \approx 1.25992232​≈1.259922。


本文链接:https://blog.csdn.net/u012028275/article/details/113822412

【学习笔记】牛顿迭代法求立方根相关推荐

  1. python求解立方根,python环境下使用牛顿迭代法求任意实数立方根

    https://images1.tqwba.com/20200918/xx0b50i53j4 推导过程如下: 一般牛顿迭代法的图名都叫做Newton-Raphson.也就是牛顿-拉弗森法 二.使用牛顿 ...

  2. 牛顿迭代法求一个数的立方根、平方根

    // 不调用原有的库函数,求一个数的立方根.平方根 ------牛顿迭代法,不得不说牛顿太伟大了! 我们现在先求平方根: 设函数 f(x) = x^2 - a  ,那么求 a 的平方根等价于求 f(x ...

  3. C语言学习之用牛顿迭代法求下面方程在1.5附近的根: 2x³-4x²+3x-6=0

    用牛顿迭代法求下面方程在1.5附近的根: 2x³-4x²+3x-6=0 在本题中 f(x) = 2x³-4x²+3x-6 可以写成以下形式:f(x) = ((2x-4)x+3)x-6 同样,f´(x) ...

  4. java 牛顿迭代算术平方根,牛顿迭代法求n方根

    一.简单推导 二.使用 借助上述公式,理论上可以求任意次方根,假设要求a(假设非负)的n次方根,则有xn=a,令f(x)=xn-a,则只需求f(x)=0时x的值即可.由上述简单推导知,当f(x)=0时 ...

  5. python牛顿迭代法求平方根_Newton迭代法求平方根

    牛顿迭代法求根 (即曲线与x坐标轴交点) : 在曲线的一点P1(a, f(a)), 做切线, 切线与x轴, 相交于 A 点, A点做垂线 与曲线交于 P2(b, f(b)) 点, 在P2点继续做切线, ...

  6. java牛顿法求方程根_C程序习题-用牛顿迭代法求方程的根[6.12]

    用牛顿迭代法求下面方程在1.5附近的根.2X3– 4X2+3X- 6 = 0 看到这个题目,我便开始百度,看什么是牛顿迭代法.看了上面的解释,我还是一头雾水.无从下手.不知所云.看着上面写的推到公式, ...

  7. oj第十一周训练——牛顿迭代法求根

    问题及代码 Description 用牛顿迭代法求根.方程为ax3+bx2+cx+d=0.系数a,b,c,d的值一次为1,2,3,4,由主函数输入.求x在1附近的一个实根.求出根后由主函数输出.结果保 ...

  8. 【源码】牛顿迭代法求根的matlab实现

    牛顿迭代法求根的matlab实现 本篇是在课程学习中自己编程实现的牛顿迭代法计算非线性方程或者超越方程近似根的算法,写一下,后边便于复习和期末课程设计引用. 牛顿迭代法本质上是一种特殊的不动点迭代,只 ...

  9. 用牛顿迭代法求浮点数的平方根

    比如我们要求a的平方根,首先随便猜一个近似值x,然后不断令x等于x和a/x的平均数,迭代几次后x的值就已经相当精确了. 看下面(假设a=2,我们求2的平方根): 1.先随便猜个数,比如我猜2的平方根为 ...

最新文章

  1. SVM熟练到精通4:偏离点与松弛变量
  2. python中 .sort()、 sorted()和 .reverse() 、reversed()的区别
  3. Terminal中输入一行命令快速移动光标至行首行尾
  4. 第1章 编程心理门槛
  5. MacOS emacs Command “pyls“ is not present on the path.报错及解决
  6. .net控件开发系列
  7. Rust 第一章 简介
  8. 从0到1搭建RPC框架
  9. 在水晶报表中插入子报表,并动态添加数据源
  10. 总结一下自己脑海里的JavaScript吧(一)--DOM模型
  11. chrome官网下载离线安装包
  12. 01 分布式系统架构的冰与火
  13. CMMB手机电视到了芯片企业创新的时侯
  14. Python爬虫实战 | 人民网爬虫 根据关键词筛选新闻文章
  15. mysql中selectform_数据库中select...from....where....各表示什么意思
  16. 响应式 BootStrap 媒体查询 栅格 组件 scss
  17. 传感技术复习笔记(9)——光电式传感器
  18. poi tl 判断空值_使用poi-tl操作word模板
  19. 用python 打开一个excel文件
  20. 研究心得:调研文献“快而全“的三步

热门文章

  1. 什么是FLV格式,及FLV格式如何应用
  2. 网游必备:卡巴斯基“安全部队”
  3. 暴风魔镜VR自动漫游
  4. 用Cocos走向移动VR开发之路|卞安演讲实录
  5. Oracle ebs pon,OracleApps(EBS)模块名称SAP模块名称
  6. 使用贸泽PCB工具快速获取元件库
  7. Android 实现截图功能
  8. 假设某书店的前台收银销售类的定义如下:
  9. 关于asp里面的(do while loop )(while wend )(for next)运行的时间
  10. Linux command(sar)