zoukankan      html  css  js  c++  java
  • 迭代法

    牛顿迭代法

    1. 迭代公式建立

    clip_image002clip_image004点的Taylor展开如下:

    clip_image006

    一阶泰勒多项式:clip_image008

    clip_image010近似于clip_image012

    解出x记为clip_image014,则clip_image016

    2. 牛顿迭代法的几何解析

    clip_image002[4]处做曲线的切线,切线方程为:

    clip_image004[4]

    clip_image006[4]得切线与x轴的交点坐标为clip_image008[4],这就是牛顿迭代法的迭代公式。因此,牛顿法又称“切线法”。

    clip_image010

    Newton迭代法的特点是:

    1. 对初值clip_image002[6]的选取要求较高。一般的,Newton迭代法只有局部收敛性,当初值clip_image002[7]在收敛区间里时,收敛速度很快(平方收敛)。但初值clip_image002[8]离方程根x*较远时,不能保证Newton迭代法收敛。

    clip_image003

    2. Newton迭代法求单根时,收敛速度很快(平方收敛)。但如果方程根clip_image005是重根,则收敛速度较慢,且重数越高速度越慢。但当clip_image005[1]是m重根时,用下面的迭代格式:

    clip_image007

    则至少能保持平方收敛。

    3.应用:用有Newton迭代法求clip_image002[12]

    求解:设clip_image002[14],则clip_image004[6]

    clip_image006[6]

    clip_image008[6]

    程序实现:

    复制代码
    #define ABS(VAL) (((VAL)>0)?(VAL):(-(VAL)))   
    //用牛顿迭代法求浮点数的平方根   
    double mysqrt(float x) {   
        double g0,g1;   
        if(x==0) 
            return 0;   
        g0=x/2;   //初值
        g1=(g0+x/g0)/2;   
        while(ABS(g1-g0)>0.01) //终止条件  
        {   
            g0=g1;   
            g1=(g0+(x/g0))/2;   //迭代规则
        }   
        return g1;   
    }
    复制代码

    复制代码
    double sqr(double n) {
        double k=1.0;
        while(abs(k*k-n)>1e-9) {
            k=(k+n/k)/2;
        }
        return k;
    }
    复制代码

    附加:

    1. Newton下山法

    由于当初值clip_image002[16]离方程根clip_image004[8]较远时,不能保证Newton迭代法收敛,但一旦clip_image006[8]进入收敛区间,则收敛速度很快。为使clip_image006[9]尽快进入收敛区间,常采用Newton下山法:

    clip_image008[8] clip_image010[4]称为下山因子

    具体做法如下:

    1. 选取初值clip_image002[17] 
    2. 取下山因子clip_image012[4](可修改) 
    3. 计算clip_image008[9] 
    4. 计算clip_image014[4]并比较clip_image016[4]clip_image018的大小: 
    clip_image020,则 
             1) 当clip_image022时,取clip_image024,结束; 
             2) 当clip_image026时,将clip_image028作为新的clip_image006[10]值继续计算; 
    clip_image030,则取clip_image032,返回3。

    2. 弦截法(方程常用的求解方法)

    将Newton切线法中的切线斜率clip_image002[20]用弦的斜率替换:

    clip_image004[10]

    clip_image006

     
     
    分类: 小杂碎
  • 相关阅读:
    Kendo UI for jQuery电子表格控件可轻松实现Excel导出
    缩短
    google 插件 消息通知
    C#初学者的Hello World代码_艾孜尔江撰
    HTML简易的用户名密码登录页面_艾孜尔江撰
    一次性打开多个网页的工具脚本_艾孜尔江撰
    使用a标签无法跳转到指定网页的解决办法
    Flutter安装+Vscode+夜神模拟器+android SDK
    gitbook 说明
    两个模块之间项目依赖问题
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3332903.html
Copyright © 2011-2022 走看看