• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Brian Warehouse

            Some birds aren`t meant to be caged, their feathers are just too bright... ...
            posts - 40, comments - 16, trackbacks - 0, articles - 1

            牛頓法求平方根【轉】

            Posted on 2010-08-17 13:49 Brian 閱讀(718) 評論(0)  編輯 收藏 引用 所屬分類: 概念和技術

            求n的平方根,先假設一猜測值DE>X0 = 1DE>,然后根據以下公式求出DE>X1DE>,再將DE>X1DE>代入公式右邊,繼續求出DE>X2DE>…通過有效次迭代后即可求出n的平方根,DE>Xk+1DE>

            x_(k+1)=1/2(x_k+n/(x_k))

            先讓我們來驗證下這個巧妙的方法準確性,來算下2的平方根 (Computed by Mathomatic)

            1-> x_new = ( x_old + y/x_old )/2
            y
            (x_old + -----)
            x_old
            #1: x_new = ---------------
            2
            1-> calculate x_old 1
            Enter y: 2
            Enter initial x_old: 1
             x_new = 1.5
            1-> calculate x_old 2
            Enter y: 2
            Enter initial x_old: 1
             x_new = 1.4166666666667
            1-> calculate x_old 3
            Enter y: 2
            Enter initial x_old: 1
             x_new = 1.4142156862745
            1-> calculate x_old 10
            Enter y: 2
            Enter initial x_old: 1
            Convergence reached after 6 iterations.
             x_new = 1.4142135623731
            ...

            可見,隨著迭代次數的增加,運算值會愈發接近真實值。很神奇的算法,可是怎么來的呢? 查了下wikipediawolfram,原來算法的名字叫Newton’s Iteration (牛頓迭代法)。

            下面是數理介紹,不喜歡數學的言下之意也就是絕大部分人可以略過了。

            簡單推導

            假設DE>f(x)DE>是關于DE>XDE>的函數:

            An illustration of on<wbr>e iteration of Newton's method

            求出DE>f(x)DE>的一階導,即斜率:

            f'(x_{n}) = frac{ mathrm{rise} }{ mathrm{run} } = frac{ mathrm{Delta y} }{ mathrm{Delta x} } = frac{ f( x_{n} ) - 0 }{ x_{n} - x_{n+1} } = frac{0 - f(x_{n})}{(x_{n+1} - x_{n})},!

            簡化等式得到:

            x_(n+1)=x_n-(f(x_n))/(f^'(x_n))

            然后利用得到的最終式進行迭代運算直至求到一個比較精確的滿意值,為什么可以用迭代法呢?理由是中值定理(Intermediate Value Theorem):

            如果DE>fDE>函數在閉區間DE>[a,b]DE>內連續,必存在一點DE>xDE>使得DE>f(x) = cDE>,DE>cDE>是函數DE>fDE>在閉區間DE>[a,b]DE>內的一點

            我們先猜測一DE>XDE>初始值,例如1,當然地球人都知道除了1本身之外任何數的平方根都不會是1。然后代入初始值,通過迭代運算不斷推進,逐步靠近精確值,直到得到我們主觀認為比較滿意的值為止。例如要求768的平方根,因為DE>252 = 625DE>,而DE>302 = 900DE>,我們可先代入一猜測值26,然后迭代運算,得到較精確值:27.7128。

            回到我們最開始的那個”莫名其妙”的公式,我們要求的是DE>NDE>的平方根,令DE>x2 = nDE>,假設一關于DE>XDE>的函數DE>f(x)DE>為:

            DE>f(X) = X2 - nDE>

            DE>f(X)DE>的一階導為:

            DE>f'(X) = 2XDE>

            代入前面求到的最終式中:

            DE>Xk+1 = Xk - (Xk2 - n)/2XkDE>

            化簡即得到我們最初提到的那個求平方根的神奇公式了:

            x_(k+1)=1/2(x_k+n/(x_k))

            用泰勒公式推導

            我之前介紹過在The Art and Science of C一書中有用到泰勒公式求平方根的算法,其實牛頓迭代法也可以看作是泰勒公式(Taylor Series)的簡化,先回顧下泰勒公式:

            f(x_0+epsilon)=f(x_0)+f^'(x_0)epsilon+1/2f^('')(x_0)epsilon^2+....

            僅保留等式右邊前兩項:

            f(x_0+epsilon) approx f(x_0)+f^'(x_0)epsilon.

            DE>f(X0+ε) = 0DE>,得到:

            epsilon_0=-(f(x_0))/(f^'(x_0))

            再令DE>X1 = X0 + ε0DE>,得到DE>ε1DE>…依此類推可知:

            epsilon_n=-(f(x_n))/(f^'(x_n))

            轉化為:

            x_(n+1)=x_n-(f(x_n))/(f^'(x_n))

            国产一级做a爰片久久毛片| 国内精品久久久久影院网站| 伊人色综合久久天天| 久久亚洲精品人成综合网| 模特私拍国产精品久久| 久久久精品人妻一区二区三区蜜桃| 精品久久一区二区| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 国产激情久久久久影院老熟女免费| 亚洲色欲久久久久综合网| 久久青青草原国产精品免费 | 777久久精品一区二区三区无码 | 久久精品青青草原伊人| 天天影视色香欲综合久久| 亚洲国产精品无码久久青草| 国产高潮国产高潮久久久91 | 99国内精品久久久久久久| 亚洲国产精品久久久久婷婷软件 | 久久99精品久久久久久水蜜桃| 中文字幕亚洲综合久久| 久久99精品久久久久久水蜜桃| 国产激情久久久久影院老熟女| 国产精品无码久久综合网| 国産精品久久久久久久| 久久久久久精品久久久久| 久久精品国产亚洲AV无码麻豆 | 99国产欧美久久久精品蜜芽 | 久久精品国产99久久香蕉| 亚洲∧v久久久无码精品| 亚洲一区精品伊人久久伊人| 粉嫩小泬无遮挡久久久久久| 亚洲&#228;v永久无码精品天堂久久| 九九久久精品无码专区| 久久国产精品99久久久久久老狼| 久久久久国产视频电影| 国产精品久久久久久吹潮| 久久国产亚洲精品| 亚洲AⅤ优女AV综合久久久| 四虎国产永久免费久久| 51久久夜色精品国产| 一本久久久久久久|