牛顿迭代法的公式推导
2016-08-07 23:07
393 查看
牛顿迭代法求平方根
求n的平方根,先假设一猜测值X0 = 1,然后根据以下公式求出 X1,再将 X1代入公式右边,继续求出 X2…通过有效次迭代后即可求出n的平方根, Xk+1 先让我们来验证下这个巧妙的方法准确性,来算下2的平方根 (Computed by Mathomatic) 1-> x_new = ( x_old + y/x_old )/2 y (x_old + -----) x_old #1: x_new = --------------- 2 1-> calculate x_old 1 Enter y: 2 Enter initial x_old: 1 x_new = 1.5 1-> calculate x_old 2 Enter y: 2 Enter initial x_old: 1 x_new = 1.4166666666667 1-> calculate x_old 3 Enter y: 2 Enter initial x_old: 1 x_new = 1.4142156862745 1-> calculate x_old 10 Enter y: 2 Enter initial x_old: 1 Convergence reached after 6 iterations. x_new = 1.4142135623731 ... 可见,随着迭代次数的增加,运算值会愈发接近真实值。很神奇的算法,可是怎么来的呢? 查了下wikipedia和wolfram,原来算法的名字叫Newton’s Iteration (牛顿迭代法)。 下面是极其boring的数理介绍,不喜欢数学的言下之意也就是绝大部分人可以略过了。 简单推导假设f(x)是关于 X的函数: 求出 f(x)的一阶导,即斜率: 简化等式得到: 然后利用得到的最终式进行迭代运算直至求到一个比较精确的满意值,为什么可以用迭代法呢?理由是中值定理(Intermediate Value Theorem): 如果 f函数在闭区间 [a,b]内连续,必存在一点 x使得 f(x) = c, c是函数 f在闭区间 [a,b]内的一点 我们先猜测一 X初始值,例如1,当然地球人都知道除了1本身之外任何数的平方根都不会是1。然后代入初始值,通过迭代运算不断推进,逐步靠近精确值,直到得到我们主观认为比较满意的值为止。例如要求768的平方根,因为 252 = 625,而 302 = 900,我们可先代入一猜测值26,然后迭代运算,得到较精确值:27.7128。 回到我们最开始的那个求2次方根的公式,令 x2 = n,假设一关于 X的函数 f(x)为: f(X) = X2 - n 求 f(X)的一阶导为: f'(X) = 2X 代入前面求到的最终式中: Xk+1 = Xk - (Xk2 - n)/2Xk 化简即得到我们最初提到的那个求平方根的神奇公式了: 用泰勒公式推导在The Art and4000 Science of C一书中有用到泰勒公式求平方根的算法,其实牛顿迭代法也可以看作是泰勒公式(Taylor Series)的简化,先回顾下泰勒公式: 仅保留等式右边前两项: 令 f(X0+ε) = 0,得到: 再令 X1 = X0 + ε0,得到 ε1…依此类推可知: 转化为: |
相关文章推荐
- 动态规划---公式推导剖析
- 机器学习:SVM公式推导
- 今天竟然忘记了余弦公式和点积公式的互相推导关系了。
- Lucene学习总结之六:Lucene打分公式的数学推导
- SVM数学公式推导及个人总结
- 论文笔记及公式推导 《Supervised Discrete Hashing》
- 3D中投影矩阵公式的推导
- 数论相关公式的推导
- 最小二乘与交叉熵代价函数的区别(作用及公式推导)
- 最小二乘法拟合直线公式推导及vc实现[转]
- 罗德里格斯转换公式推导
- 关于感知学习模型机中空间任一点到超平面的距离公式的推导过程
- 空间中任一点到超平面的距离公式的推导过程
- 关于最大似然估计和最小二乘法的理解和公式推导
- 求和(数学公式推导、取余运算)
- 最小二乘法拟合直线公式推导及vc实现[转]
- 反向传播算法(过程及公式推导)
- 反向传播算法(过程及公式推导)
- HDOJ(HDU) 2524 矩形A + B(推导公式、)
- 51nod 1417 天堂里的游戏[数学公式推导]