博客
关于我
最优化计算入门基础(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 整形列的字节与存储范围
    查看>>
    mysql 断电数据损坏,无法启动
    查看>>
    MySQL 日期时间类型的选择
    查看>>
    Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
    查看>>
    MySQL 是如何加锁的?
    查看>>
    MySQL 是怎样运行的 - InnoDB数据页结构
    查看>>
    mysql 更新子表_mysql 在update中实现子查询的方式
    查看>>
    MySQL 有什么优点?
    查看>>
    mysql 权限整理记录
    查看>>
    mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
    查看>>
    MYSQL 查看最大连接数和修改最大连接数
    查看>>
    MySQL 查看有哪些表
    查看>>
    mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
    查看>>
    MySql 查询以逗号分隔的字符串的方法(正则)
    查看>>
    MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
    查看>>
    mysql 查询数据库所有表的字段信息
    查看>>
    【Java基础】什么是面向对象?
    查看>>
    mysql 查询,正数降序排序,负数升序排序
    查看>>
    MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
    查看>>
    mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
    查看>>