(完整版)MATLAB數值積分解讀_第1頁
(完整版)MATLAB數值積分解讀_第2頁
(完整版)MATLAB數值積分解讀_第3頁
(完整版)MATLAB數值積分解讀_第4頁
(完整版)MATLAB數值積分解讀_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

6MATLAB數值積分定積分:函數f(x)在區間[a,b]上的定積分定義為其中

6.1數值積分基本原理求解定積分的數值方法多種多樣,如簡單的梯形法、辛普生(Simpson)法、牛頓-柯特斯(Newton-Cotes)法等都是經常采用的方法。它們的基本思想都是將整個積分區間[a,b]分成n個子區間[xi,xi+1],i=1,2,…,n,其中x1=a,xn+1=b。這樣求定積分問題就分解為求和問題。6.2數值積分的實現方法6.2.1變步長辛普生法基于變步長辛普生法,MATLAB給出了quad函數來求定積分。該函數的調用格式為:

[I,n]=quad('fname',a,b,tol,trace)其中fname是被積函數名。a和b分別是定積分的下限和上限。tol用來控制積分精度,缺省時取tol=0.001。trace控制是否展現積分過程,若取非0則展現積分過程,取0則不展現,缺省時取trace=0。返回參數I即定積分值,n為被積函數的調用次數。例1求定積分:(1)建立被積函數文件fesin.m。functionf=fesin(x)f=exp(-0.5*x).*sin(x+pi/6);(2)調用數值積分函數quad求定積分。[S,n]=quad('fesin',0,3*pi)6.2.2牛頓-柯特斯法基于牛頓-柯特斯法,MATLAB給出了quad8函數來求定積分。該函數的調用格式為:[I,n]=quad8('fname',a,b,tol,trace)其中參數的含義和quad函數相似,只是tol的缺省值取10-6。該函數可以更精確地求出定積分的值,且一般情況下函數調用的步數明顯小于quad函數,從而保證能以更高的效率求出所需的定積分值。例2求定積分:(1)被積函數文件fx.m。functionf=fx(x)f=x.*sin(x)./(1+cos(x).*cos(x));(2)調用函數quad8求定積分。I=quad8('fx',0,pi)例3分別用quad函數和quad8函數求定積分的近似值,并在相同的積分精度下,比較函數的調用次數。調用函數quad求定積分:formatlong;fx=inline('exp(-x)');[I,n]=quad(fx,1,2.5,1e-10)

調用函數quad8求定積分:formatlong;fx=inline('exp(-x)');[I,n]=quad8(fx,1,2.5,1e-10)6.2.3被積函數由一個表格定義trapz(x,y)為梯形積分法,x表示積分區間的離散化向量,y是與x同維數的向量,表示被積函數在x處的函數值,z返回積分值。

例4用trapz函數計算定積分。命令如下:X=1:0.01:2.5;Y=exp(-X);%生成函數關系數據向量trapz(X,Y)ans=0.285796824163936.3二重定積分的數值求解使用MATLAB提供的dblquad函數就可以直接求出上述二重定積分的數值解。該函數的調用格式為:I=dblquad(f,a,b,c,d,tol,trace)該函數求f(x,y)在[a,b]×[c,d]區域上的二重定積分。參數tol,trace的用法與函數quad完全相同。a,b

分別為x的上、下限,c,d分別為y上、下限。例5計算二重定積分(1)建立一個函數文件fxy.m:functionf=fxy(x,y)globalki;ki=ki+1;%ki用于統計被積函數的調用次數f=exp(-x.^2/2).*sin(x.^2+y);(2)調用dblquad函數求解。globalki;ki=0;I=dblquad('fxy',-2,2,-1,1)kitriplequad(‘fun’,a,b,c,d,e,f)為三維矩形區域上的三重數值積分,fun表示被積函數的M函數名,a,b分別為x的上、下限,c,d分別為

y上、下限,e,f分別為z上、下限。

其它命請同學們用help命令查閱詳細信息及調用方法。2/26/2025137MATLAB符號計算2/26/2025147.1符號對象7.1.1建立符號對象

1.建立符號變量和符號常量

MATLAB提供了兩個建立符號對象的函數:sym和syms,兩個函數的用法不同。

(1)sym函數

sym函數用來建立單個符號量,一般調用格式為:符號量名=sym('符號字符串')

該函數可以建立一個符號量,符號字符串可以是常量、變量、函數或表達式。應用sym函數還可以定義符號常量,使用符號常量進行代數運算時和數值常量進行的運算不同。2/26/202515(2)syms函數函數sym一次只能定義一個符號變量,使用不方便。MATLAB提供了另一個函數syms,一次可以定義多個符號變量。syms函數的一般調用格式為:

syms

符號變量名1符號變量名2…符號變量名n

用這種格式定義符號變量時不要在變量名上加字符串分界符(‘),變量間用空格而不要用逗號分隔。2/26/2025162.建立符號表達式含有符號對象的表達式稱為符號表達式。建立符號表達式有以下3種方法:(1)利用單引號來生成符號表達式。(2)用sym函數建立符號表達式。(3)使用已經定義的符號變量組成符號表達式。2/26/2025174.符號表達式的化簡

MATLAB提供的對符號表達式化簡的函數有:

simplify(s):應用函數規則對s進行化簡。

[r,how]=simple(S):通過對表達式嘗試多種不同的算法進行化簡,以尋求符號表達式S的最簡形式;r為返回的簡化形式,how為化簡過程中使用的主要方法,simple函數綜合使用了下列化簡方法:simplify函數對表達式進行化簡;

simple(s):調用MATLAB的其他函數對表達式進行綜合化簡,并顯示化簡過程。2/26/202518

函數subs是用指定符號替換符號表達式中的某一特定符號,調用格式為:R=subs(S,old,new),它可用新的符號變量new替換原來符號表達式S中的old.當new為數值形式時,顯示的結果雖然是數值,但它事實上是符號變量。2/26/2025197.2.3符號積分符號積分由函數int來實現。該函數的一般調用格式為:

int(s):沒有指定積分變量和積分階數時,系統按findsym函數指示的默認變量對被積函數或符號表達式s求不定積分。

int(s,v):以v為自變量,對被積函數或符號表達式s求不定積分。2/26/202520int(s,v,a,b):求定積分運算。a,b分別表示定積分的下限和上限。該函數求被積函數在區間[a,b]上的定積分。a和b可以是兩個具體的數,也可以是一個符號表達式,還可以是無窮(inf)。當函數f關于變量x在閉區間[a,b]上可積時,函數返回一個定積分結果。當a,b中有一個是inf時,函數返回一個廣義積分。當a,b中有一個符號表達式時,函數返回一個符號函數。例9-3求積分解:(1)Matlab代碼為

clear;symsx;int(x^2*sin(x))運行結果為ans=-x^2*cos(x)+2*cos(x)+2*x*sin(x)。用int及數值積分命令計算解:(1)先用int命令求精確值,相應的Matlab代碼為

clear;symsx;int(x^4,x,-2,2)運行結果為ans=64/5用trapz求數值解,相應的Matlab代碼為clear;x=-2:0.1:2;y=x.^4;%積分步長為0.1(可改變,演示)

trapz(x,y)運行結果為ans=12.8533

用quad命令,先編寫M文件

%M函數fun1.mfunctiony=fun1(x)y=x.^4;

MATLAB代碼為clear;quad(‘fun1’,-2,2)vpa(quad(‘fun1’,-2,2),10)%以10位有效數字顯示運行結果為ans=12.8000,ans=12.80000000

計算數值積分

(1)用dblquad命令求解:functionz=fun3(x,y)z=y*sin(x)+x*cos(y);

用dblquad命令求解,相應的Matlab代碼為Q=dblquad(@fun3,pi,2*pi,0,pi)運行結果為Q=-9.869604377254573先編寫M文件%M函數fun3.m(2)用int命令求解:先將重積分化成累次積分:MATLAB代碼為clear;symsxy;int(int(’y*sin(x)+x*cos(y)’,y,0,pi),x,pi,2*pi)運行結果為ans=-pi^2

計算數值積分

先編寫M文件%M函數fun4.m

functionf=fun4(x,y,z)f=y*sin(x)+z*cos(x);用dblqu

溫馨提示

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

評論

0/150

提交評論