方程(equation)在數(shù)學(xué)之中有著很高的地位,我們常見的有一次、二次和三次方程等等,并且我們還能通過部分方程的求根公式來進(jìn)行求解方程的根。本文主要針對的是一般性的一元n次復(fù)系數(shù)方程,即是滿足下圖的方程:
那么由高斯定理可知,滿足上式該n次系數(shù)方程的根就有且僅有n個。注意:根據(jù)伽羅瓦群理論,五次及五次以上方程沒有求根公式,即不能以代數(shù)數(shù)的形式寫出方程的根,但是不是說這種方程沒有解,使用超越函數(shù)(如三角函數(shù)、對數(shù)函數(shù)等)還是可以表示該方程的解。但是有的時候我們求解某些方程過于繁瑣,且存在約束條件的情況下并不需要完全求解方程,而且若是含有超越數(shù)(如圓周率π、自然常數(shù)e等)的方程,求解過程也會略顯困難。因此人們想要另辟蹊徑,想要找尋其他高效的方式來求解方程,在此期間涌現(xiàn)出了大量的求解***如:二分法、不動點迭代等。本文主要介紹另一種優(yōu)化的不動點迭代法——牛頓迭代法(Newton-Iterative-Method)。
牛頓迭代法也稱為牛頓-拉夫森(Newton-Raphson)迭代法,它不僅適用于方程或方程組的求解,還常用于微分方程和積分方程求解,可見它的重要性。其***基本原理如下:
設(shè)f(x)∈C2[m,n],對f(x)在x?∈[m,n]領(lǐng)域內(nèi)對其進(jìn)行泰勒展開,得如下結(jié)果:
舍去二次項,得到f(x)的線性近似式:
這也是關(guān)于x?這一點的切線方程,由此得到方程f(x)=0的近似解:
即可得出關(guān)于x的迭代格式:
在此給出關(guān)于牛頓法的幾何意義:牛頓迭代法也稱為牛頓切線法,這是由于f(x)的線性化近似函數(shù)是曲線y=f(x)過點(x?,f(x?))的切線而得名的,將該零點代之f(x)的近似方程以求的零點,即切線T與X軸交點的橫坐標(biāo),真實的根值為X*,牛頓迭代法實質(zhì)上是一種線性化***,其基本思想是將非線性方程逐步歸結(jié)為某種線性方程來求解。
那么牛頓迭代法是收斂的嗎?或者說是否對于任意的初始值x?都能夠保證該迭代的結(jié)果收斂到X*?下面將通過代數(shù)解析的方式來說明其收斂性:
將牛頓迭代式寫成如下形式,即可獲得的不動點迭代形式:
這樣就可以應(yīng)用不動點迭代的收斂原則,只須證明在根β附近的迭代函數(shù)是一個壓縮映象,即可證明其收斂性。由于
這里的根β是單根,即f(β)=0且f'(β)≠0,于是:
由于γ(x)的連續(xù)性可知,存在一個領(lǐng)域(β-δ,β+δ),對該領(lǐng)域內(nèi)的任意x,都有|γ'(x)<q|,其中0<q<1,因此γ(x)為區(qū)間(β-δ,β+δ)上的一個壓縮映像,于是我們可以得到如下結(jié)論:
由此可見,牛頓迭代法的局部收斂性較強,所以只有初值充分地接近,才能確保所迭代序列的收斂性。為了放寬對局部收斂性的限制,必須再增加能夠使該序列收斂的充分條件,
上式可以化為以下幾種情況:
其中①保證了零點的存在性;②保證了函數(shù)的單調(diào)性,同時也保證了在區(qū)間[a,b]內(nèi)有唯一的零點;③保證函數(shù)的凹凸不會改變,④與③保證了每一次的迭代生成的值都在區(qū)間[a,b]之中;反映到圖像上如下:
若選取初始值不滿足上述條件時,會出現(xiàn)越迭代越遠(yuǎn)甚至死循環(huán)的情況,比如下圖這些情況:
介紹完牛頓法的性質(zhì)和原理,那么我們能夠用它來做些什么呢?即前面說到可以用來進(jìn)行方程的求解。假設(shè)給定正數(shù)a,建立如下關(guān)系式:
則f(x)=0的正數(shù)解就是其算術(shù)平方根。那么用牛頓迭代公式可得:
由于當(dāng)x>0時,f'(x)=2x>0,f''(x)=2>0,故由收斂定理可知,對于任意滿足條件x?>√a的初始近似值,由選代公式所產(chǎn)生的序列必定收斂于√a。
下面我們使用程序(TypeScript)來進(jìn)行開平方運算:
對于其他n次方的開方運算與上述類似,牛頓法在數(shù)學(xué)分析中使用非常廣泛,在此不再一一介紹,喜歡其他關(guān)于數(shù)學(xué)與程序方面的小伙伴可以留言加關(guān)注,之后我將會進(jìn)行講解。我是童話君,小伙伴們拜拜~~~