資源描述:
《數(shù)值積分和微分方程數(shù)值解》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、5.3節(jié)數(shù)值積分和微分方程數(shù)值解一.?dāng)?shù)值定積分求面積【例5-3-1】用數(shù)值積分法求由,y=0,x=0與x=10圍成的圖形面積,并討論步長和積分方法對精度的影響。解:◆原理用矩形法和梯形法分別求數(shù)值積分并作比較,步長的變化用循環(huán)語句實現(xiàn)。MATLAB中的定積分有專門的函數(shù)QUAD,QUADL等實現(xiàn)。為了弄清原理,我們先用直接編程的方法來計算,然后再介紹定積分函數(shù)及其調(diào)用方法。設(shè)x向量的長度取為n,即將積分區(qū)間分為n-1段,各段長度為。算出各點的,則矩形法數(shù)值積分公式為:矩形和梯形定積分公式梯形法的公式為:比較兩個公式,它們之間的差別只
2、是。在MATLAB中,把向量中各元素疊加的命令是sum。把向量中各元素按梯形法疊加的命令是trapz。梯形法的幾何意義是把被積分的函數(shù)的各計算點以直線相聯(lián),形成許多窄長梯形條,然后疊加,我們把兩種算法都編入同一個程序進(jìn)行比較。求面積的數(shù)值積分程序exn531fordx=[2,1,0.5,0.1]%設(shè)不同步長x=0:.1:10;y=-x.*x+115;%取較密的函數(shù)樣本plot(x,y),holdon%畫出被積曲線并保持x1=0:dx:10;y1=-x1.*x1+115;%求取樣點上的y1%用矩形(歐拉)法求積分,注意末尾去掉一個點n=
3、length(x1);s=sum(y1(1:n-1))*dx;q=trapz(y1)*dx;%用梯形法求積分stairs(x1,y1),%畫出歐拉法的積分區(qū)域plot(x1,y1)%畫出梯形法的積分區(qū)域[dx,s,q],pause(1),holdoff,end程序exn531運(yùn)行結(jié)果程序運(yùn)行的結(jié)果如下:步長dx矩形法解s梯形法解q29108101865815.5841.25816.25.1821.65816.65用解析法求出的精確解為2450/3=816.6666...。dx=2時矩形法和梯形法的積分面積見圖5-4-1.。在曲線的切線
4、斜率為負(fù)的情況下,矩形法的積分結(jié)果一定偏大,梯形法是由各采樣點聯(lián)線包圍的面積,在曲線曲率為負(fù)(上凸)時,其積分結(jié)果一定偏小,因此精確解在這兩者之間。由這結(jié)果也能看出,在步長相同時,梯形法的精度比矩形法高。矩形法數(shù)字積分的演示程序rsumsMATLAB中有一個矩形法數(shù)字積分的演示程序rsums,可以作一個對比。鍵入rsums('115-x.^2',0,10)就得到右圖。圖中表示了被積函數(shù)的曲線和被步長分割的小區(qū)間,并按各區(qū)間中點的函數(shù)值構(gòu)成了各個窄矩形面積。用鼠標(biāo)拖動圖下方的滑尺可以改變步長的值,圖的上方顯示的是這些矩形面積疊加的結(jié)果。
5、MATLAB內(nèi)的數(shù)值定積分函數(shù)在實際工作中,用MATLAB中的定積分求面積的函數(shù)quad和quadl可以得到比自編程序更高的精度,因為quad函數(shù)用的是辛普生法,即把被積函數(shù)用二次曲線逼近的算法,而quadl函數(shù)采用了更高階的逼近方法。它們的調(diào)用格式如下:Q=QUADL(FUN,A,B,TOL)其中,F(xiàn)UN是表示被積函數(shù)的字符串,A是積分下限,B是積分上限。TOL是規(guī)定計算的容差,其默認(rèn)值為1e-6例如,鍵入S=quad('-x.*x+115',0,10)得到S=8.166666666666666e+002二.求兩條曲線所圍圖形的面積
6、【例5-3-2】。設(shè)計算區(qū)間[0,4]上兩曲線所圍面積。解:◆原理:先畫出圖形,>>dx=input('dx=');x=0:dx:4;>>f=exp(-(x-2).^2.*cos(pi*x));>>g=4*cos(x-2);>>plot(x,f,x,g,':r')得到右圖。從圖上看到,其中既有f(x)>g(x)的區(qū)域,也有f(x)>g(x)的區(qū)域,求兩條曲線所圍圖形的面積(1)若要求兩曲線所圍總面積(不管正負(fù)),則可加一條語句>>s=trapz(abs(f-g))*dx,在dx=0.001時,得到s=6.47743996919702若
7、要求兩曲線所圍的f(x)>g(x)的正面積,則需要一定的技巧.◆方法一。先求出交點x1,再規(guī)定積分上下限。>>x1=fzero('exp(-(x-2).^2.*cos(pi*x))-4*cos(x-2)',1)%把積分限設(shè)定為0~x1,求出積分結(jié)果再乘以2:>>x=0:dx:x1;>>f=exp(-(x-2).^2.*cos(pi*x));>>g=4*cos(x-2);>>s1=2*trapz(abs(f-g))*dx在設(shè)定dx=0.001時,得到s1=2.30330486000857求兩條曲線所圍圖形的面積(2)方法二。調(diào)用MATL
8、AB中求面積函數(shù)quad。這里的關(guān)鍵是建立一個函數(shù)文件,把e1=f(x)-g(x)>0的部分取出來。利用邏輯算式(e1>0),它在e1>0處取值為1,在e1<0處則為零。讓邏輯函數(shù)(e1>0)與e1作元素群乘法,正的e1