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

    牛顿迭代

    具体说明,请参见维基百科 http://zh.wikipedia.org/wiki/牛顿法


     


    举一个栗子


    找平方根

    给一个数a,求其平方根。

     

    设其平方根为则有 x^2 - a = 0,设函数f(x) = x^2 - a

    x0的初值尽量靠近a的平方根(由于初值的选择影响迭代的次数)

    依据 f(x0)  = (x0 - x).f(x0)

    --->  x = x0 -  f(x0)/f(x0)   

    --->  x0 = x                        

    反复①、②直到abs(x-x0)<=eps,达到精度要求就可以。

    代码:

    a = input();

    x0 = Init_Value;

    While( fabs(x-x0)>eps){

           x0 = x;

           x = x0 - f(x0)/f(x0);

    }

     

    Eg.  a  = 2 , eps = 1e-8

    X0 = 1.0

    迭代过程中x的变化

    1.5000000000000000

    1.4166666666666667

    1.4142156862745099

    1.4142135623746899

    1.4142135623730951

     

    总的来说

    F(x)函数连续,且在零点范围内收敛。

    迭代的次数受x0和精度影响。

    迭代的次数是非常小的相对(二分法),(精度乘法)

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    Design + Code (iOS)
    Objective-C Programming (2nd Edition)
    iOS Programming The Big Nerd Ranch Guide (4th Edition)
    反射
    面向对象
    人狗大战
    数据结构初识(三级菜单)
    面向对象(组合)
    练习
    re模块
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4833567.html
Copyright © 2011-2022 走看看