Make your own free website on Tripod.com

挑戰題

MATLAB提供最簡單的積分函數是梯形法trapz,我們先說明梯形法語法trapz(x,y),其中x,y分別代表數目相同的陣列或矩陣,而yx關係可以由是一函數型態(如y=sin(x))或是不以函數描述的離散型態(像第八章介紹的xy皆為離散點)。

我們看一簡單積分式

1,以下為 MATLAB 的程式

>> x=0:pi/100:pi;

>> y=sin(x);

>> k=trapz(x,y)

k =

MATLAB 另外提供二種積分函數,它們分別是辛普森法 quad 和牛頓-康茲法 quad8三種方法的精確度由低而高,分別為 trapz, quad, quad8

由於這二種方法依據的積分法不同於梯形法,因此它們的語法就和 trapz 不同;其語法為 quad('function',a,b) quad8語法相同),其中function是一已定義函數的名稱(如sin, cos, sqrt, log 等),而 a, b是積分的下限和上限。和 trapz比較,quad, quad8不同之處在於這二者類似解析式的積分式,只須設定上下限及定義要積分的函數;而 trapz則是針對離散點型態的數據做積分。

以下為 MATLAB 的程式

2,>> a=0; b=0.5;

>> kq=quad('sqrt',a,b)

kq =

3,>> kq8=quad8('sqrt',a,b)

kq8 =

再來看一個較複雜的積分式

4,>> x=-1:0.17:2;

>> y=humps(x);

>> area=trapz(x,y)

area =

5,>> x=-1:0.07:2;

>> y=humps(x);

>> area=trapz(x,y)

area =

6,>> area=quad('hump',-1,2)

area =

7,>> area=quad8('hump',-1,2)

area =

int函數用以演算一函數的積分項, 這個函數要找出一符號式 F 使得diff(F)=f如果積分式的解析式 (analytical form, closed form) 不存在的話或是MATLAB無法找到,則 int 傳回原輸入的符號式。相關的函數語法有下列 4個:

int(f) 傳回f對預設獨立變數的積分值

int(f,'t') 傳回f對獨立變數t的積分值

int(f,a,b) 傳回f對預設獨立變數的積分值,積分區間為[a,b]ab為數值式

int(f,'t',a,b) 傳回f對獨立變數t的積分值,積分區間為[a,b]ab為數值式

int(f,'m','n') 傳回f對預設變數的積分值,積分區間為[m,n]mn為符號式

我們示範幾個例子:

8>>S1 = '6*x^3-4*x^2+b*x-5';

>>S2 = 'sin(a)';

>>S3 = 'sqrt(x)';

>>int(S1)

ans=

9>>int(S2)

ans=

10>>int(S3)

ans=

11>>int(S3,'a','b')

ans=

12>>int(S3,0.5,0.6)

ans=

13>>numeric(int(S3,0.5,0.6)) % 使用numeric函數可以計算積分的數值

ans=

 上一 頁         微分答案          積分答案