matlab中方程根的近似計(jì)算(共14頁)_第1頁
matlab中方程根的近似計(jì)算(共14頁)_第2頁
matlab中方程根的近似計(jì)算(共14頁)_第3頁
matlab中方程根的近似計(jì)算(共14頁)_第4頁
matlab中方程根的近似計(jì)算(共14頁)_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí)驗(yàn)一 方程根的近似計(jì)算一、問題求非線性方程的根二、實(shí)驗(yàn)?zāi)康?、學(xué)會使用matlab中內(nèi)部函數(shù)roots、solve、fsolve、fzero求解方程,并用之解決實(shí)際問題。4、熟悉Matlab的編程思路,尤其是函數(shù)式M文件的編寫方法。三、預(yù)備知識方程求根是初等數(shù)學(xué)的重要內(nèi)容之一,也是科學(xué)和工程中經(jīng)常碰到的數(shù)值計(jì)算問題。它的一般形式是求方程f(x)=0的根。如果有x*使得f(x*)=0,則稱x*為f(x)=0的根,或函數(shù)f(x)的零點(diǎn)。并非所有的方程都能求出精確解或解析解。理論上已經(jīng)證明,用代數(shù)方法可以求出不超過3次的代數(shù)方程的解析解,但對于次數(shù)大于等于5的代數(shù)方程,沒

2、有代數(shù)求根方法,即它的根不能用方程系數(shù)的解析式表示。至于超越方程,通常很難求出其解析解。不存在解析解的方程就需要結(jié)合具體方程(函數(shù))的性質(zhì),使用作圖法或數(shù)值法求出近似解。而計(jì)算機(jī)的發(fā)展和普及又為這些方法提供了廣闊的發(fā)展前景,使之成為科學(xué)和工程中最實(shí)用的方法之一。下面介紹幾種常見的求近似根的方法。1. 求方程近似解的簡單方法1.1 圖形方法放大法求根圖形的方法是分析方程根的性態(tài)最簡潔的方法。不過,不要總是想得到根的精確值。這些值雖然粗糙但直觀,多少個(gè)根,在何范圍,一目了然。并且還可以借助圖形局部放大功能,將根定位得更加準(zhǔn)確一些。例1.1 求方程x5+2x2+4=0的所有根及其大致分布范圍。解(1

3、)畫出函數(shù)f(x)=x5+2x2+4的圖形,確定方程的實(shí)數(shù)根的大致范圍。為此,在matlab命令窗中輸入clfezplot x-x,grid onhold onezplot('x5+2*x2+4',-2*pi,2*pi) 1-1 函數(shù)f(x)=x5+2x2+4的圖形clfx=-2*pi:0.1:2*pi;y1=zeros(size(x);y2= x.5+2*x.2+4;plot(x,y1,x,y2)grid on axis tighttitle('x5+2x2+4')xlabel('x') 從圖1-1可見,它有一個(gè)實(shí)數(shù)根,大致分布在-2與2之間。

4、(2)將作圖范圍不斷縮小,用放大法可得到精度越來越高的根的近似值。在matlab命令窗中先后鍵入subplot(2,2,1)ezplot x-x, grid on, hold on, ezplot('x5+2*x2+4',-2,2)subplot(2,2,2)ezplot x-x, grid on, hold on, ezplot('x5+2*x2+4',-2,-1)subplot(2,2,3)ezplot x-x, grid on, hold on, ezplot('x5+2*x2+4',-1.6,-1.5)subplot(2,2,4)ezpl

5、ot x-x, grid on, hold on, ezplot('x5+2*x2+4',-1.55,-1.54) 圖1-2 放大法求函數(shù)f(x)=x5+2x2+4的根由圖1-2可知,方程的根在-1.545與-1.54之間。1.2 數(shù)值方法非線性方程f(x)=0求根的方法有區(qū)間法和迭代法兩大類,二分法、弦位法是區(qū)間法,簡單迭代法和牛頓迭代法及其變形是迭代法,這里只給出二分法、簡單迭代法和牛頓迭代法的構(gòu)造過程。(1)根的隔離與二分法根的隔離思想來源于連續(xù)函數(shù)的零點(diǎn)定理:若函數(shù)f(x)在閉區(qū)間a,b上連續(xù),且f(a)f(b)<0,則方程f(x)=0在(a,b)內(nèi)至少有一根x*

6、。二分法是最簡單的求根方法,它是利用連續(xù)函數(shù)的零點(diǎn)定理,將含根區(qū)間逐次減半縮小,取區(qū)間的中點(diǎn)構(gòu)造收斂點(diǎn)列xn來逼近根x*。用該方法求f(x)=0的近似解可分兩步做:第一步,確定根的近似位置或大致范圍,即確定一個(gè)區(qū)間a,b,使所求根是位于這個(gè)區(qū)間內(nèi)的唯一實(shí)根。這個(gè)區(qū)間稱為根的隔離區(qū)間,這可以通過函數(shù)作圖達(dá)到:先畫出y=f(x)的圖形,然后從圖上定出它與x軸交點(diǎn)的大概位置。第二步,以根的隔離區(qū)間a,b的端點(diǎn)作為根的初始近似值,用二分法逐步改進(jìn)根的近似值的精確度,直至求得滿足精確度的近似解。具體步驟如下:取a,b的中點(diǎn)x0=(a+b)/2,若f(x0)=0,則x0就是f(x)=0的根x*。若f(a)

7、f(x0)<0,則根x*必在區(qū)間(a,x0)內(nèi),取a1=a, b1=x0;否則根x*必在區(qū)間(x0,b)內(nèi),取a1=x0, b1=b。這樣,得到新區(qū)間a1,b1,其長度為a,b的一半。如此繼續(xù)下去,進(jìn)行n等分后,得到一組不斷縮小的區(qū)間序列a,b, a1,b1, a2,b2, an,bn,和對應(yīng)區(qū)間的中點(diǎn)數(shù)列xn=(an+bn)/2, n=0,1,2, 其中每個(gè)區(qū)間都含有根x*,滿足a,ba1,b1 a2,b2 an,bn 且每個(gè)區(qū)間的長度都是前一區(qū)間長度的一半。由于an,bn的長度為(b-a)/2n,當(dāng)n不斷變大時(shí),這些區(qū)間將收斂于一點(diǎn)x*,該點(diǎn)即為所求的根。當(dāng)做到第n步時(shí),有選擇適當(dāng)?shù)?/p>

8、步數(shù)n,就可達(dá)到滿意的精度。用二分法,理論上區(qū)間中點(diǎn)序列xn將收斂到根的真值,但收斂速度較慢,所以通常用二分法為其他方法提供初步的近似值。(2)簡單迭代法迭代法的基本原理是構(gòu)造一個(gè)迭代公式,反復(fù)用它得出一個(gè)逐次逼近方程根的數(shù)列,數(shù)列中每一項(xiàng)都是方程根的近似值,只是精度不同。簡單迭代法也成逐次迭代法,是非線性方程求根中各類迭代法的基礎(chǔ)。由于對方程作等價(jià)變換根不發(fā)生變換,將方程f(x)=0等價(jià)變換為,構(gòu)造迭代計(jì)算公式。取定初值x0,算出數(shù)列xn。如果xn收斂于x*,則有這說明,x*就是方程f(x)=0的根。上面稱為不動點(diǎn)方程,稱為迭代函數(shù),數(shù)列xn稱為迭代數(shù)列。(3)牛頓迭代法如果f(x)在a,b

9、上具有二階導(dǎo)數(shù),f(a)f(b)<0,且f'(x)與f''(x)在a,b上保持同號,這時(shí)可采用牛頓迭代法求方程f(x)=0在(a,b)內(nèi)的惟一實(shí)根。牛頓迭代法將非線性方程線性化處理為近似方程,然后用近似方程獲得求根的迭代公式。具體做法如下:設(shè)xn是f(x)=0的一個(gè)近似根,把f(x)在xk處作泰勒展開,得f(x)=f(xk)+f'(xk)(x-xk)+(f''(xk)/2!)(x-xk)2+取前兩項(xiàng)來近似代替f(x),則得近似線性方程f(x)f(xk)+f'(xk)(x-xk)=0如果f'(xk)0,令其解為xk+1,得xk

10、+1=xk-f(xk)/f'(xk), k=1,2,. (1-1)上式稱為f(x)=0的根的牛頓迭代格式。牛頓法具有明顯的幾何意義,方程y=f(xk)+f'(xk)(x-xk) 是曲線在點(diǎn)(xk, f(xk)處的切線方程。迭代方程(1.1)就是切線與x軸交點(diǎn)的橫坐標(biāo),所以牛頓迭代法就是用切線與x軸交點(diǎn)的橫坐標(biāo)近似替代曲線與x軸交點(diǎn)的橫坐標(biāo)。因此牛頓法也稱切線法,是非線性方程求根方法中收斂最快的方法。2. matlab中方程求解的基本命令roots(p):求多項(xiàng)式方程的根,其中p是多項(xiàng)式系數(shù)按降冪排列所形成的向量。solve(fun):求方程fun=0的符號解,如果不能求得精確的

11、符號解,可以計(jì)算可變精度的數(shù)值解。solve(fun,var):對指定變量var求代數(shù)方程fun=0的符號解。fsolve(fun,x0):用最小二乘法求非線性方程fun=0在估計(jì)值x0附近的近似解。fzero(fun,x0):求函數(shù)fun在x0附近的零點(diǎn)。四、實(shí)驗(yàn)過程1、編寫二分法求根程序,求方程x3+1.1x2+0.9x-1.4=0實(shí)根的近似值,使誤差不超過10-3。解:(1)求根的初始隔離區(qū)間在matlab工作區(qū)輸入命令:ezplot x-x, grid on, hold on, ezplot('x3+1.1*x2+0.9*x-1.4') 圖1-4畫出曲線圖1-4。由上圖

12、可知,根應(yīng)在-2和2之間,進(jìn)一步畫出該部分的圖形。ezplot x-x, grid on, hold on, ezplot('x3+1.1*x2+0.9*x-1.4',-2,2) 圖1-5由圖1-5可見,根在0.5與1之間。(2)編寫程序如下:f=input('輸入函數(shù):f(x)=');qujian=input('輸入?yún)^(qū)間=');err=input('輸入誤差=');a=qujian(1);b=qujian(2);yc=1;while (b-a)>err)&(yc=0)c=(a+b)/2;x=a; ya=eval(f

13、);x=b; yb=eval(f);x=c; yc=eval(f);if ya*yc<0 b=c; else a=c; end x0=cend 存為文件erfenfa.m調(diào)用erfenfa得到如下結(jié)果:>> erfenfa輸入函數(shù):f(x)='x3+1.1*x2+0.9*x-1.4'輸入?yún)^(qū)間=0,1輸入誤差=0.001x0=0.5000x0=0.7500x0=0.6250x0=0.6875x0=0.6563x0=0.6719x0=0.6641x0=0.6680x0=0.6699x0=0.6709由此得到,方程的根的近似值為0.6709.2、編寫牛頓迭代法求根程

14、序,求1中方程x3+1.1x2+0.9x-1.4=0的實(shí)根的近似值,并計(jì)算迭代次數(shù)為6的近似根。解:由1可知,0.5,1是根所在的區(qū)間,在0.5,1上f(x)= x3+1.1x2+0.9x-1.4f'(x)=3*x2+2.2x+0.9, f''(x)=6x+2.2f'(x)與f''(x)在0.5, 1上保持同號,f(1)>0與f''(1)同號,所以取x0=1為迭代初始值。用matlab語言編寫一般的程序如下:f=input('輸入函數(shù):f(x)=');n=input('請輸入迭代次數(shù):n=')

15、;x0=input('請輸入迭代初始值:x0=');f1=diff(f);format longfor i=1:nx=x0;fx0=eval(f);f1x0=eval(f1);x0=x0-fx0/f1x0;fprintf('x0=%12.10fn',x0)end 存為文件niudunfa.m,調(diào)用及運(yùn)行結(jié)果如下:>> niudunfa輸入函數(shù):f(x)='x3+1.1*x2+0.9*x-1.4'請輸入迭代次數(shù):n=6請輸入迭代初始值:x0=1x0=0.x0=0.x0=0.x0=0.x0=0.x0=0.由此得到,方程的根的近似值為0.。

16、3. 用matlab中的內(nèi)部函數(shù)求方程的根。(1)用roots求方程x9+x8+1=0的根;(2)用solve求上述方程的根;(3)用fzero求方程x2+4sinx=25的實(shí)根;(4)用fsolve求方程x=e-x在0附近的根;解:(1)在matlab命令窗口輸入命令:p=zeros(10,1); p(1:2,end,1)=1; roots(p) ans = -1.9643 -0.8254 + 0.2893i -0.8254 - 0.2893i -0.6575 + 0.3146i -0.6575 - 0.3146i 0.6573 + 0.4660i 0.6573 - 0.4660i 0.80

17、75 + 0.7906i 0.8075 - 0.7906i (2)在matlab命令窗口輸入命令:solve('x9+x8+1=0') ans =RootOf(X19 + X18 + 1, X1) (3)首先作圖確定根的大致范圍:clf, ezplot x-x, grid on, hold on, ezplot('x2+4*sin(x)-25') 圖1-6由圖1-6可確定兩根在x1-4,x25附近。再具體求根。x1=fzero('x2+4*sin(x)-25',-4)x2=fzero(' x2+4*sin(x)-25',5) x1 = -4.8049x2 = 5.6235 (4)在matlab命令窗口輸入命令:x=fsolve('

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論