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为向量

猜你喜欢

转载自blog.csdn.net/huzhizhewudi/article/details/84404195