郭華毅
(山西藥科職業(yè)學(xué)院,太原 030031)
數(shù)值計算中,最困難的問題之一是非線性方程組的求解。非線性方程組的求解由于沒有指定的求解公式,因此在實際操作中很難得到精確的解〔1〕。常見的求解非線性方程組的方法有梯度法、共軛方向法、拋物線逼近法、迭代法等〔2〕。在解決實際的數(shù)學(xué)問題中,要根據(jù)不同的條件靈活運用方法,不同的求解方法有著不同的優(yōu)缺點。梯度法作為求解方法中最古老的方法之一,可以任意選擇初始點,并且每次迭代的計算量小,存儲量也少,因此它的程序也較為簡短〔3〕。可以從一個隨意的甚至不好的初始點出發(fā),開始幾步迭代后慢慢逼近局部的極小點,但它也有自己的不足之處。因為它逼近的是一個局部的極小點,缺少整體性,從整體的角度來看,這不一定是收斂速度最快的方向。其次,梯度法只用到一階導(dǎo)數(shù)的信息,不適合用于二階非線性方程組的求解〔4〕。對于共軛方向法而言,則還需要選定方向,要求滿足共軛條件和下降的條件,并且每一次都要重新并反復(fù)確定搜索方向,操作量比較大,在求解非線性方程組的過程中會消耗大量的時間〔5〕。為了彌補此類方程在實際解決非線性方程組解法上的不足,便可以用牛頓-拉弗森(Newton-Raphson)法,Newton-Raphson 法是求解非線性方程組最經(jīng)典的方法之一。Newton-Raphson 法也叫作牛頓迭代法,它可以適用于高階的非線性方程組,并且也不用像共軛方向法那樣,周而復(fù)始地搜索方向〔6〕。Newton-Raphson 法在迭代的過程中,只需要迭代幾次就可以輕松地得到非常精確的非線性方程組的解,并且通過Newton-Raphson 法還可以求方程組的重根和復(fù)根。該方法最大的特點在于將非線性問題進行線性化,簡化了求解過程。Newton-Raphson 法還可以求解一些代數(shù)方程和超越方程〔7〕。本研究通過解析Newton-Raphson 法的基本原理,并結(jié)合案例分析證明該方法在非線性方程組求解中的實際應(yīng)用。
1.1 Newt on-Raphson 法的迭代原理Newton-Raphson 法的基本思想:把一個非線性方程線性化,再用線性方程的解去逼近非線性方程的解。首先,針對一個一元非線性方程,在實現(xiàn)非線性方程的線性化過程中,可以對該非線性方程做一階泰勒展開。對于一個一元函數(shù)f(x)=0,取x0≈x*,對f(x)在x0處做一階泰勒展開:
其中ζ 在x0和x 之間,取x≈x*,那么把x0)2看作高階無窮小量,則有
方程f(x)=0 可以近似地表示為f(x0)+f '(x0)(x*-x0)=0,其中f(x)=0 的根x=x*。
對于這個線性方程,可以記其近似根為x1,那么x1的計算公式為:
做k+1 次迭代,即得牛頓迭代公式
即方程f(x)=0 的根x*在幾何上可理解為曲線y=f(x)與x 軸交點的橫坐標(biāo)。若xk是根x*的一個近似,那么過曲線上橫坐標(biāo)為xk的點Q(xk,f(xk))作曲線y=f(x)的切線,則這條切線lk與x 軸交點的橫坐標(biāo)即為xk+1,見圖1。
圖1 Newton-Raphson 法的幾何意義
1.2 Newton-Raphson 法對二元函數(shù)方程組的求解對于二元函數(shù)而言,也可通過泰勒公式展開。設(shè)z=f(x,y)在點(x0,y0)的某一鄰域內(nèi)連續(xù),且直到(n+1)階都有連續(xù)的偏導(dǎo)數(shù),在該鄰域上的任意一點Q(x0+h,y0+k),則有:
設(shè)z=f(x,y)在點(x0,y0)的某一鄰域內(nèi)連續(xù)且直到二階有連續(xù)的偏導(dǎo)數(shù),鄰域內(nèi)任意的一點(x0+h,y0+k),有
方程f(x,y)=0 可近似地表示為
即
同理設(shè)z=g(x,y)在點(x0,y0)的某一鄰域內(nèi)連續(xù)且直到二階有連續(xù)的偏導(dǎo)數(shù),該鄰域內(nèi)任意的一點(x0+h,y0+k),同樣有
方程g(x,y)=0 也可近似地表示為
即
根據(jù)f(x,y)=0 和g(x,y)=0,通過聯(lián)立方程組,轉(zhuǎn)化為求解非線性方程組的問題。
得到的方程組為:
從而有
于是,可以簡化方程組,
那么方程組可以改寫為:
則方程組的迭代公式可以寫為:
通過迭代公式(8),便可以求出當(dāng)k=1,2,3,…時(xk,yk)的值,當(dāng)≤δ 時,此方程組的根為(xk,yk)。
1.3 Newton-Raphson 法對多元函數(shù)方程組的求解令fi(x1,x2,…,xn),i=1,2,3,…,n 是n 個定義域在n維空間區(qū)域D 的n 元函數(shù),且二次連續(xù)可微,它的值域也在D 內(nèi)。該解可表示為,可以同樣參照一元函數(shù)的求解過程,把fi在點附近的一點(x01,x02,…,x0n)進行泰勒公式展開,可得
這樣完成了通過泰勒展開公式把一個非線性方程組轉(zhuǎn)化為一個線性方程組的過程。對于此線性方程組的根x01,x02,…,x0n,就是原非線性方程組的根的近似值。此線性方程組中對于未知數(shù)x1,x2,…,xn的系數(shù)矩陣即可寫成Jacobi 矩陣
令f=(f1,f2,…,fn)T,x=(x1,x2,…,xn)T,x0=(x01,x02,…,x0n)T,則Jacobi 矩陣可以寫作f(x0)+J(x0)(x-x0)=0,對該方程進行求解得x1=x0-J-1(x0)f(x0)。反復(fù)進行求解,便可以得到對于多元方程組Newton-Raphson 法的迭代公式,即
例1 用Newton-Raphson 法求解方程組
解:
令
該方程組的系數(shù)矩陣
即
選取初始值x(0)=(0,0)T,解方程J(x(0))△x(0)=-f(x(0)),即解方程組
其解為△x(0)=(0.8,0.88)T。解方程組J(x(0))△x(0)=-f(x(0)),按Newton-Raphson 法進行迭代計算,結(jié)果見表1。
表1 Newton-Raphson 法計算結(jié)果(k=0~5)
本研究通過分析牛頓迭代公式在一元非線性方程的求解過程,結(jié)合多元函數(shù)泰勒展開式給出了非線性方程的牛頓迭代公式,同時給出了非線性方程組的牛頓迭代公式,并通過具體的算例驗證了方法的正確性。