第10章 數(shù)值積分計算_第1頁
第10章 數(shù)值積分計算_第2頁
第10章 數(shù)值積分計算_第3頁
第10章 數(shù)值積分計算_第4頁
第10章 數(shù)值積分計算_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28數(shù)值積分計算吳鵬(rocwoods)MATLAB從零到進(jìn)階從零到進(jìn)階數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28主要內(nèi)容主要內(nèi)容矩形區(qū)域積分以及離散數(shù)據(jù)積分矩形區(qū)域積分以及離散數(shù)據(jù)積分 含參數(shù)的積分含參數(shù)的積分一般區(qū)域二重、三重積分一般區(qū)域二重、三重積分一般區(qū)域一般區(qū)域n重積分重積分 蒙特卡洛法計算蒙特卡洛法計算n重積分重積分 數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28第一節(jié)矩形區(qū)域積分以及離散數(shù)第一節(jié)矩形

2、區(qū)域積分以及離散數(shù)據(jù)積分據(jù)積分 數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28一、一、 矩形區(qū)域積分矩形區(qū)域積分積分上下限是常數(shù),分單重、二重、三重三種情況積分上下限是常數(shù),分單重、二重、三重三種情況1. 單重單重quad (自適應(yīng)自適應(yīng)Simpson 積分積分)quadl (自適應(yīng)自適應(yīng)Gauss-Lobatto積分,最常用積分,最常用 )quadgk (自適應(yīng)自適應(yīng) Gauss-Kronrod積分,尤其適合震蕩積分、含奇點的積分,尤其適合震蕩積分、含奇點的積分;從積分;從R2007b開始支持開始支持) 具體用法參見書中具體用法參見書中【例例10

3、.1-1】 2.二重情形二重情形一般二重積分可以用下面兩個函數(shù)解決:一般二重積分可以用下面兩個函數(shù)解決:dblquadquad2d (R2009a開始支持,不僅可以求矩形區(qū)域二重積分,還可以開始支持,不僅可以求矩形區(qū)域二重積分,還可以求一般區(qū)域二重積分求一般區(qū)域二重積分)具體用法參見書中具體用法參見書中【例例10.1-2】 數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28一一 、矩形區(qū)域積分、矩形區(qū)域積分3. 三重情形三重情形MATLAB中可以利用中可以利用triplequad函數(shù)求解長方體區(qū)域的三重函數(shù)求解長方體區(qū)域的三重積分。積分。具體用法參見書

4、中具體用法參見書中【例例10.1-3】4. 向量化積分向量化積分所謂向量化積分,是指被積函數(shù)含有參數(shù),需要對參數(shù)的一所謂向量化積分,是指被積函數(shù)含有參數(shù),需要對參數(shù)的一系列值求出相應(yīng)的積分。向量話積分可以用系列值求出相應(yīng)的積分。向量話積分可以用quadv函數(shù)函數(shù) 。具體用法參見書中具體用法參見書中【例例10.1-4】數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28二、二、 離散數(shù)據(jù)積分離散數(shù)據(jù)積分離散數(shù)據(jù)積分的函數(shù)離散數(shù)據(jù)積分的函數(shù)MATLAB只有只有trapz函數(shù),是針對一重情形的,函數(shù),是針對一重情形的,如果是二重情形,需要自己編寫,其中會用到如

5、果是二重情形,需要自己編寫,其中會用到trapz函數(shù)函數(shù) 。用法示例參見書中用法示例參見書中【例例10.1-5】 以及以及【例例10.1-6】 數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28第二節(jié)第二節(jié) 含參數(shù)的積分含參數(shù)的積分 數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28在解決實際問題的時候我們常要求解一些帶參數(shù)的積分問題,在解決實際問題的時候我們常要求解一些帶參數(shù)的積分問題,這涉及到參數(shù)的傳遞,總的說來有以下幾種方法可以求解:這涉及到參數(shù)的傳遞,總的說來有以下幾種方法可以求解:用用inline+n

6、um2str方法方法(MATLAB7.0以前版本使用,以前版本使用,7.0以后不以后不推薦使用推薦使用)利用匿名函數(shù)實現(xiàn)利用匿名函數(shù)實現(xiàn)利用嵌套函數(shù)實現(xiàn)利用嵌套函數(shù)實現(xiàn)利用積分函數(shù)本身傳遞參數(shù)利用積分函數(shù)本身傳遞參數(shù)這幾種方法的具體實現(xiàn)辦法可以參見這幾種方法的具體實現(xiàn)辦法可以參見【例例10.2-1】 。數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28第三節(jié)第三節(jié) 一般區(qū)域二重、三重積分一般區(qū)域二重、三重積分 數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28一、一、 概要概要一般區(qū)域上的二重積分,低版本的一般

7、區(qū)域上的二重積分,低版本的MATLAB向來支持不好,向來支持不好,7.X版本之前不能通過簡單的形式直接求取一般區(qū)域上的的二重積版本之前不能通過簡單的形式直接求取一般區(qū)域上的的二重積分,往往要借助廣泛流傳的分,往往要借助廣泛流傳的NIT工具箱(數(shù)值積分工具箱)來實工具箱(數(shù)值積分工具箱)來實現(xiàn)。后來到了現(xiàn)。后來到了7.X版本,版本,MATLAB引入了匿名函數(shù)結(jié)構(gòu),引入了匿名函數(shù)結(jié)構(gòu),dblquad的的被積函數(shù)可以是匿名函數(shù)的形式,利用匿名函數(shù)結(jié)構(gòu),通過適當(dāng)改被積函數(shù)可以是匿名函數(shù)的形式,利用匿名函數(shù)結(jié)構(gòu),通過適當(dāng)改寫被積函數(shù)。寫被積函數(shù)。dblquad可以求解一般區(qū)域上的二重積分。但這種改可以求

8、解一般區(qū)域上的二重積分。但這種改寫就是將積分區(qū)域表示成邏輯表達(dá)式形式并與被積函數(shù)相乘,本質(zhì)寫就是將積分區(qū)域表示成邏輯表達(dá)式形式并與被積函數(shù)相乘,本質(zhì)上還是上還是 計算的矩形區(qū)域的積分。計算的矩形區(qū)域的積分。仔細(xì)分析仔細(xì)分析dblquad的幫助文檔中求一般區(qū)域二重積分的例子就的幫助文檔中求一般區(qū)域二重積分的例子就會發(fā)現(xiàn),這種辦法是把原被積函數(shù)外推到了一個矩形區(qū)域上來實現(xiàn)會發(fā)現(xiàn),這種辦法是把原被積函數(shù)外推到了一個矩形區(qū)域上來實現(xiàn)的,該矩形區(qū)域包含了被積區(qū)域,在被積區(qū)域上,外推函數(shù)取值和的,該矩形區(qū)域包含了被積區(qū)域,在被積區(qū)域上,外推函數(shù)取值和原函數(shù)一樣,而在矩形區(qū)域內(nèi)被積區(qū)域外的那部分,外推函數(shù)取

9、值原函數(shù)一樣,而在矩形區(qū)域內(nèi)被積區(qū)域外的那部分,外推函數(shù)取值都為都為0.這樣外推函數(shù)在矩形區(qū)域上積分的結(jié)果就等于原被積函數(shù)在這樣外推函數(shù)在矩形區(qū)域上積分的結(jié)果就等于原被積函數(shù)在被積區(qū)域的結(jié)果。這種數(shù)學(xué)上簡單的變換導(dǎo)致的結(jié)果就是,按這種被積區(qū)域的結(jié)果。這種數(shù)學(xué)上簡單的變換導(dǎo)致的結(jié)果就是,按這種辦法,計算量大增,特別是被積區(qū)域非常不規(guī)則并布滿整個矩形區(qū)辦法,計算量大增,特別是被積區(qū)域非常不規(guī)則并布滿整個矩形區(qū)域的時候。域的時候。 數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28一、一、 概要概要從從MATLAB R2009a版本起,版本起,MATLAB終

10、于有了專門求解一般區(qū)終于有了專門求解一般區(qū)域域二重積分的函數(shù)二重積分的函數(shù)quad2d,該函數(shù)采用的自適應(yīng)積分算法基于,該函數(shù)采用的自適應(yīng)積分算法基于L.F. Shampine 的文章:的文章:Vectorized Adaptive Quadrature in MATLAB, Journal of Computational and Applied Mathematics, 211, 2008。該函數(shù)。該函數(shù)求解一般區(qū)域二重積分的效率要遠(yuǎn)高于上面提到的求解一般區(qū)域二重積分的效率要遠(yuǎn)高于上面提到的dblquad的方法。的方法。雖然雖然quad2d可以求解一般區(qū)域二重積分,但還是不能直接求解一可以

11、求解一般區(qū)域二重積分,但還是不能直接求解一般般區(qū)域三重積分,而區(qū)域三重積分,而NIT工具箱也沒有一般區(qū)域三重積分的計算函數(shù)工具箱也沒有一般區(qū)域三重積分的計算函數(shù) 。這些需要靈活運用這些需要靈活運用MATLAB相關(guān)函數(shù)來構(gòu)建。相關(guān)函數(shù)來構(gòu)建。 數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28二、一般區(qū)域二重積分的計算二、一般區(qū)域二重積分的計算 dblquad求解一般區(qū)域二重三重積分的思路方法,就是將被積函數(shù)求解一般區(qū)域二重三重積分的思路方法,就是將被積函數(shù)“延延拓拓”到矩形或者長方體區(qū)域,但是這種方法不可避免引入很多乘到矩形或者長方體區(qū)域,但是這種方法

12、不可避免引入很多乘0運算浪運算浪費時間。而費時間。而quad2d雖然效率很高,但是雖然效率很高,但是R2009a之前沒有這個函數(shù)。因之前沒有這個函數(shù)。因此,要想在此,要想在2009a之前的之前的MATLAB7版里里計算一般區(qū)域二重三重積版里里計算一般區(qū)域二重三重積分,需要開辟新的方法。新的方法是調(diào)用已有的分,需要開辟新的方法。新的方法是調(diào)用已有的MATLAB函數(shù)求解,函數(shù)求解,在求一般區(qū)域二重積分時,效率和在求一般區(qū)域二重積分時,效率和quad2d相比有一些差距,但是相對相比有一些差距,但是相對于于“延拓延拓”函數(shù)的做法,效率大大提高了函數(shù)的做法,效率大大提高了 ?!纠?0.3-2】和和【例

13、例10.3-3】給出了這一方法的應(yīng)用實例,可以看出該方給出了這一方法的應(yīng)用實例,可以看出該方法在法在R2009a以前的版本中不失為一種方法,效率要明顯高于以前的版本中不失為一種方法,效率要明顯高于dblquad幫幫助文檔里推薦的做法。更重要的是,這給我們求解一般區(qū)域三重積分提助文檔里推薦的做法。更重要的是,這給我們求解一般區(qū)域三重積分提供了一種途徑。供了一種途徑。數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28三、一般區(qū)域三重積分的計算三、一般區(qū)域三重積分的計算模板模板1:quadl(x) arrayfun(xx) quad2d(被積函數(shù)被積函數(shù)f(

14、xx,y,z)關(guān)于關(guān)于y,z變量的函數(shù)句變量的函數(shù)句柄柄,y積分下限積分下限y1(xx),y積分上限積分上限y2(xx),z積分下限積分下限z1(xx,y),z積分上限積分上限z2(xx,y),x),x積分下限值積分下限值,x積分上限值積分上限值)模板模板2:quad2d(x,y) arrayfun(xx,yy) quadl(被積函數(shù)被積函數(shù)f(xx,yy,z)關(guān)于關(guān)于z變量的函數(shù)變量的函數(shù)句柄句柄,z積分下限積分下限z1(xx,yy),z積分上限積分上限z2(xx,yy),x,y),x積分下限值積分下限值,x積分上限值積分上限值,y積分下限積分下限y1(x),y積分上限積分上限y2(x) 模

15、板模板3:quadl(x) arrayfun(xx) quadl(y) arrayfun(yy) quadl(被積函數(shù)被積函數(shù)f(xx,yy,z)關(guān)于關(guān)于z變量的函數(shù)句柄變量的函數(shù)句柄,z積分下限積分下限z1(xx,yy),z積分上限積分上限z2(xx,yy),y),y積積分下限分下限y1(xx),y積分上限積分上限y2(xx),x),x積分下限值積分下限值,x積分上限值積分上限值)模板使用說明:模板使用說明:x,y,z是積分變量,模板中除了用語言描述的參量用相應(yīng)表達(dá)式是積分變量,模板中除了用語言描述的參量用相應(yīng)表達(dá)式替換掉外,其余結(jié)構(gòu)保持不變。替換掉外,其余結(jié)構(gòu)保持不變。 具體使用示例可以參

16、考具體使用示例可以參考【例例10.3-4】 數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28第四節(jié)第四節(jié) 一般區(qū)域一般區(qū)域n重積分的計算重積分的計算數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28介紹求解一般區(qū)域介紹求解一般區(qū)域n重積分的函數(shù)重積分的函數(shù)nIntegrate f = nIntegrate(fun,low,up) f為函數(shù)的返回值是為函數(shù)的返回值是n重積分積分結(jié)果。重積分積分結(jié)果。 fun是被積函數(shù)字符串形式,不同的變量依次以是被積函數(shù)字符串形式,不同的變量依次以x1,x2,.xn表示,(需要

17、注意的表示,(需要注意的是,必須以是,必須以x1,x2,.xn這種形式表示,其余像這種形式表示,其余像y1,y2,.yn或是其他表示方法都不或是其他表示方法都不行)。行)。 low和和up都是長度為都是長度為n的的cell數(shù)組,數(shù)組,low存儲從外到內(nèi)各重積分的積分下限函數(shù),存儲從外到內(nèi)各重積分的積分下限函數(shù),up存儲從外到內(nèi)各重積分的積分上限函數(shù)(都是字符串形式)。存儲從外到內(nèi)各重積分的積分上限函數(shù)(都是字符串形式)。low和和up內(nèi)的函內(nèi)的函數(shù)表示都要遵循一些原則,這些原則在程序注釋里進(jìn)行了說明數(shù)表示都要遵循一些原則,這些原則在程序注釋里進(jìn)行了說明 .nIntegrate函數(shù)源代碼以及使用

18、示例參考書中相關(guān)內(nèi)容以及函數(shù)源代碼以及使用示例參考書中相關(guān)內(nèi)容以及【例例10.4-1】至至【例例10.4-4】數(shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28第五節(jié)第五節(jié) 蒙特卡洛法計算蒙特卡洛法計算n重積分重積分?jǐn)?shù)值積分計算數(shù)值積分計算 吳鵬吳鵬, MATLAB從零到進(jìn)階從零到進(jìn)階. 2022-5-28一些積分重數(shù)比較高的積分,按照傳統(tǒng)方法進(jìn)行計算的話,運算量會非一些積分重數(shù)比較高的積分,按照傳統(tǒng)方法進(jìn)行計算的話,運算量會非常大,求解時間隨著重數(shù)的增加而迅速增加。在常大,求解時間隨著重數(shù)的增加而迅速增加。在10.4節(jié)雖然給出了一般區(qū)域節(jié)雖然給出了一般區(qū)域n重積分的通用程序,但是在實際計算中,重積分的通用程序,但是在實際計算中,n不會很大,一般不會很大,一般n超過超過5后,求解時后,求解時間就會長到無法接受。對于更高維的積分,一個非常有效的求解方法就是蒙間就會長到無法接受。對于更高維的積分,一個非常有效的求解方法就是蒙特卡洛積分法特卡洛積分法 。蒙特卡洛方法又稱隨機抽樣法或統(tǒng)計試驗方法,它用于求積分時,與積蒙特卡洛方法又稱隨機抽樣法或統(tǒng)計試驗方法,它用于求積分時,與積分重數(shù)無關(guān),這點非常重要。雖然四維以下的積分用蒙特

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論