matlab数值积分变步长,关于MATLAB数值积分及算例.ppt
MATLAB數值積分及算例
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。 function f=fesin(x) f=exp(-0.5*x).*sin(x+pi/6); (2) 調用數值積分函數quad求定積分。 [S,n]=quad('fesin',0,3*pi) (S為返回值,n是調用次數) 6.2.2 牛頓-柯特斯法 基于牛頓-柯特斯法,MATLAB給出了quad8函數來求定積分。該函數的調用格式為: [I, n] = quad8('fname', a, b, tol, trace) 其中參數的含義和quad函數相似,只是tol的缺省值取10-6。該函數可以更精確地求出定積分的值,且一般情況下函數調用的步數明顯小于quad函數,從而保證能以更高的效率求出所需的定積分值。 例2 求定積分: (1) 被積函數文件fx.m。 function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x)); (2) 調用函數quad8求定積分。 I=quad8('fx',0,pi) 例3 分別用quad函數和quad8函數求定積分 的近似值,并在相同的積分精度下,比較函數的調用次數。 調用函數quad求定積分: format long; fx=inline('exp(-x)'); [I,n] = quad(fx,1,2.5,1e-10) 調用函數quad8求定積分: format long; fx=inline('exp(-x)'); [I,n]=quad8(fx,1,2.5,1e-10) 6.2.3 被積函數由一個表格定義 (要求積分,但是函數沒有直接給出,只是自己在做實驗時得到的一組相關聯的數據) 在MATLAB中,對由表格形式定義的函數關系的求定積分問題用trapz(X,Y)函數。其中向量X,Y定義函數關系Y=f(X)。 例4 用trapz函數計算定積分。 命令如下: X=1:0.01:2.5; Y=exp(-X); %生成函數關系數據向量 trapz(X,Y) ans = 0.28579682416393 6.3 二重定積分的數值求解 使用MATLAB提供的dblquad函數就可以直接求出上述二重定積分的數值解。該函數的調用格式為: I = dblquad(f,a,b,c,d,tol,trace) 該函數求f(x,y)在[a,b]×[c,d]區域上的二重定積分。參數tol,trace的用法與函數quad完全相同。 例5 計算二重定積分 (1) 建立一個函數文件fxy.m: function f=fxy(x,y) global ki; ki=ki+1; %ki用于統計被積函數的調用次數 f=exp(-x.^2/2).*sin(x.^2+y); (2) 調用dblquad函數求解。 global ki;ki=0; I=dblquad('fxy',-2,2,-1,1) ki
總結
以上是生活随笔為你收集整理的matlab数值积分变步长,关于MATLAB数值积分及算例.ppt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux视频采集软件,基于Video4
- 下一篇: windows10查看驱动程序安装错误日