matlab数值积分变步长,关于MATLAB数值积分及算例.ppt
MATLAB數(shù)值積分及算例
6.1 數(shù)值積分基本原理 求解定積分的數(shù)值方法多種多樣,如簡單的梯形法、辛普生(Simpson)法、牛頓-柯特斯(Newton-Cotes)法等都是經(jīng)常采用的方法。 它們的基本思想都是將整個積分區(qū)間[a, b]分成n個子區(qū)間[xi, xi+1],i=1, 2, …, n, 其中x1 = a,xn+1 = b。 這樣求定積分問題就分解為求和問題。 6.2 數(shù)值積分的實現(xiàn)方法 6.2.1 變步長辛普生法 基于變步長辛普生法,MATLAB給出了quad函數(shù)來求定積分。該函數(shù)的調(diào)用格式為: [I, n] = quad('fname', a, b, tol, trace) 其中fname是被積函數(shù)名。a和b分別是定積分的下限和上限。tol用來控制積分精度,缺省時取tol=0.001。trace控制是否展現(xiàn)積分過程,若取非0則展現(xiàn)積分過程,取0則不展現(xiàn),缺省時取trace=0。返回參數(shù)I即定積分值,n為被積函數(shù)的調(diào)用次數(shù)。 例1 求定積分: (1) 建立被積函數(shù)文件fesin.m。 function f=fesin(x) f=exp(-0.5*x).*sin(x+pi/6); (2) 調(diào)用數(shù)值積分函數(shù)quad求定積分。 [S,n]=quad('fesin',0,3*pi) (S為返回值,n是調(diào)用次數(shù)) 6.2.2 牛頓-柯特斯法 基于牛頓-柯特斯法,MATLAB給出了quad8函數(shù)來求定積分。該函數(shù)的調(diào)用格式為: [I, n] = quad8('fname', a, b, tol, trace) 其中參數(shù)的含義和quad函數(shù)相似,只是tol的缺省值取10-6。該函數(shù)可以更精確地求出定積分的值,且一般情況下函數(shù)調(diào)用的步數(shù)明顯小于quad函數(shù),從而保證能以更高的效率求出所需的定積分值。 例2 求定積分: (1) 被積函數(shù)文件fx.m。 function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x)); (2) 調(diào)用函數(shù)quad8求定積分。 I=quad8('fx',0,pi) 例3 分別用quad函數(shù)和quad8函數(shù)求定積分 的近似值,并在相同的積分精度下,比較函數(shù)的調(diào)用次數(shù)。 調(diào)用函數(shù)quad求定積分: format long; fx=inline('exp(-x)'); [I,n] = quad(fx,1,2.5,1e-10) 調(diào)用函數(shù)quad8求定積分: format long; fx=inline('exp(-x)'); [I,n]=quad8(fx,1,2.5,1e-10) 6.2.3 被積函數(shù)由一個表格定義 (要求積分,但是函數(shù)沒有直接給出,只是自己在做實驗時得到的一組相關(guān)聯(lián)的數(shù)據(jù)) 在MATLAB中,對由表格形式定義的函數(shù)關(guān)系的求定積分問題用trapz(X,Y)函數(shù)。其中向量X,Y定義函數(shù)關(guān)系Y=f(X)。 例4 用trapz函數(shù)計算定積分。 命令如下: X=1:0.01:2.5; Y=exp(-X); %生成函數(shù)關(guān)系數(shù)據(jù)向量 trapz(X,Y) ans = 0.28579682416393 6.3 二重定積分的數(shù)值求解 使用MATLAB提供的dblquad函數(shù)就可以直接求出上述二重定積分的數(shù)值解。該函數(shù)的調(diào)用格式為: I = dblquad(f,a,b,c,d,tol,trace) 該函數(shù)求f(x,y)在[a,b]×[c,d]區(qū)域上的二重定積分。參數(shù)tol,trace的用法與函數(shù)quad完全相同。 例5 計算二重定積分 (1) 建立一個函數(shù)文件fxy.m: function f=fxy(x,y) global ki; ki=ki+1; %ki用于統(tǒng)計被積函數(shù)的調(diào)用次數(shù) f=exp(-x.^2/2).*sin(x.^2+y); (2) 調(diào)用dblquad函數(shù)求解。 global ki;ki=0; I=dblquad('fxy',-2,2,-1,1) ki
總結(jié)
以上是生活随笔為你收集整理的matlab数值积分变步长,关于MATLAB数值积分及算例.ppt的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux视频采集软件,基于Video4
- 下一篇: matlab数值积分的计算