資源描述:
《matlab講義一:方程求解》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第1章方程求解本章學(xué)習(xí)目的:1.復(fù)習(xí)求解方程的基本原理和方法,掌握解方程的迭代算法;2.能利用MATLAB軟件編寫迭代算法程序,了解迭代過程的圖形表示;3.熟練掌握用MATLAB軟件的函數(shù)來求解方程和方程組;4.通過范例展現(xiàn)求解實際問題的初步建模過程和MATLAB程序設(shè)計?!?.1引言“方程是很多工程和科學(xué)工作的發(fā)動機(jī)”。研究大型的土建結(jié)構(gòu)、機(jī)械結(jié)構(gòu)、輸電網(wǎng)絡(luò)、管道網(wǎng)絡(luò),研究經(jīng)濟(jì)規(guī)劃、人口增長、種群繁殖等問題時,簡單的分析可以直接歸結(jié)為線性或非線性方程組,復(fù)雜一些要用到(偏)微分方程,求數(shù)值解時將轉(zhuǎn)化為n非常大的方程組。若干世紀(jì)以來,工程師
2、和科學(xué)家花了大量的時間用于求解方程(組),數(shù)學(xué)家研究各種各樣的方程求解方法。本章我們就是要學(xué)習(xí)求解線性方程組、非線性方程(組)的方法,以及利用數(shù)學(xué)軟件利用計算機(jī)對方程和方程組進(jìn)行求解?!?.2方程的求解方法考慮求方程f(x)=0的解,我們通常采用這樣的幾種方法:因式分解法、圖形放大法、數(shù)值迭代逼近法。1.因式分解法:這是我們最熟悉、常用的一種方法,這個方法的關(guān)鍵在分解因式,包括對多項式函數(shù)、三角函數(shù)和指數(shù)函數(shù)等的分解。但對于無法進(jìn)行分解的函數(shù)則無能為力。2.圖形放大法:由于計算機(jī)的廣泛應(yīng)用,可以非常方便地作出函數(shù)f(x)的圖形(曲線),找出
3、曲線與x軸的交點的橫坐標(biāo)值,就可求出f(x)=0的近似根。這些值盡管不精確,但是直觀,方程有多少個根、在什么范圍,一目了然。并且可以借助于計算機(jī)使用圖形局部放大功能,將根定位得更加準(zhǔn)確。3.?dāng)?shù)值迭代逼近法:利用圖形的方法或連續(xù)函數(shù)的零點存在性定理,可以推知f(x)在某一區(qū)間內(nèi)有根,我們就可以用數(shù)值方法來求方程的根,這就是迭代逼近法。迭代逼近法分為區(qū)間的迭代和點的迭代。區(qū)間迭代又分為對分法和黃金分割法;點的迭代又分為簡單迭代法、單點割線法、兩點割線法、牛頓法等。迭代失敗后又可以采用加速迭代收斂方法。各種迭代方法原理都很簡單(數(shù)值分析課有詳細(xì)介
4、紹),請同學(xué)們自學(xué)。1.2.1圖形放大法用圖形放大法求解方程f(x)=0的步驟:(1)建立坐標(biāo)系,作曲線f(x);(2)觀察f(x)與x軸的交點;(3)將其中的一個交點進(jìn)行局部放大;(4)該交點的橫坐標(biāo)值就是方程的一個根;(5)對所有的交點進(jìn)行相同的處理,就得到方程的所有解。例1.1求方程所有的根及大致分布范圍,欲尋求其中的一個實根,并且達(dá)到一定的精度。(1)畫出的圖形;x=-6:0.01:6;y=x.^5+2*x.^2+4;plot(x,y)gridon;我們可以看出方程在-2~+2范圍有一個實根。(2)逐次縮小范圍得到較精確的根。x=-
5、2:0.01:2;y=x.^5+2.*x.^2+4;plot(x,y)gridonx=-2:0.01:-1.5;y=x.^5+2.*x.^2+4;plot(x,y)gridonx=-1.6:0.01:-1.5;y=x.^5+2.*x.^2+4;plot(x,y)gridon因此我們可以看出這個實根的值在-1.55~-1.5之間。1.2.1簡單迭代法1.迭代算法步驟:對方程f(x)=0求解(1)對方程經(jīng)過簡單變形得到(不是唯一的),x被稱之為不動點;(2)設(shè)置為迭代初值,迭代過程為,n=0,1,2……(3)當(dāng)兩次迭代結(jié)果之差小于某個設(shè)定的誤差
6、值時,我們認(rèn)為迭代結(jié)果是收斂的,可得到結(jié)果的近似值。例1.2求方程的非負(fù)實根。解:由于函數(shù)連續(xù),并且在x=0和x=1處函數(shù)值符號相反,可以判斷函數(shù)在區(qū)間(0,1)必有零點,即方程在(0,1)內(nèi)必然存在根。(1)先將函數(shù)變形為;(2)設(shè)置迭代初值為0,編程進(jìn)行迭代。n=1;x=0;y=exp(x)/3;ys=vpa(y,10);z=abs(y-x);whilez>10^(-5)x=y;y=exp(x)/3;ys=vpa(y,10);z=abs(y-x);n=n+1;endn,y,ysn=21y=0.6190ys=.6190471917從該結(jié)果
7、可以看出,迭代21次后兩次迭代的結(jié)果誤差值滿足小于的條件,結(jié)果收斂,迭代結(jié)果為0.6190,若保留小數(shù)點后10位有效數(shù)字則結(jié)果為0.6190471917。例1.3用迭代方法求解方程解:(1)對方程變形為,有不同的形式,比如;(a);(b);……(c)(2)設(shè)定初始值為1,編程迭代求解x=1;y=1;z=1;fork=1:25x=x^3-x^2-1;y=(y^2+y+1)^(1/3);z=1+1/z+1/z^2;endx,y,z在程序中,函數(shù)x,y,z分別對應(yīng)方程(a)(b)(c),從結(jié)果可以看出方程(a)不收斂,結(jié)果趨于負(fù)無窮大,方程(b)
8、(c)收斂,結(jié)果為1.8393。而且,還可證明(b)比(c)收斂速度快。注:這段程序和例1.2有所不同,這里是設(shè)定了固定的迭代次數(shù)。2.迭代失敗的改進(jìn):加速迭代收斂方法例1.3中