matlab计算微分ppt,matlab-ch013(数值计算-微积分)20090923.ppt
matlab-ch013(數值計算-微積分)20090923.ppt
第13講 數值計算 —微積分,張建瓴,§13.1 數值積分,在工程教學和應用中,除了進行數據逼近外,還要求逼近曲線下面的面積,這就是積分問題。,一、數值積分方法,典型的數值積分方法有:用常數(0階多項式)近似函數矩形法;用直線(一階多項式)近似函數曲線的梯形法;用拋物線(二階多項式)近似函數曲線的Simpson法,以及用一般多項式近似函數的Romberg法等。 y=sin(x^3)*sqrt(x) x求y, 表13-1列出了函數數值積分的一些命令。,表13-1 函數數值積分的命令,,常見的一元數值積分命令,MATLAT提供了在有限區間內,數值計算某函數下的面積(積分)的三種函數:trapz,quad和quad8。,二、一(元)維數值積分,1、trapz函數 函數trapz通過計算若干梯形面積的和來近似某函數的積分,這些梯形如圖13-1所示,是通過使用函數humps的數據點形成。,圖13-2 較好的梯形逼近曲線下的面積示意圖 從圖中可明顯地看出,單個梯形的面積在某一段欠估計了函數真正的面積,而在其它段又過估計了函數的真正面積。如同線性插值,當梯形數目越多時,函數的近似面積越準確。例如,在圖13-1中,如果我們大致增加一倍數目的梯形,我們得到如下(如圖13-2)所示的更好的近似結果。,trapz 函數,對如上所示的兩個曲線,用trapz在區間-1>x=-1: 0.17: 2; % rough approximation >>y=humps(x); >>area=trapz(x, y) % call trapz just like the plot command area = 25.9174,trapz 函數的應用,>>x=-1: 0.07: 2; % better approximation >>y=humps(x); >>area=trapz(x , y) area = 26.6243 上述兩個結果不同是基于對圖形的觀察,粗略近似可能低估了實際面積。除非特別精確,沒有準則說明哪種近似效果更好。,trapz 函數的應用,MATLAB提供的求積函數命令quad和quad8在使用時,其遞推的層次限制在十層以內,達到這個限制則會提示警告信息,并且這兩個函數命令都不能解決可積的奇異值問題,例如,求解 。,quad函數和quad8函數,函數quad和quad8完整的調用格式為: (1)q=quad( fun ,a,b,tol,trace,pl,p2,…) 采用Simpson法計算積分; (2)q=quad8( fun ,a,b,tol,trace,p1,p2,…) 采用八樣條Newton-Cotes公式求數值積分。 其中:fun是被積函數,可以是表達式字符串、內聯函數、M函數文件名,被積函數的自變量,一般采用字母x; a、b分別是積分的上、下限,都是確定的值;,quad和quad8函數調用格式,tol是一個二元向量,它的第一個元素用來控制相對誤差,第二個元素用來控制絕對誤差,缺省時積分的相對精度為0.001; trace如果取非零值時,將以動態圖形的形式展現積分的整個過程,若取零值,則不畫圖,其缺省值是0; pl和p2是向被積函數傳遞的參數。 在上面的調用格式中,前三個輸入參數是調用時必須的,而后面的輸入參數可缺省。,quad和quad8的參數,MATLAB的函數quad和quad8是基于數學上的正方形概念來計算函數的面積。為獲得更準確的結果,兩個函數在所需的區間都要計算被積函數。 與簡單的梯形比較,這兩個函數進行更高階的近似,而且quad8比quad更精確。這兩個函數的調用方法與fzero相同,即 >>area=quad(‘humps‘,-1,2) % find area between -1 and 2 area = 26.3450,quad和quad8函數的調用,>>area=quad8(‘humps‘,-1,2) area = 26.3450 注意: 這兩個函數返回完全相同的估計面積,而且這個估計值在兩個trapz面積的估計值之間。,quad和quad8函數的調用,求函數的數值積分 (1)建立函數funq function y=funq(x) y=x.^3+x.^2+2; (2)對被積函數funq進行數值積分 q=quad( funq ,-1,1,le-4) %使用quad命令求數值積分 q= 4.6667,[例13-1] example13_1.m,q8=quad8( funq ,-1,1,le-4,1) %用quad8命令求數值積分 q8= 4.6667 程序的運行結果顯示出積分的過程如圖13-3所示。,[例13-1],,一元函數積分中存在的問題,同樣存在于多重積分中。 1、積分限為常數的二重積分 多重積分使用函數dblquad,其完整的調用格式為: result=dblquad( fun ,inmin, inmax, outmin, outmax, tol, ) 其中:輸入參數fun是被積函數,可以直接用字符串內聯函數或M函數文件表達,但不論什么形式,該被積函數應有兩個變量,即內變量和外變量。內變量接受向量輸入,外變量接受標量輸入。被積函數的輸出是與內變量同長的向量。,三、多重數值積分,輸入參數inmin,inmax是內變量的下限和上限; outmin、outmax是外變量的下限和上限; tol的含義與命令quad中的情況相同; 是積分方法選項,如“quad”和“quad8”等。 注意: 該命令不適用于內積分區間上、下限為函數的情況。,dblquad函數的參數,求積分上下限都為常數的二重積分,被積函數為y*sin(x)+s*cos(y),其中x的取值范圍是π到2π,y的取值范圍是0到π。 (1)建立名為integrnd的M文件 fimction out=integrnd(x,y) out=y*sin(x)+x*cos(y) (2)用函數dblquad命令來求integrnd的二重積分 result=dblquad( integrnd ,pi,2*pi,0,pi) result= -9.8698,〖例13-6〗 example13_6.m,對于內積分上下限是外積分變量的函數的積分問題,求解過程較為麻煩。 一般方法都是先求出 ,然后再求 。,2、內積分上下限為函數的二重積分,,,【例13-10】計算。 (1)編寫內積分區間上下限的M函數文件 [x_low.m] function f=x_low(y) f=sqrt(y); (2)編寫被積函數 被積函數函數采用內聯函數ff=inline( x.^2+y.^2 , x , y )表示。 (3)被積函數用內聯函數表達時,運行以下指令,即得結果 >>ff=inline( x.^2+y.^2 , x , y );%被積函數的內聯函數表達 >>SS=double_int(ff, x_low ,2,1,4) SS = 9.5810 (4)本題用符號計算很容易獲得高精度解 >>Ssym=vpa(int(int( x^2+y^2 , x , sqrt(y) ,2), y ,1,4)) Ssym = 9.580952380952381,
總結
以上是生活随笔為你收集整理的matlab计算微分ppt,matlab-ch013(数值计算-微积分)20090923.ppt的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 硬件监测软件 CapFrameX 1.7
 - 下一篇: 下跌中放量跌停会怎么样?