牛顿迭代公式计算平方根立方根
2017-09-18 22:50
281 查看
牛顿迭代公式计算平方根立方根
如何用计算机来求一个数的平方根与立方根呢。可以采用牛顿迭代公式。相类似的还有GCD最大公约数算法,也即欧几里德算法,利用余数辗转相除。牛顿迭代公式思路
用一个曲线的切线的根去表示一个曲线的根(根指一元方程的解,多元方程的解叫一组解,不叫根)。然后再从曲线上前一根处做切线,再求新切线的根,直到误差达到自己预期的精度范围内。牛顿迭代公式
曲线为y=f(x),在x0处的切线方程为y=f(x0)+f′(x0)×(x−x0)。要求f(x)=0的根,我们用在x0处f(x)的切线与x轴的交点做为曲线根的拟合。即用f(x0)+f′(x0)×(x−x0)=0的根做为曲线的根。x=x0−f(x0)f′(x0)
此即为牛顿迭代公式。
平方根迭代公式
假设输入为N。我们要求N−−√=x。可得x2−N=0。此即为f(x)。即f(x)=x2−N。其中N为输入的要求其平方根的数。f′(x)=2x。代入牛顿迭代公式。可得:x=x0−x20−N2x0=x02+N2x0。此方程即可视为一个状态转移方程了。
xn=0.5×xn−1+0.5×Nxn−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,即x3−N=0,即f(x)=x3−N。可知f′(x)=3x2。代入牛顿迭代公式。
xn=xn−1−f(xn−1)f′(xn−1)=xn−1−x3n−1−N3x2n−1=2xn−13+N3x2n−1
代码如下:
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; }
相关文章推荐
- 泰勒级数+牛顿迭代公式+最简单的C语言求根号的值
- 第十一周OJ(6)牛顿迭代公式
- python计算牛顿迭代多项式实例分析
- 牛顿迭代公式
- python计算牛顿迭代多项式实例分析
- 牛顿迭代公式
- 牛顿迭代公式求根式
- 开方 牛顿迭代公式
- 计算时间复杂度的公式
- c#根据公式进行自动计算的实现
- Excel表输入公式不计算
- 华表 单元格公式设定与计算
- hdu 5448 Marisa’s Cake(计算几何加推公式)
- Excel隔行求和计算公式
- QPS/QPS/PV/UV/服务器数量/并发数/吐吞量/响应时间计算公式
- 协方差的意义和计算公式
- 性能测试计算公式 供参考
- 一张表总结机器学习/深度学习常用权重学习优化算法的迭代公式
- SQL动态计算出表中公式示例代码
- 使用Machin公式计算