博客
关于我
最优化计算入门基础(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/

    你可能感兴趣的文章
    PowerDesigner教程系列(二)概念数据模型
    查看>>
    Powerdesigner显示表的comment和列的comment的方法
    查看>>
    PowerDesigner最基础的使用方法入门学习
    查看>>
    PowerDesigner版本控制器设置权限
    查看>>
    PowerDesigner生成数据模型并导出报告
    查看>>
    QGIS中导入dwg文件并使用GetWKT插件获取绘制元素WKT字符串以及QuickWKT插件实现WKT显示在图层
    查看>>
    PowerDesigner逆向工程从SqlServer数据库生成PDM(图文教程)
    查看>>
    PowerEdge T630服务器安装机器学习环境(Ubuntu18.04、Nvidia 1080Ti驱动、CUDA及CUDNN安装)
    查看>>
    PowerPC-object与elf中的符号引用
    查看>>
    QFileSystemModel
    查看>>
    Powershell DSC 5.0 - 参数,证书加密账号,以及安装顺序
    查看>>
    PowerShell 批量签入SharePoint Document Library中的文件
    查看>>
    Powershell 自定义对象小技巧
    查看>>
    pytorch从预训练权重加载完全相同的层
    查看>>
    PowerShell~发布你的mvc网站
    查看>>
    PowerShell使用详解
    查看>>
    Powershell制作Windows安装U盘
    查看>>
    powershell命令
    查看>>
    Powershell如何查看本地公网IP
    查看>>
    pytorch从csv加载自定义数据模板
    查看>>