這一章節將介紹一系列典型的微積分問題(求極限、級數、定積分、導數、重積分等)在Matlab中的求解。
首先關於極限:
(1) 數列極限:
給出下面三段例程。
求解數列極限的limit函數參數說明:可以看到該函數可以有三個參數也可以有兩個參數,對於三個變量(比如說第二個例程),第一個參數是數列的通項,第二個參數是確認離散變量,因為在通項中有兩個字母a、n,第三個參數表示這個離散變量趨於某個范圍,這個函數將返回在離散變量趨於的那個范圍(第三個參數)時的極限。
當然,借助Matlab自身強大的圖像功能,我們對於求解數列極限,我們還有一個可行的方法就是得到這個數列的散點圖,通過觀察這個數列趨近於一個怎樣的數,但是散點的數量要始終,而且得到的結果很可能不准確。
那第一個例子來說:
>> n=1:50;
>> plot(n,n.^(1./n),'k.') % k.這里表示制自變量整數位置的散點圖
得到如下的大致圖像:
導數和微分在Matlab中的求解:
對於最簡單的一階導數,基於之前我們介紹的極限在Matlab中的寫法,可根據定義直接求出導函數。
定義法求導函數:
diff函數直接求導函數:
基於定義法和左右導數的概念所編寫的DerivativeDefinition函數:
function df=DerivativeDefinition(fun,x,x0,type) %DERIVATIVEDEFINITION 根據導數的定義求函數的導函數或在某點處導數值 % DF=DERIVATIVEDEFINITION(FUN,X)或 % DF=DERIVATIVEDEFINITION(FUN,X,[]) 求函數FUN關於X的導函數 % DF=DERIVATIVEDEFINITION(FUN,X,X0) 求函數FUN在點X0處的導函數 % DF=DERIVATIVEDEFINITION(FUN,X,X0,TYPE) 根據TYPE指定導數類型求函數在點X0處的導數, % TYPE有以下取值: % 1.'double'或0:雙側導數值,此為缺省值 % 2.'left'或-1:左導數 % 3.'right'或1:右導數 % DF=DERIVATIVEDEFINITION(FUN,X,[],TYPE) 根據TYPE指定導數類型求函數的導函數 % % 輸入參數: % ---FUN:符號函數表達式 % ---X:符號自變量 % ---X0:求導點 % ---TYPE:導數類型 % 輸出參數: % ---DF:返回的導函數或導數值 % % See also limit, diff if nargin<4 type=0; end if nargin==2 || isempty(x0) x0=x; end syms h delta_y=subs(fun,x,x0+h)-subs(fun,x,x0); switch type case {0,'double'} df=limit(delta_y/h,h,0); % 求導數 case {-1,'left'} df=limit(delta_y/h,h,0,'left'); % 求左導數 case {1,'right'} df=limit(delta_y/h,h,0,'right'); % 求右導數 otherwise error('The Style of Derivative is Illegal.') end
結合一個實際問題對這段代碼進行應用。
根據結果可知該點導數並不存在。
這里值得提的一點是,為了實現Matlab自定義函數功能,需要在Matlab編輯器中定義函數及其功能,然后在命令行窗口進行編程計算時直接調用即可。