博客
关于我
最优化计算入门基础(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 将null转代为0
    查看>>
    mysql 常用
    查看>>
    MySQL 常用列类型
    查看>>
    mysql 常用命令
    查看>>
    Mysql 常见ALTER TABLE操作
    查看>>
    MySQL 常见的 9 种优化方法
    查看>>
    MySQL 常见的开放性问题
    查看>>
    Mysql 常见错误
    查看>>
    MYSQL 幻读(Phantom Problem)不可重复读
    查看>>
    mysql 往字段后面加字符串
    查看>>
    mysql 快速自增假数据, 新增假数据,mysql自增假数据
    查看>>
    Mysql 报错 Field 'id' doesn't have a default value
    查看>>
    MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
    查看>>
    Mysql 拼接多个字段作为查询条件查询方法
    查看>>
    mysql 排序id_mysql如何按特定id排序
    查看>>
    Mysql 提示:Communication link failure
    查看>>
    mysql 插入是否成功_PDO mysql:如何知道插入是否成功
    查看>>
    Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
    查看>>
    mysql 数据库备份及ibdata1的瘦身
    查看>>
    MySQL 数据库备份种类以及常用备份工具汇总
    查看>>