2MATLAB的基本数学功能.docx

上传人:b****9 文档编号:25662042 上传时间:2023-06-11 格式:DOCX 页数:18 大小:37.84KB
下载 相关 举报
2MATLAB的基本数学功能.docx_第1页
第1页 / 共18页
2MATLAB的基本数学功能.docx_第2页
第2页 / 共18页
2MATLAB的基本数学功能.docx_第3页
第3页 / 共18页
2MATLAB的基本数学功能.docx_第4页
第4页 / 共18页
2MATLAB的基本数学功能.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

2MATLAB的基本数学功能.docx

《2MATLAB的基本数学功能.docx》由会员分享,可在线阅读,更多相关《2MATLAB的基本数学功能.docx(18页珍藏版)》请在冰豆网上搜索。

2MATLAB的基本数学功能.docx

2MATLAB的基本数学功能

第二节MATLAB的基本数学功能

MATLAB作为优秀的数学计算和分析软件,其中以矩阵运算为代表的基本运算功能一直是MATLAB引以为豪的核心和基础。

本节将介绍MATLAB的基本运算功能。

一、算术运算

MATLAB提供了两种运算方式,一种是普通的数组运算方式:

在数组中对应元素之间进行运算;另一种是矩阵运算方式:

不改变输入形式和书写方法,把常数看成是标量(即

阶的矩阵),一维数组看作是一行或一列的矢量(即

阶或

阶的矩阵),二维数组看成是

阶的矩阵,然后按照矩阵的运算规则进行运算。

二者的输入形式和表示方法是相同的,差别就在于使用了不同的运算符。

1.加、减运算

矩阵与数组的加减运算没有区别,都使用“+”、“-”运算符,运算方法相同。

需注意的是,两个进行加减运算的数组(或是矩阵)必须有相同的尺寸,否则运算时会出现错误信息。

如:

a=[213;465;246];

b=[257];

a+b

?

?

?

Errorusing==>+

Matrixdimensionsmustagree.

如果其中的一个运算对象是标量,即

阶的矩阵,它可以和其他不同维数的矩阵进行运算。

如:

a+4

ans=

    657

    8109

    6810

2.乘、除运算

矩阵与数组在进行乘法或除法运算时,使用不同的运算符。

矩阵运算使用的运算符是“*”和“\”(或“/”),而数组运算使用的运算符是矩阵运算符号前加一个点“.”,即“.*”和“.\”(或“./”)。

2.1矩阵乘法

矩阵乘法用 “*”表示,两矩阵要能相乘,必须要求前一矩阵的列数与后一矩阵的行数相等。

如:

   A=[123;456;789];

B=[25;-13;-20];

A*B

ans=

-611

-935

-1259

用乘法也可以实现两个同维矢量的内积(点乘)。

在输入列矢量时,为了书写方便,通常先写成行矢量,再用转置符号,将其转化为列矢量;也可以直接输入为a=[2;-1;5]。

如:

    a=[2-15]';

b=[-13-4]';

a'*b

ans=

-25

b'*a

ans=

-25

MATLAB用dot(a,b)计算矢量a和b的点乘,用cross(a,b)计算矢量a和b的叉乘。

如:

dot(a,b)

ans=

-25

cross(a,b)

ans=

-11

3

5

在MATLAB中矩阵可以和标量相乘,标量可以是乘数或是被乘数。

如:

-5*a'

ans=

-105-25

2.2数组乘法

数组的乘法用“.*”表示,两数组相乘必须具有相同的维数,则a.*b表示a和b中对应元素之间相乘。

如:

z=a'.*b'

z=

-2-3-20

即z(i,j)=a'(i,j)*b'(i,j)。

2.3矩阵除法

在MATLAB中有两种矩阵除法运算符号:

“\”和“/”分别表示左除和右除。

如果A为非奇异方阵,则A\B和B/A运算都可以实现。

A\B表示矩阵A的逆左乘矩阵B,即A\B=inv(A)*B,而B/A表示矩阵A的逆右乘矩阵B,即B/A=B*inv(A)。

通常X=A\B是A*X=B的解,X=B/A是X*A=B的解。

一般A\B≠B/A。

如:

A=rand

(2)

A=

0.95010.6068

0.23110.4860

B=rand

(2)

B=

0.89130.4565

0.76210.0185

C=A/B

C=

1.3425-0.3234

1.1047-0.9887

D=B\A

D=

0.26530.6355

1.56340.0885

2.4数组除法

数组除法用“.\”或“./”表示(结果相同),a与b必须具有相同的维数,a.\b表示b中的元素分别除以a中的对应元素。

如:

g=a'.\b'

g=

-0.5000-3.0000-0.8000

f=b'./a'

f=

-0.5000-3.0000-0.8000

  即a'.\b'=b'./a',都表示b'除以a'。

  

3乘方

3.1 矩阵的乘方

矩阵的乘方用“^”表示,A^p即为A的p次方。

若A是一个方阵,p是一个标量,且p是大于1的整数,则A的p次幂即为A自乘p次;若p是不为整数的标量时,A^p=V*

/V,其中λ1…λn为矩阵A的特征值,V为对应的特征矢量阵。

若A为标量而p为方阵时,计算也涉及到特征值和特征矢量的问题,A^p=V*

/V,其中λ1…λn为矩阵p的特征值,V为对应的特征矢量阵。

若A、p均是矩阵,则A^p是错误的,即A和p中必须一个是标量,一个是方阵。

3.2 数组的乘方  

数组的乘方用“.^”。

当底和指数为同样大小的数组时,如:

x=[3-2-1];

y=[243];

z=x.^y

结果为:

z=

916-1

即z=x.^y=[3-2-1].^[243]=[3^2(-2)^4(-1)^3]=[916–1]。

若指数是标量,如:

   g=x.^2

结果为:

g=

941

即g=x.^2=[3-2-1].^2=[3^2(-2)^2(-1)^2]=[941]。

  若底是标量,指数是数组,如:

    f=2.^x

结果为:

f=

8.00000.25000.5000

即f=2.^x=2.^[3-2-1]=[2^32^(-2)2^(-1)]=[8.00000.25000.5000]。

4转置

矩阵的转置用“'”来表示。

如:

    A=[0.95010.6068;0.23110.4860];

G=A'

G=

0.95010.2311

0.60680.4860

也可直接对矢量进行转置运算:

    [145]'

ans=

1

4

5

若z复数矩阵,则z'为它的复数共轭转置,若要进行非共轭转置运算,使用z.'或conj(z')求得。

如:

    z=[2+i3-4i];

z'

ans=

2.0000-1.0000i

3.0000+4.0000i

z.'

ans=

2.0000+1.0000i

3.0000-4.0000i

conj(z')

ans=

2.0000+1.0000i

3.0000-4.0000i

二、数学函数与矩阵函数

1  数学函数

MATLAB所提供的数学函数主要有基本函数与特殊函数两部分。

1.1基本函数

MATLAB的基本函数分为4部分:

三角函数、指数函数、复数函数、取整和求余函数。

见下表:

表3  MATLAB的基本数学函数

 

函数

名称

功  能

函数

名称

功 能

 

三角

函数

sin

正弦

cot

余切

asin

反正弦

acot

反余切

cos

余弦

sec

正割 

acos

反余弦

asec

反正割

tan

正切

csc

余割

atan

反正切

acsc

反余割

 

指数

函数

exp

以e为底的指数

pow2

2的幂次

log

自然对数

sqrt

开平方

log10

以10为底的对数

nextpow2

2的下一个幂次

log2

以2为底的对数

复数

函数

abs

绝对值或复数的模

imag

复数的虚部

complex

由实部和虚部构造复数

real

复数的实部

conj

复数的共轭

isreal

是否为实数组

取整

函数

mod

模数(带符号余数)

fix

朝零方向取整

floor

朝负无穷(-∞)方向取整

rem

除后取余数

ceil

朝正无穷(+∞)方向取整

sign

符号函数

round

四舍五入到最近的数

下面计算两个MATLAB基本函数的值,如:

a=[-112;-243];

b=fix(pi*a)

b=

-336

-6129

c=cos(pi*b)

c=

-1-11

11-1

说明:

在计算中,三角函数按弧度计算;mod(x,y)与y符号相同,rem(x,y)与x符号相同,当x与y同号时,mod(x,y)等于rem(x,y)。

1.2特殊函数

MATLAB的特殊函数分为三部分:

特殊数学函数、数理函数、坐标变换。

常用的函数见下表:

表4MATLAB的特殊数学函数

函数名称

功能

函数名称

功能

bessel

各类Bessel函数

cross

矢量叉乘

bete

β函数

dot

矢量点乘

gamma

γ函数

cart2sph

直角坐标变换到球坐标

ellipj

Jachobi椭圆函数

cart2pot

直角坐标变换到极坐标

ellipke

完全椭圆积分

pol2cart

极坐标变换到直角坐标

erf

误差函数

sph2cart

球坐标变换到直角坐标

2矩阵函数

MATLAB提供了包括矩阵分析、线性方程组、特征值和特征矢量、矩阵函数、因式分解的矩阵函数,常用的矩阵函数见下表:

表5MATLAB的矩阵函数

函数命令

功能

函数命令

功能

cond

矩阵的条件数

rank

矩阵的秩

condest

1-范数条件数

svd

矩阵的奇异值分解

rcond

矩阵的倒条件数

trace

矩阵的迹

det

方阵的行列式

expm

矩阵指数

inv

矩阵的逆

sqrtm

矩阵的平方根

norm

矩阵或矢量的范数

logm

矩阵对数

normest

矩阵的2-范数

funm

矩阵的一般矩阵函数

从上表中可以看到,矩阵函数中有几个函数的名称与数学函数相似,只是在相应的数学函数名称后添加了一个字符m。

如:

a=[14;916];

r1=sqrt(a)

r1=

12

34

r2=sqrtm(a)

r2=

0.4662+0.9359i0.8860-0.2189i

1.9935-0.4924i3.7888+0.1152i

三、建立特殊数组(矩阵)

1标准数组(或矩阵)函数

MATLAB中提供了一些标准数组(或矩阵)的建立方法,这些数组(或矩阵)可作为一些基本数组(或矩阵)用于辅助编程或运算。

表6MATLAB的标准数组

函数名称

主要用法

描述

特征

zeros

A=zeros(n)

建立n×n阶的二维全0数组

数组的所有元素全为0,aij=0

A=zeros(m,n)

建立m×n阶的二维全0数组

A=zeros(m,n,p,…)

建立m×n×p×…阶的多维全0数组

A=zeros(size(b))

建立与b同样尺寸的全0数组

ones

A=ones(n)

建立n×n阶的二维全1数组

数组的所有元素全为1,aij=1

A=ones(m,n)

建立m×n阶的二维全1数组

A=ones(m,n,p,…)

建立m×n×p×…阶的二维全1数组

A=ones(size(b))

建立与b同样尺寸的全1数组

eye

A=eye(n)

建立n×n阶的单位矩阵

对角元素为1,其余元素为0

A=eye(m,n)

建立m×n阶的单位矩阵

A=eye(size(b))

建立与b同样尺寸的单位矩阵

rand

A=rand(n)

建立n×n阶的二维随机数组

均匀分布,在0—1之间

A=rand(m,n)

建立m×n阶的二维随机数组

A=rand(m,n,p,…)

建立m×n×p×…阶的多维随机数组

A=rand(size(b))

建立与b同样尺寸的随机数组

randn

A=randn(n)

建立n×n阶的二维随机数组

正态分布,均值为0,方差为1

A=randn(m,n)

建立m×n阶的二维随机数组

A=randn(m,n,p,…)

建立m×n×p×…阶的多维随机数组

A=randn(size(b))

建立与b同样尺寸的随机数组

diag

A=diag(b)

将矢量b放在A矩阵的主对角线上

非对角线元素为0

magic

A=magic(n)

建立n×n阶的魔术方阵

元素由1~n之间的整数组成,任何行元素或任何列元素或任何对角线元素之和都相等,即

2建立大数组

大数组可由方括号中的小数组建立起来。

如:

a=[123;234;569]

输入:

c=[aones(size(a));rand(size(a))a^2]

即把每一个小数组作为新数组中的一个元素,再组成大数组,得到

c=

1.00002.00003.00001.00001.00001.0000

2.00003.00004.00001.00001.00001.0000

5.00006.00009.00001.00001.00001.0000

0.95010.48600.456520.000026.000038.0000

0.23110.89130.018528.000037.000054.0000

0.60680.76210.821462.000082.0000120.0000

或可以输入d=[zeros(3,2)a;ones(2,2)eye(2,3)]

得到d=

00123

00234

00569

11100

11010

注意:

在使用这种方法构建大数组时,小数组在维数中必须满足同一行上的各个小数组要有相同的行数,同一列上的各个小数组要有相同的列数。

3冒号“:

”的使用

3.1产生一维数组,如x=1:

4即产生一个1~4单位增量的一维数组:

x=1:

4

x=

1234

也可以产生单位增量小于1的一维数组,方法是把增量放在起始量和结尾量的中间,如:

y=3:

1/2:

5

y=

3.00003.50004.00004.50005.0000

同样,如果把增量设置为负数,则产生单位增量为负数的一维数组,如:

z=3:

-1/2:

0

z=

3.00002.50002.00001.50001.00000.50000

3.2另外,冒号可以用来生成简易的表格。

方法是先产生一个一维数组,再计算另外一个一维数组,进行转置后合成列向量组。

如:

x=(2:

0.3:

3.5);

y=exp(-x);

[x',y']

则得到ans=

2.00000.1353

2.30000.1003

2.60000.0743

2.90000.0550

3.20000.0408

3.50000.0302

4下标的功能

4.1元素定位

单个的数组元素的位置可在括号中用下标来表达,如已知:

a=[213

465

246]

从中我们可知a(2,1)=4,a(3,3)=6,a(3,2)=4等等。

若用a(3,3)=a(2,1)+a(3,2),利用原数组的元素产生新元素(即a(2,1)+a(3,2)=8)替代a数组中第三行第三列的a(3,3)元素,则产生新的a数组:

a=

213

465

248

下标可以是一个一维数组。

例如若x和v是一维数组,则x(v)也是一个一维数组:

[x(v

(1))x(v

(2))…x(v(n))]。

对于矩阵而言,一维数组下标可以将数组中邻近或不邻近元素构成一个新的子数组:

假如b是一个10×10阶的数组,则b(1:

3,5)是指b中由前三行对应第五列元素组成的3×1阶子数组。

又如b(3:

5,5:

8)是第3、4、5行与第5、6、7、8列交叉处的元素组成的3×4阶子数组;b(:

[5,8,10])=c(:

1:

3)表示将c数组的前三列赋值给b数组的第五、第八、和第十列。

若v和w是整数矢量,则a(v,w)通过取出行下标v和列下标w对应的的a的元素形成新的数组。

如:

a=[213;465;246]

a=

213

465

246

v=1:

3;

w=[321];

计算a(v,w)

ans=

312

564

642

若w=[121],计算a(v,w)

ans=

212

464

242

若v=[13],w=[121],计算a(v,w)

ans=

212

242

4.2改变数组的尺寸

数组的尺寸是可以改变的,例如我们可以将一个2×3阶的数组的尺寸变为6×1阶:

a=[212;242];

b=a(:

)%按列的顺序排成新数组

b=

2

2

1

4

2

2

而赋值语句左边a(:

)可以重新组成与原来的a具有相同尺寸的数组,这相当于在原来的a未被清除的情况下,用新的元素置换(需注意的是等号右边元素的数量与等号左边数组的数量应相同)。

如:

a(:

)=8:

-1:

3

a=

864

753

这时a数组已被新的内容所取代,即由8到3,6个新元素取代了原来数组中的元素,重新组成2×3数组。

数组尺寸的改变也可以通过reshape命令实现,如果a=[864;753],则

b=reshape(a,3,2)%将a中元素按列的顺序排成3×2阶新数组

b=

85

74

63

5空数组

语句[]将一个0×0阶的数组赋给X,使用这个数组不会引起出错情况。

X=[]与clearX不同,clear是将X清除出工作空间,而空数组则存在于工作空间,只是具有空尺寸而已。

当用size测试时表明其为空数组,而用exist可以测出其确实存在。

如果n<1,x=1:

n可以产生空矢量。

若要将某些行与列从数组中移去,可以采用将其置为空数组的方法。

如:

a=

212

242

a(:

[1])=[]%将原来数组中的第一列删除

a=

12

42

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1