牛顿迭代公式计算平方根立方根

如何用计算机来求一个数的平方根与立方根呢。可以采用牛顿迭代公式。相类似的还有GCD最大公约数算法,也即欧几里德算法,利用余数辗转相除。


牛顿迭代公式思路

用一个曲线的切线的根去表示一个曲线的根(根指一元方程的解,多元方程的解叫一组解,不叫根)。然后再从曲线上前一根处做切线,再求新切线的根,直到误差达到自己预期的精度范围内。


牛顿迭代公式

曲线为y=f(x)y=f(x),在x0x_0处的切线方程为y=f(x0)+f′(x0)×(x−x0)y=f(x_0)+f'(x_0)\times (x-x_0)。要求f(x)=0的根,我们用在x0x_0处f(x)的切线与x轴的交点做为曲线根的拟合。即用f(x0)+f′(x0)×(x−x0)=0f(x_0)+f'(x_0)\times (x-x_0)=0的根做为曲线的根。

x=x0−f(x0)f′(x0)

x=x_0-\frac {f(x_0)}{f'(x_0)}
此即为牛顿迭代公式。


平方根迭代公式

假设输入为N。我们要求N−−√=x\sqrt N=x。可得x2−N=0x^2-N=0。此即为f(x)。即f(x)=x2−Nf(x)=x^2-N。其中N为输入的要求其平方根的数。f′(x)=2xf'(x)=2 x。代入牛顿迭代公式。可得:
x=x0−x20−N2x0=x02+N2x0x=x_0-\frac {x_0^2-N}{2x_0}=\frac {x_0}{2}+\frac {N}{2 x_0}。此方程即可视为一个状态转移方程了。

xn=0.5×xn−1+0.5×Nxn−1

x_n=0.5\times x_{n-1}+\frac{0.5\times N}{x_{n-1}}
代码如下:

double Leetcode::sqrt(double d, double loss)
{double x=1.0;do{x=0.5*x+0.5*d/x;}while(fabs(x*x-d)>loss);return x;
}

立方根迭代公式

要求N−−√3=x\sqrt[3]N=x,即x3−N=0x^3-N=0,即f(x)=x3−Nf(x)=x^3-N。可知f′(x)=3x2f'(x)=3x^2。
代入牛顿迭代公式。

xn=xn−1−f(xn−1)f′(xn−1)=xn−1−x3n−1−N3x2n−1=2xn−13+N3x2n−1

x_n=x_{n-1}-\frac {f(x_{n-1})}{f'(x_{n-1})}=x_{n-1}-\frac {x_{n-1}^3-N}{3x_{n-1}^2}=\frac {2x_{n-1}}{3}+\frac {N}{3x_{n-1}^2}
代码如下:

double Leetcode::cubeRoot(double d, double loss)
{double x=1.0;do{x=2*x/3+d/(3*x*x);}while(fabs(x*x*x-d)>loss);return x;
}

牛顿迭代公式计算平方根立方根相关推荐

  1. 利用迭代公式求平方根。

    利用迭代公式求平方根.由用户输入数据a,而后计算其平方根. 算法描述: 设x=sqrt(a), 设初值为x[0],则迭代公式为 x[n+1]=(x[n]+a/x[n])/2 由此公式产生序列x[1], ...

  2. 泰勒级数+牛顿迭代公式+最简单的C语言求根号的值

    转载自:http://blog.csdn.net/tqtuuuu/article/details/6821767 无意间在CSDN上看见一哥们讨论Tecent的两道面试题,其中一道题目就是求根号2的值 ...

  3. 牛顿迭代公式是如何推导出来的

    牛顿迭代公式是用来求解方程的迭代法之一.它通过不断地迭代来逼近方程的根. 具体来说,假设我们要求解方程 f(x)=0 的根,那么我们可以通过如下步骤来推导牛顿迭代公式: 首先,我们需要确定一个初始猜测 ...

  4. java测试一个泰勒级数,泰勒级数+牛顿迭代公式+最简单的C语言求根号的值

    无意间看见一哥们讨论Tecent的两道面试题,其中一道题目就是求根号2的值,并且保留指点的小数位.我想我一定是不能进Tecent了,并且我一定是一个数学小白,不,就是一个小白.查了一些资料.mark一 ...

  5. 迭代公式求平方根c语言程序设计,迭代法求平方根C语言实验报告

    与<迭代法求平方根C语言实验报告>相关的范文 西安交通大学实验报告 课程_ c++ __ 实验名称_迭代公式求平方根_ 第1页 共2页 系 别__ 土木工程 ____ 实 验 日 期 20 ...

  6. python牛顿迭代公式_python计算牛顿迭代多项式实例分析

    本文实例讲述了python计算牛顿迭代多项式的方法.分享给大家供大家参考.具体实现方法如下: ''' p = evalPoly(a,xData,x). Evaluates Newton's polyn ...

  7. 用牛顿迭代公式求 x 的立方根(c语言)

    #include<stdio.h> #include<math.h> //Xn+1=a,Xn=b;a=1/3(2*a+x/b/b) ,判断a-b绝对值 小于0.000001输出 ...

  8. python牛顿迭代公式_python 牛顿迭代法

    使用牛顿迭代法求方程 在x附近的一个实根. 赋值X,即迭代初值:用初值x代入方程中计算此时的f(x)=(a * x * x * x + b * x * x + c * x + d)和f'(x)=(3 ...

  9. 求正数a的平方根的迭代公式为:xn+1=(xn+a/xn)/2。建立一个类SQRT,用来求某正数平方根的近似值。具体要求如下:

    c++常见面试题: 求正数a的平方根的迭代公式为:xn+1=(xn+a/xn)/2.建立一个类SQRT,用来求某正数平方根的近似值.具体要求如下: (1)私有数据成员 float n:存放某个正数. ...

最新文章

  1. memcached failed to listen问题解决以及 结束daemon的方法
  2. 设为首页加入收藏代码
  3. IMOAutocompletionViewController
  4. 兼顾隐私与权利,华为以“科技有道”,实现“隐私无价”
  5. 看了《OCP/OCA认证考试指南全册:Oracle Database 11g(1Z0-051,...
  6. .Net Core使用Ocelot网关(二) -鉴权认证
  7. 插入排序 希尔排序 C++
  8. (Ruby)Ruby中区块用的一些潜藏关键字
  9. poj 2395 prime的递归实现
  10. 再倒入项目的时候,为什么要转为maven项目?
  11. 计算机 工具 文件夹 找不到,电脑附件中的“画图工具”找不到了,怎么办?
  12. 小米HTML查看器记住密码,小米路由器 SSH 密码计算工具,开启小米SSH访问
  13. Legendshop工时记录系统
  14. 程序猿要知道的:如何精心打造产品的“开始一公里”
  15. Windows 系统重装 - 制作 Win10 启动盘
  16. WIN10 Windows terminal 分屏
  17. DecisionTreeRegressor参数详解
  18. 【转】专家推荐 13个优秀的UML建模工具软件
  19. 【软件安全:软件安全技术课后习题及答案】
  20. ShaderJoy —— 烟花爆炸特效【GLSL】

热门文章

  1. poj 3258 River Hopscotch
  2. 网页制作表单代码java_JSP动态网页入门:表单输入例子
  3. 室内定位解决方案的应用及原理,室内定位方案技术精湛-新导智能
  4. SVD分解原理及C++实现
  5. mybatis-plus配置控制台打印完整带参数SQL语句
  6. npm,yarn,cnpm,pnpm的区别
  7. Anaconda中用pip安装本地包
  8. 阿里确认布局自动驾驶,BAT再度聚首竞争白热化
  9. java项目初期化_Java初始化规则都不懂,搞什么开发!
  10. Canon iP2780/iP2788 清零软件