燕必成 高永祥 陳小紅
摘要:牛頓迭代法是方程求根中的一種較快捷的迭代方法,但遇到較復(fù)雜的方程時(shí)計(jì)算量較大。本文采用了MATLAB編程來(lái)實(shí)現(xiàn)牛頓迭代法,并給出了具體的計(jì)算例子。
關(guān)鍵詞:牛頓迭代法 MATLAB編程 算法思想
1 問(wèn)題的提出
牛頓迭代法收斂速度快,但每次都要求導(dǎo),求逆,計(jì)算量相當(dāng)大。為了減少計(jì)算量,引入簡(jiǎn)化的牛頓迭代法。
2 算法思想
以前我們解一元方程f(x)=0時(shí)采用過(guò)牛頓法,其幾何意義是在根x*的附近取點(diǎn)x0作為方程的近似值,如圖1-1所示,過(guò)曲線y=f(x)上的點(diǎn)(x0,f(x0))作切線,以它作為 y=f(x)的近似。切線與x軸的的交點(diǎn)x1作為根x*的第二次近似,不斷作下去,便得到迭代公式
xk+1=xk-■ k=0,1,2…
當(dāng)f(x)滿足一定條件下,迭代序列{xk}收斂到x*。
解一元方程f(x)=0的牛頓法的主要思想是將非線性函數(shù)線性化。因此仿照一元方程的情形,就得到非線性方程組的牛頓迭代法。
令
則方程組
設(shè)(x1(k),x2(k),…,xn(k))是方程組(2-1)的一組近似解,把它的左端在(x1(k),x2(k),…,xn(k))處用多元函數(shù)的泰勒展式展開(kāi),然后取線性部分,便得方程組(2-1)的近似方程組:
這是關(guān)于Δxi(k)=xi-xi(k)(i=1,2,…,n)的線性方程組,如果它的系數(shù)矩陣(見(jiàn)2-3):
非奇異,則可解得(見(jiàn)2-4):
矩陣(2-3)稱為向量函數(shù)F(x)的雅可比矩陣,記作F′(x)。又記x■■=xi■+Δxi(k)。
3 算法程序
其程序?yàn)椋?/p>
%ndf.m
function ndf=ndf(x)
clc;
disp(' MATLAB編的簡(jiǎn)化牛頓迭代法程序 ')
disp(' 浙江機(jī)電職業(yè)技術(shù)學(xué)院機(jī)械工程學(xué)院 ')
disp(' -------------------------------------------------------------------------------------- ')
syms x1 x2 x3 x4 x5 x6 x7 x8 x9
x=input('請(qǐng)以[x1,x2,...]的形式輸入未知變量x=');
F=input('請(qǐng)以[ ; ;...]的形式輸入非線形方程組的矩陣F(x)=');
x0=input('請(qǐng)以行的形式輸入未知變量的初始值x0=');
n=length(x);%確定未知變量的個(gè)數(shù)
g=jacobian(F,x);%產(chǎn)生雅可比矩陣
F0=subs(F,x,x0);%給方程組的矩陣置初值
g0=subs(g,x,x0);%給雅可比矩陣置初值
if det(g0)==0;
disp(' 不符牛頓迭代法的條件?。?!')
break
end
4 總結(jié)
牛頓迭代法收斂速度快,但要求導(dǎo),求逆。計(jì)算的結(jié)果受初值,迭代次數(shù)(或精度要求)的影響比較大,如果求導(dǎo)后代入初值,如結(jié)果為零,則無(wú)法迭代。因而當(dāng)求導(dǎo)后結(jié)果為零時(shí),必須尋求另外的方法來(lái)計(jì)算。
參考文獻(xiàn):
[1]云磊.牛頓迭代法的MATLAB實(shí)現(xiàn)[J].信息通信,2011(6).
[2]倪健,馬昌鳳.解非線性方程牛頓迭代法的一種新的加速技巧[J].廣西科學(xué)院學(xué)報(bào),2010(1).
[3]王霞,張啟虎.數(shù)值分析中牛頓迭代法的引入方法探討[J].天中學(xué)刊,2010(5).