1. 程式人生 > >Matlab從入門到精通(三)

Matlab從入門到精通(三)

1、求組合數

,則輸入:

nchoosek(n,k)

例:nchoosek(4,2) = 6.

2、求階乘

求n!.則輸入:

Factorial(n).

例:factorial(5) = 120.

3、求全排列

perms(x).

例:求x = [1,2,3];

Perms(x),輸出結果為:

ans =

     3     2     1

     3     1     2

     2     3     1

     2     1     3

     1     2     3

     1     3     2

4、求指數

求a^b:Power(a,b) ;

例:求2^3 ;

Ans = pow(2,3) ;

5、求向量的指數

求向量p=[1 2 3 4]'的三次方:p.^3

例:

p=[1 2 3 4]'

A=[p,p.^2,p.^3,p.^4]

結果為:

注意:在p與符號”^”之間的”.”不可少.

6、求自然對數

求ln(x):Log(x)

例:log(2) =   0.6931

7、多項式的乘法運算

8、多項式除法

函式[q,r]=deconv(p1,p2)用於多項式p1和p2作除法運算,其中q返回多項式p1除以p2的商式,r返回p1除以p2的餘式。這裡,q和r仍是多項式係數向量。

9、求一個向量的最大值

求一個向量x的最大值的函式有兩種呼叫格式,分別是:

(1)max(x):返回向量x的最大值,如果x中包含複數元素,則按模取最大值。

(2)[y, i]=max(x):返回向量x的最大值存入y,最大值的序號存入i,如果x中包含複數元素,則按模取最大值。

求向量x的最小值函式是min(x),用法與max(x)完全相同。

10、求和與求積

資料序列求和與求積函式是sum和prod,其使用方法類似。設x是一個向量,A是一個矩陣,函式的呼叫格式為:

sum(x):返回向量x各元素之和。

Sum(A,1):返回矩陣A的列求和後的行向量

Sum(A,2):返回矩陣A的行求和後的列向量

prod(x):返回向量x各元素的乘積。

sum(A):返回一個行向量,其第i個元素是A的第i列的元素之和。

prod(A):返回一個行向量,其第i個元素是A的第i列的元素乘積。

sum(A,dim):當dim為1時,該函式等同於sum(A);當dim為2時,返回一個列向量,其第i個元素是A的第i行的元素之和。

prod(A,dim):當dim為1時,該函式等同於prod(A);當dim為2時,返回一個列向量,其第i個元素是A的第i行的元素乘積。

cumsum(X):返回一個X中的向量的累計和的向量,也就是第i個元素為恰i-1個元素之和.

cumsum(A):返回一個與A同樣大小的矩陣,它的列是A中列的累計和.

【例一】:

a =

 

    -4    -4    -4    -4

 

>> cumsum(a)

 

ans =

 

-4    -8   -12   -16

【例二】:

>> A=[1 2 3;4 5 6;7 8 9];

>> cumsum(A)

 

ans =

 

     1     2     3

     5     7     9

           12    15    18

11、平均值、標準方差及中值

MATLAB提供了mean,std函式來計算平均值、標準方差或方差。這些函式的呼叫方法如下:

mean(x):返回向量x的算術平均值。

std(x):返回向量x的標準方差。

對於矩陣A,mean函式的一般呼叫格式為:

y=mean(A,dim)

這裡,dim取1或2。當dim=1時,返回一個行向量y,y的第i個元素是A的第i列元素的平均值;當dim=2時,返回一個列向量y,y的第i個元素是A的第i行元素的平均值。

對於矩陣A,std函式的一般呼叫格式為:

y=std(A,flag,dim)

這裡,dim取1或2。當dim=1時,求各列元素的標準方差;當dim=2時,求各行元素的標準方差。flag取0或1,當flag=0時,按計算標準方差;當flag=1時,按計算方差。預設flag=0,dim=1。

median(X):求向量X中的中值;

median(A.dim):求矩陣A中的第dim維的各列中的中值.

【例一】

>> X = [-2 12 9 20 32 0];

>> median(X)

 

ans =

 

   10.5000

【例二】

>> A = [1 2 3;4 5 6;7  1 0];

>> median(A)

ans =

     4     2     3

12、相關係數

對於兩組資料序列,其相關係數的計算, MATLAB提供了corrcoef函式來計算相關係數,corrcoef函式的呼叫格式為:

r=corrcoef(x,y)

13、排序

對向量元素的進行排序是一種經常性的操作,MATLAB提供了sort函式對向量x進行排序。

y=sort(x):返回一個對x中元素按升序排列後的向量y。

[y,i]=sort(x):返回一個對x中的元素按升序排列的向量y,而i記錄y中元素在x中的位置。

14、多項式的求導

對多項式求導數的函式是:

p=polyder(p1):求多項式p1的導函式。

p=polyder(p1,p2):求多項式p1和p2乘積的導函式。

[p,q]=polyder(p1,p2):求多項式p1和p2之商的導函式,p、q是導函式的分子、分母。

例: 求有理分式的導函式。

命令如下:

p1=[1,-1];

p2=[1,-1,3];

[p,q]=polyder(p1,p2)

15、多項式的求值

polyval函式用來求代數多項式的值,其呼叫格式為:

y=polyval(p,x)

若x為一數值,則求多項式在該點的值;若x為向量,則對向量中的每個元素求其多項式的值。

例: 求多項式在點1,2,3,4的值。

命令如下:

p=[1,2,1];

x=1:4;

y=polyval(p,x)

y =

 

     4     9    16    25

roots函式用來求代數多項式的根,其呼叫格式為:

x=roots(p)

如果x為向量,則p=poly(x)可以建立一個以x為其根的多項式。

16、多項式的求根

roots函式用來求代數多項式的根,其呼叫格式為:

x=roots(p)

如果x為向量,則p=poly(x)可以建立一個以x為其根的多項式。

例:求多項式的根。

命令如下:

p=[1,-6,11,-6];

x=roots(p)

x =

    3.0000

    2.0000

    1.0000

如果鍵入命令p=poly(x),則可得到以3,2,1為根的三次多項式的係數

p =

    1.0000   -6.0000   11.0000   -6.0000

17、單變數非線性方程的求根

MATLAB還提供了一個fzero函式,可以用來求單變數非線性方程的求根。該函式的呼叫格式為:

z=fzero(‘fname’,x0)

其中fname是待求根的函式檔名,x0為搜尋的起點。一個函式可能有多個根,但fzero函式只能給出離x0最近的那個根。

例: 

命令如下:

fzero('x-10^x+2',0.5)

ans =

    0.3758

18、求單變數函式的最小值點

其呼叫格式為:

x=fminbnd(‘fname’,x1,x2)

這裡,fname是目標函式名,x1和x2限定自變數的取值範圍,而x0是搜尋起點的座標。

例:求一元函式在[0,5]內的最小值點。

命令如下:

fminbnd('x^3-2*x-5', 0, 5)

ans =

    0.8165

 

19、求多變數函式的最小值點

其呼叫格式為:

x=fminsearch(‘fname’,x0)

例:

建立函式檔案f.m。

function w=f(p)

  x=p(1);

y=p(2);

z=p(3);

  w=x+y^2/(4*x)+z^2/y+2/z;

呼叫fminsearch函式求多元函式在[1/2,1/2,1/2]附近的最小值點。

w=fminsearch('f ',[1/2,1/2,1/2])

w =

    0.5000    1.0000    1.0000

計算多元函式的最小值。

f(w)

ans =

    4.0000

20、求函式的最大值點

MATLAB沒有專門提供求函式最大值點的函式,當需要求函式在區間(a,b)上最大值點時,可將它轉化為求-f(x)在(a,b)上的最小值點。

21、建立單個符號量(sym函式)

sym函式用來建立單個符號量,一般呼叫格式為:

符號變數名=sym(‘符號字串’)

該函式可以建立一個符號量,符號字串可以是常量、變數、函式或表示式。

例如,a=sym(‘a’)將建立符號變數a,此後,使用者可以在表示式中使用變數a進行各種運算。符號變數a和在其他過程中建立的非符號變數a是不同的。一個非符號變數在參與運算前必須賦值,變數的運算實際上是該變數所對應值的運算,其運算結果是一個和變數型別對應的值,而符號變數參與運算前無須賦值,其結果是一個由參與運算的變數名組成的表示式。下面的命令及其運算結果,說明了符號變數與非符號變數的差別。

在MATLAB命令視窗,輸入以下命令:

a=sym('a');         %定義符號變數a,b

b=sym('b');

 

p1=sym('pi');        %定義符號常量

a=sym('3');

b=sym('4');

p2=pi;              %定義數值常量

x=3;

y=4;

sin(p1/3)            %符號計算

ans =

 1/2*3^(1/2)

sin(p2/3)            %數值計算

ans =

    0.8660

cos((a+b)^2)-sin(pi/4)  %符號計算

ans =

 cos(49)-1/2*2^(1/2)

cos((x+y)^2)-sin(pi/4)  %數值計算

ans =

   -0.4065

 

22、建立多個符號量(syms函式)

函式sym一次只能定義一個符號變數,使用不方便。MATLAB提供了另一個函式syms,一次可以定義多個符號變數。syms函式的一般呼叫格式為:

syms 符號變數名1 符號變數2 … 符號變數n

用這種格式定義符號變數時,變數間用空格而不要用逗號分隔。例如,用syms函式定義4個符號變數a,b,命令如下:

syms a b

23、建立符號表達式

含有符號物件的表示式稱為符號表達式。建立符號表達式有以下3種方法:

(1)利用單引號來生成符號表達式。例如

y='1/sqrt(2*x)'

y =

1/sqrt(2*x)

(2)利用sym函式建立符號表達式。例如

z=sym('3*x^2-5*y+2*x*y+6')

z =

 3*x^2-5*y+2*x*y+6

A=sym('[a,b;c,d]')

 A =

 [ a, b]

[ c, d]

第一條命令建立一個符號函式表示式,第二條命令生成一個符號矩陣。

(3)利用已經定義的符號變數組成符號表達式。例如

syms x y;

z=3*x^2-5*y+2*x*y+6

z =

3*x^2-5*y+2*x*y+6

24、符號表達式中變數的確定

利用函式findsym(s)可以確定符號表達式s中的全部符號變數。例如:

syms a b x y;       %定義4個符號變數

c=sym('3');         %定義1個符號常量

s=3*x+y;

findsym(s)

ans =

x, y

findsym(5*x+2)

ans =

x

findsym(a*x+b*y+c) %符號變數c不會出現在結果中

ans =

a, b, x, y

25、符號表達式四則運算

符號表達式的加、減、乘、除和冪運算可分別由函式symadd、symsub、symmul、symdiv和sympow來實現。例如

f='2*x^2+3*x-5'

f =

2*x^2+3*x-5

g='x^2-x+7'

g =

x^2-x+7

symadd(f,g)            %加法運算

ans =

 3*x^2+2*x+2

sympow(f,'2*x')        %乘冪運算

ans =

 (2*x^2+3*x-5)^(2*x)

26、符號表達式的因式分解與展開

符號表達式的因式分解和展開運算,可用函式factor和expand來實現,其呼叫格式為:

factor(s):對符號表達式s分解因式。

expand(s):對符號表達式s進行展開。

例如:

syms x y;

s1=x^3-6*x^2+11*x-6

s1 =

 x^3-6*x^2+11*x-6

factor(s1)

ans =

 (x-1)*(x-2)*(x-3)

s2=(x-y)*(x+y)

s2 =

 (x-y)*(x+y)

expand(s2)

ans =

 x^2-y^2

27、常量符號表達式與數值表示式之間的轉換

利用函式sym可以將數值表示式轉換成符號表達式。例如:

sym(1.5)

ans =

 3/2

利用函式eval可以將符號表達式轉換成數值表示式。例如:

x='(1+sqrt(5))/2'

x =

(1+sqrt(5))/2

eval (x)

ans =

    1.6180

y='3/2'

y =

3/2

eval (y)

ans =

1.5000

28、極限計算

syms x y a ;

z = exp(-1/(x.^2+y.^2))*sin(x).^2/x.^2*(1+1/y.^2).^(x+a.^2*y.^2);

res = limit(limit(z,x,1/sqrt(y)),y,inf);

syms x y ;

z = (1-cos(x.^2+y.^2))/((x.^2+y.^2)^2*exp(x.^2+y.^2));

res = limit(limit(z,x,0),y,0);

29、符號導數

diff函式用於對符號表達式求導數。該函式的一般呼叫格式為:

diff(s, x, n):對符號表達式或符號函式s關於x求n階導數,當n預設時,表示求一階導數。

導數:

syms x a;

diff(‘exp(-a*x^2)+x’,x)

syms x y;

z = x*log(x*y);

res1 = diff(z,x);

res2 = diff(diff(res1,y),y);

syms x;

z = x.^2*sin(2*x);

res1 = diff(z,x,50);

syms a b t;

x = a*t.^2 ;

y = b*t.^3 ;

dx = diff(x,t);

dy = diff(y,t);

res = dy/dx ;

30、不定積分與定積分

符號積分由函式int來實現。該函式的一般呼叫格式為:

int(s,x):以符號表達式或符號函式s為被積函式,x為積分變數,計算不定積分。

int(s, x, a, b):以符號表達式或符號函式s為被積函式,a,b為積分的下限和上限,x為積分變數,計算定積分。a和b可以是兩個具體的數,也可以是一個符號表達式,還可以是無窮大。

積分:

syms x;

y=exp(-x^2);

int(y, x, 0, inf)

ans =

 pi^(1/2)/2

syms x ;

z = x.^4/(1+x.^2);

res1 = int(z);

31、符號級數

symsum函式用於求無窮級數的和。該函式的一般呼叫格式為:

symsum(s, x, n, m)  s是一個符號函式,它是級數通項,x是求和變數,n和m是求和的開始項和未項。

例: 求下列級數之和

級數1:

syms n;

s=1/n^2;

symsum(s, n, 1, inf)

ans =

 1/6*pi^2

級數2:

syms n;

s=(-1)^(n-1)/(2*n-1);

symsum(s, n, 1, inf)

ans =

1/4*pi

32、函式的泰勒展開

taylor函式用於將一個函式展開為冪級數,其呼叫格式為:

taylor(f , x, n, a)   f是一個符號表達式或符號函式,它表示需要被展開的函式,x是函式自變數,n指需要展開的項數,其預設值為6,a指定將函式f在x = a處展開,其預設值為0。

例:求以下函式的泰勒級開式

展開式:

syms x;

f=log(x);

taylor(f, x, 5, 1)

ans =

x-1-1/2*(x-1)^2+1/3*(x-1)^3-1/4*(x-1)^4

33、解線性方程組

求解用符號表達式的代數方程可由函式solve實現,其呼叫格式為:

x=solve(s, ' x '):求解符號表達式s組成的代數方程,求解變數為x。

[x1,x2,…,xn ]=solve(s1,s2,…,sn, ' x 1', ' x2 ',…, ' x n'):求解符號表達式s1,s2,…,sn組成的方程組,求解變數分別為x1,x2,…,xn。

在MATLAB命令視窗,輸入命令:

[x,y,z]=solve('x+a*y+a^2*z=a^3','x+b*y+b^2*z=b^3','x+c*y+c^2*z=c^3','x','y','z')

x =

 b*c*a

y =

 -b*a-c*b-c*a

z =

 a+b+c

【例二】:線性方程組

>>[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')

34、常微分方程求解

在MATLAB中,用大寫字母D表示導數。例如,Dy表示y',D2y表示y'',Dy(0)=5表示y'(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y'''+y''+y'-x+5=0。符號常微分方程求解可以通過函式dsolve來實現,其呼叫格式為:

dsolve(e,c,v)

該函式求解常微分方程e在初值條件c下的特解。引數v描述方程中的自變數,省略時按預設原則處理,若沒有給出初值條件c,則求方程的通解。

dsolve在求常微分方程組時的呼叫格式為:

dsolve(e1,e2,…,en,c1,…,cn,v1,…,vn)

該函式求解常微分方程組e1,…,en在初值條件c1,…,cn下的特解,若不給出初值條件,則求方程組的通解,v1,…,vn給出求解變數。

【例一】求下列微分方程的解

方程:

[x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y','t')

x =

-1/3*C1+4/3*C1*exp(3*t)-2/3*C2*exp(3*t)+2/3*C2

y =

 2/3*C1*exp(3*t)-2/3*C1+4/3*C2-1/3*C2*exp(3*t)

y=dsolve('Dy=2*x*y^2','y(0)=1','x')

y =

 -1/(x^2-1)

【例三】

>> dsolve('(Dy)^2 + y^2 = 1','s')

 

ans =

 

               1

              -1

 cosh(C10 + s*i)

 cosh(C14 - s*i)

說明:cosh(x)為雙曲餘弦函式,cosh(x)=(exp(x)-exp(-x))/2.

 

35、測量字串向量的維數

例:s='this',

dim=size(s),得

dim=

     1  4

36、ASCⅡ值與字元的相互轉換

【1】字元轉換成ASCII值

例如:s='this',

ascCode=abs(s),得

ascCode=

        116 104 105 115

【2】ASCII轉換成字元

a=[50 97 102];

char(a)=

2af

或者使用setstr函式

setstr(a)=

         2af

37、使整數型向量、字元向量以字元形式顯示

例如:鍵入setstr(ascCode),則顯示結果為

ans=

    this

注:ascCode為上題中的ascCode

38、將數值轉化成字串

num2str函式

例如:num2str(2);結果為’2’

39、求向量或者矩陣的模

norm(X):求向量x的模;

norm(A)求矩陣所有元素的模.

【例一】:

>> X = [1 2 3 4];

>> norm(X)

 

ans =

 

    5.4772

 

>> sqrt(sum(X.^2))

 

ans =

 

5.4772

【例二】:

>> A = [1 2 3;4 5 6;7  1 0];

>> norm(A)

 

ans =

 

   10.4748

41、三角函式

sin/asin    正弦/反正弦函式    sec/asec    正割/反正割函式

sinh/asinh    雙曲正弦/反雙曲正弦函式    sech/asech    雙曲正割/反雙曲正割函式

cos/acos    餘弦/反餘弦函式    csc/acsc    餘割/反餘割函式

cosh/acosh    雙曲餘弦/反雙曲餘弦函式    csch/acsch    雙曲餘割/反雙曲餘割函式

tan/atan    正切/反正切函式    cot/acot    餘切/反餘切函式

tanh/atanh    雙曲正切/反雙曲正切函式    coth/acoth    雙曲餘切/反雙曲餘切函式

atan2    四個象限內反正切函式

42、指數函式

exp    指數函式    log10    常用對數函式

log    自然對數函式    sqrt    平方根函式

43、複數函式

abs    絕對值函式    imag    求虛部函式

angle    角相位函式    real    求實部函式

conj    共軛複數函式

44、數值處理

fix    沿零方向取整    round    舍入取整

floor    沿-∞方向取整    rem    求除法的餘數

ceil    沿+∞方向取整    sign    符號函式

45、其它數學特殊函式

airy    airy函式    erfcx    比例互補誤差函式

besselh    bessel函式(hankel函式)    erfinv    逆誤差函式

bessili    改進的第一類bessel函式    expint    指數積分函式

besselk    改進的第二類bessel函式    gamma    gamma函式

besselj    第一類bessel函式    gammainc    非完全gamma函式

bessely    第二類bessel函式    gammaln    gamma對數函式

beta    beta函式    gcd    最大公約數

betainc    非完全的beta函式    lcm    最小公倍數

betaln    beta對數函式    log2    分割浮點數

elipj    Jacobi橢圓函式    legendre    legendre伴隨函式

ellipke    完全橢圓積分    pow2    基2標量浮點數

erf    誤差函式    rat    有理逼近

erfc    互補誤差函式    rats    有理輸出

46、求符號表達式的值

subs函式可以對符號表達式求值.

>> syms x y ;

>> z = sym('x^2 + y^2');

>> subs(z,{x,y},{1,1})

 

ans =

 

     2

 

>> subs(z,x,1)

 

ans =

 

y^2 + 1

>> subs(z,y,2)

 

ans =

 

x^2 + 4

>> subs(z,{x,y},{1,2})

 

ans =

 

     5

>> subs(z,{x,y},{[1 2 3],[2 -1 0]})

 

ans =

 

     5     5     9

注意:符號表達式中的符號必須是事先宣告的符號變數。如果上例中的紫色標記就、語句沒有的話,則不能對錶達式進行求解。

47、簡化符號表達式

  1. simplify(s):應用函式規則對s進行化簡。
  2. simple(s):呼叫MATLAB的其他函式對錶達式進行綜合化簡,並顯示化簡過程。

 

simplify函式可以簡化符號表達式.

>> syms x f ;

>> f = log(x + sqrt(1 + x^2))

 

f =

 

log(x + (x^2 + 1)^(1/2))

 

>> diff(f,x,1)

 

ans =

 

(x/(x^2 + 1)^(1/2) + 1)/(x + (x^2 + 1)^(1/2))

 

>> simplify(ans)

 

ans =

 

1/(x^2 + 1)^(1/2)

48、非線性方程組數值求解

48.1  fzero函式

在MATLAB中提供了一個fzero函式,可以用來求單變數非線性方程的根。該函式的呼叫格式為:

    z=fzero('fname',x0,tol,trace)

其中fname是待求根的函式檔名,x0為搜尋的起點。一個函式可能有多個根,但fzero函式只給出離x0最近的那個根。tol控制結果的相對精度,預設時取tol=eps,trace指定迭代資訊是否在運算中顯示,為1時顯示,為0時不顯示,預設時取trace=0。

【例】

>> fzero('x-10^x+2',0.5)

 

ans =

 

0.3758

48.2  fsolve函式

對於非線性方程組F(X)=0,用fsolve函式求其數值解。fsolve函式的呼叫格式為:

    X=fsolve('fun',X0,option)

其中X為返回的解,fun是用於定義需求解的非線性方程組的函式檔名,X0是求根過程的初值,option為最優化工具箱的選項設定。最優化工具箱提供了20多個選項,使用者可以使用optimset命令將它們顯示出來。如果想改變其中某個選項,則可以呼叫optimset()函式來完成。例如,Display選項決定函式呼叫時中間結果的顯示方式,其中‘off’為不顯示,‘iter’表示每步都顯示,‘final’只顯示最終結果。optimset(‘Display’,‘off’)將設定Display選項為‘off’。

【例】

>> fsolve('x-10^x+2',0.5',optimset('Display','off'))

 

ans =

 

0.3758

49、定積分及重積分計算

49.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為被積函式的呼叫次數。

注:quadl不能不能用無窮大符號inf.

【例一】

[S,n]=quad('1./(1+x.^2)',-1,sqrt(3))

S =

    1.8326

 

n =

37

【例二】

%%%%%%%%%%%%%%fesin.m%%%%%%%%%%%%%%

function f=fesin(x)

f=exp(-0.5*x).*sin(x+pi/6);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[S,n]=quad('fesin',0,3*pi)

S =

   0.9008

n =

77

syms x;

z = @(x) log(1+tan(x));

res1 = quadl(z,0,pi/4);

49.2牛頓—柯西斯特法

基於牛頓-柯特斯法,MATLAB給出了quad8函式來求定積分。該函式的呼叫格式為:

[I,n]=quadl('fname',a,b,tol,trace)

其中引數的含義和quad函式相似,只是tol的預設值取10-6。該函式可以更精確地求出定積分的值,且一般情況下函式呼叫的步數明顯小於quad函式,從而保證能以更高的效率求出所需的定積分值。

【例】

>> quadl('x.*sin(x)./(1+cos(x).*cos(x))',0,pi)

 

ans =

 

2.4674

49.3二重積分的計算

二重積分數值計算的呼叫函式為 dblquad( ),

對於矩形區域的二重積分的數值解,呼叫格式如下:

dblquad(f,x0,x1,y0,y1), f為被積函式,x0,x1 為積分變數x的下限與上限,y0,y1 為積分變數y的下限與上限.

z = inline('exp(-x.^2/2).*sin(x.^2+y)','x','y');

res = dblquad(z,-2,2,-1,1);

ans=  1.5745

注意積分變數的次序

fh=inline('sqrt(1-x.^2/2)','x');  % 內積分上限

fl=inline('-sqrt(1-x.^2/2)','x'); % 內積分下限

f=inline('exp(-x.^2/2).*sin(x.^2+y)','y','x');  % 交換順序的被積函式

s=quad2dggen(f,fl,fh,-1/2,1,eps)

注:對於一般區域上的二重積分的數值計算,matlab沒有提供呼叫函式,但可以使用美國學者開發的數值積分工具箱裡的函式quad2dggen( ).

49.4計算三重積分

三重積分用函式triplequad來計算.

使用格式:

q = triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol,method)

說明:第一個引數為定義的被積函式;xmin,xmax為積分變數x的上下限,其它四個同理;tol表示積分精度;method表示計算一元積分呼叫的函式.

h = inline('4*x.*z.*exp(-x.*x.*y-z.*z)','x','y','z');

res = triplequad(h,0,1,0,pi,0,pi);

ans = 1.7328

50、求內積與卷積

(1)求內積:dot(x,y);%x,y為向量

(2)求卷積:conv(x,y);%x,y為向量