博客
关于我
最优化计算入门基础(2)——NewtonRaphson Iterative Method
阅读量:777 次
发布时间:2019-03-24

本文共 1757 字,大约阅读时间需要 5 分钟。

Newton-Raphson Iterative Method

Newton-Raphson方法是一种高效的数值方法,用于求解non-linear方程f(x)=0。该方法通过迭代逐步逼近根的近似值。该方法基于以下假设:方程在接近根的点附近可以用线性近似来代替原方程,例如用泰勒展开式。

下面,我们详细分析该方法,并利用具体的例子来演示它的实现过程。

样本函数与问题定义

考虑一个non-linear函数f(x):f(x) = (1/3)x^3 - 2x^2 + 3x + 1

我们的目标是找出f(x)=0的解。即:x ∈ R 满足 f(x) = 0

首先,我们需要计算函数的导数f’(x),因为牛顿-拉夫森方法中的迭代公式依赖于f’(x)。

计算f’(x):f’(x) = d/dx [ (1/3)x^3 - 2x^2 + 3x + 1 ] = x^2 - 4x + 3

牛顿-拉夫森迭代算法步骤

牛顿-拉夫森迭代法的迭代公式为:x_{n+1} = x_n - f(x_n)/f’(x_n)

其中,x_n是第n+1次迭代的近似解。

以下是具体的迭代步骤:

  • 选择初始值x₀,这个值应满足f’(x₀) ≠ 0,且靠近f(x)=0的一个根。

  • 计算f(x₀)和f’(x₀),然后代入迭代公式计算x₁。

  • 接着计算f(x₁)和f’(x₁),进而得到x₂。

  • 重复以上步骤,直到迭代结果满足停止条件。

  • 通常,停止条件会是迭代后的变化不足以改变结果的小于某个阈值(如1e-8)。

    应用示例

    让我们从x₀=0开始迭代。

    迭代1:

    x₀ = 0

    计算f(x₀) = (1/3)(0)^3 - 2(0)^2 + 3(0) + 1 = 1

    计算f’(x₀) = (0)^2 - 4(0) + 3 = 3

    计算x₁ = x₀ - f(x₀)/f’(x₀) = 0 - (1)/3 = -1/3

    迭代2:

    x₁ = -1/3

    计算f(x₁) = (1/3)(-1/3)^3 - 2(-1/3)^2 + 3*(-1/3) + 1= (1/3)(-1/27) - 2(1/9) + (-1) + 1= (-1/81) - (2/9) - 1 + 1= (-1/81 - 18/81)= (-19)/81 ≈ -0.2345

    计算f’(x₁) = (-1/3)^2 - 4*(-1/3) + 3 = (1/9) + (4/3) + 3 ≈ 0.1111 + 1.3333 + 3 ≈ 4.4444

    计算x₂ = (-1/3) - (-19/81)/4.4444 ≈ (-0.3333) - (-0.0951)/1.4444 ≈ -0.3333 + 0.0659 ≈ -0.2674

    迭代3:

    继续迭代,可以得到: x3 ≈ -0.2674

    观察上述迭代结果,可以发现每次迭代结果在逼近某个值。

    如果继续多次迭代,可以发现结果是收敛的,逐步接近真实的根。

    收敛分析

    观察迭代过程,我们可以看到f(x)在每次迭代中向零方向移动。这意味着应用牛顿-拉夫森方法时,每一步都朝着根位置移动。

    为了更快收敛,需注意选择合适的初始值x₀,以及确保在迭代过程中除数f’(x_n)不会过小或过大,否则可能导致数值上的不稳定。

    改进与扩展

  • 动量参数(gamma):为了确保迭代稳定,通常会在迭代公式中增加动量参数gamma,使其变为:x_{n+1} = x_n - gamma*(f(x_n)/f’(x_n))
  • gamma通常取0.1到0.5之间的值,以平衡收敛速度和稳定性。

    1. 二次导检查:在每一步迭代前,需检查f’(x_n)是否足够大。若f’(x_n)小于某个精度阈值ε,则收敛性受到威胁,建议采用其他方法或重新选择初始值。

    2. 回追策略:在收敛比较困难的情况下,可以采用回追中(backtracking)策略,当f’(x_n)过小时,减少迭代步长gamma。

    3. 总结

      牛顿-拉夫森迭代法是一种强大的工具,对于许多non-linear方程,尤其是高次多项式来说,通常比其他迭代方法(如惯性梯度法)收敛更快。在实际应用中,需注意初始值的选择以及监控投影方向的稳定性,以确保迭代顺利进行。通过持续练习和多个案例的练习,我相信对Newton-Raphson方法的理解会越来越深入。

    转载地址:http://nxekk.baihongyu.com/

    你可能感兴趣的文章
    MySQL底层概述—2.InnoDB磁盘结构
    查看>>
    MySQL底层概述—3.InnoDB线程模型
    查看>>
    MySQL底层概述—5.InnoDB参数优化
    查看>>
    MySQL底层概述—6.索引原理
    查看>>
    MySQL底层概述—7.优化原则及慢查询
    查看>>
    MySQL底层概述—8.JOIN排序索引优化
    查看>>
    MySQL底层概述—9.ACID与事务
    查看>>
    Mysql建立中英文全文索引(mysql5.7以上)
    查看>>
    mysql建立索引的几大原则
    查看>>
    Mysql建表中的 “FEDERATED 引擎连接失败 - Server Name Doesn‘t Exist“ 解决方法
    查看>>
    MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!
    查看>>
    MySQL异步操作在C++中的应用
    查看>>
    Mysql当前列的值等于上一行的值累加前一列的值
    查看>>
    MySQL当查询的时候有多个结果,但需要返回一条的情况用GROUP_CONCAT拼接
    查看>>
    MySQL必知必会(组合Where子句,Not和In操作符)
    查看>>
    MySQL必知必会总结笔记
    查看>>
    MySQL快速入门
    查看>>
    MySQL快速入门——库的操作
    查看>>
    mysql快速复制一张表的内容,并添加新内容到另一张表中
    查看>>
    mysql快速查询表的结构和注释,字段等信息
    查看>>