MATLAB中的矩阵与向量运算.docx

上传人:b****5 文档编号:8292758 上传时间:2023-01-30 格式:DOCX 页数:9 大小:19.69KB
下载 相关 举报
MATLAB中的矩阵与向量运算.docx_第1页
第1页 / 共9页
MATLAB中的矩阵与向量运算.docx_第2页
第2页 / 共9页
MATLAB中的矩阵与向量运算.docx_第3页
第3页 / 共9页
MATLAB中的矩阵与向量运算.docx_第4页
第4页 / 共9页
MATLAB中的矩阵与向量运算.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

MATLAB中的矩阵与向量运算.docx

《MATLAB中的矩阵与向量运算.docx》由会员分享,可在线阅读,更多相关《MATLAB中的矩阵与向量运算.docx(9页珍藏版)》请在冰豆网上搜索。

MATLAB中的矩阵与向量运算.docx

MATLAB中的矩阵与向量运算

之欧侯瑞魂创作

4.1数组运算和矩阵运算

从外观形状和数据结构来看,二维数组和数学中的矩阵没有区别.但是,矩阵作为一种变换或映射算符的体现,矩阵运算有着明确而严格的数学规则.而数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方面,操纵简单,指令形式自然和执行计算有效.所以,在使用MATLAB时,特别要明确搞清数组运算和矩阵运算的区别.表4.1.1列出了两种运算指令形式的实质内涵的异同.

4.1.1数组运算和矩阵运算指令形式和实质内涵

数组运算矩阵运算

指令含义指令含义

A.'非共轭转置A'共轭转置

A=s把标量s赋给数组A的每个元素

s+B把标量s分别与数组B的每个元素相加sB,Bs标量s分别与数组B的元素之差

s.*A标量s分别与数组A的元素之积s*A标量s分别与矩阵A的元素之积

s./B,B.\s标量s分别被数组B的元素除s*inv(B)矩阵B的逆乘标量s

A.^n数组A的每个元素的n次方A^nA为方阵时,矩阵A的n次方

A+B数组对应元素的相加A+B矩阵相加

AB数组对应元素的相减AB矩阵相减

A.*B数组对应元素的相乘A*B内维相同矩阵的乘积

A./BA的元素被B的对应元素除A/BA右除B

B.\A一定与上相同B\AA左除B(一般与右除分歧)

exp(A)以e为底,分别以A的元素为指数,求幂expm(A)A的矩阵指数函数

log(A)对A的各元素求对数logm(A)A的矩阵对数函数

sqrt(A)对A的积各元素求平方根sqrtm(A)A的矩阵平方函数

从上面可以看到,数组运算的运算如:

乘,除,乘方,转置,要加"点".所以,我们要特别注意在求"乘,除,乘方,三角和指数函数"时,两种运算有着根本的区别.另外,在执行数组与数组运算时,介入运算的数组必须同维,运算所得的结果数组也是总与原数组同维.

4.2数组的基本运算

在MATLAB中,数组运算是针对多个数执行同样的计算而运用的.MATLAB以一种非常直观的方式来处理数组.

4.2.1点转置和共轭转置

.'——点转置.非共轭转置,相当于conj(A').

>>a=1:

5;

>>b=a.'

b=

1

2

3

4

5

>>c=b.'

c=

12345

这标明对行向量的两次转置运算便得到原来的行向量.

'——共轭转置.对向量进行转置运算并对每个元素取其共轭.如:

>>d=a+i*a

d=

Columns1through3

1.0000+1.0000i2.0000+2.0000i3.0000+3.0000i

Columns4through5

4.0000+4.0000i5.0000+5.0000i

>>e=d'

e=

1.00001.0000i

2.00002.0000i

3.00003.0000i

4.00004.0000i

5.00005.0000i

4.2.2纯量(标量)和数组的四则运算

纯量和数组之间可以进行简单数学运算.如:

加,减,乘,除及其混合运行.

>>g=[1234

5678

9101112]

>>g=g2

g=

1012

3456

78910

>>2*g1

ans=

3113

57911

13151719

4.2.3数组间的四则运算

在MATLAB中,数组间进行四则运算时,介入运算的数组必须具有相同的维数,加,减,乘,除运算是按元素与元素的方式进行的.其中,数组间的加,减运算与矩阵的加,减运算要同,运算符为:

"+","".但是,数组间的乘,除运算与矩阵间的乘,除运算完全分歧,运算符号也有不同,数组间的乘,除运算符为:

".*","./"或".\".

1.数组按元素相加,减

>>g=[1234

5678

9101112]

>>h=[1111;2222;3333]

>>g+h%按元素相加

ans=

2345

78910

12131415

>>ansh%按元素相减

ans=

1234

5678

9101112

>>2*gh%混合运算

ans=

1357

8101214

15171921

2.按元素乘

>>g.*h

ans=

1234

10121416

27303336

3.按元素除

数组间的除法运算符有两个,即左除:

"./"和右除:

".\",它们之间的关系是:

a./b=b.\a

>>g./h

ans=

1.00002.00003.00004.0000

2.50003.00004.10004.0000

3.00003.33333.66674.0000

>>h.\g

ans=

1.00002.00003.00004.0000

2.50003.00004.10004.0000

3.00003.33333.66674.0000

4.2.4幂运算

在MATLAB中,数组的幂运算的运算为:

".^",暗示每一个元素进行幂运算.

>>g.^2%数组g每个元素的平方

ans=

14916

25364964

81100121144

>>g.^

(1)%数组g的每个元素的倒数

ans=

1.00000.50000.33330.2500

0.20000.16670.14290.1250

0.11110.10000.09090.0833

>>2.^g%以g的每个元素为指数对2进行乘方运算

ans=

24816

3264128256

512102420484096

>>g.^h%以h的每个元素为指数对g中相应元素进行乘方运算

ans=

1234

25364964

729100013311728

>>g.^(h1)

ans=

1111

5678

81100121144

4.2.5数组的指数,对数和开方运算

在MATLAB中,所谓数组的运算实质是是数组内部每个元素的运算,因此,数组的指数,对数和开方运算与标量的运算规则完全是一样的,运算符函数分别为:

exp(),log(),sqrt()等.

>>a=[134;265;324];

>>c=exp(a)

c=

2.718320.085554.5982

7.3891403.4288148.4132

20.08557.389154.5982

>>

数组的对数,开方运算与数组的指数运算,其方式完全一样,这里不详述.

4.3向量运算

对于一行或一列的矩阵,为向量,MATLAB有专门的函数来进行向量点积,叉积和混合积的运算.

4.3.1向量的点积运算

在高等数学中,我们知道,两向量的点积指两个向量在其中一个向量方向上的投影的乘积,通经常使用来定义向量的长度.在MATLAB中,向量的点积用函数"dot"来实现,其调用格式如下:

C=dot(A,B)——返回向量A与B的点积,结果存放于C中.

C=dot(A,B,DIM)——返回向量A与B在维数为DIM的点积,结果存放于C中.

>>A=[24531];

>>B=[38101213];

>>C=dot(A,B)

C=

137

>>C=dot(A,B,4)

C=

632503613

4.3.2向量的叉积运算

在高等数学中,我们知道,两向量的叉积返回的是与两个向量组成的平面垂直的向量.在MATLAB中,向量的点积用函数"cross"来实现,其调用格式如下:

C=cross(A,B)——返回向量A与B的叉积,即:

结果存放于C中.

C=cross(A,B,DIM)——返回向量A与B在维数为DIM的叉积,结果存放于C中.

>>A=[245];

>>B=[3810];

>>C=cross(A,B)

C=

054

4.3.3向量的混合运算

>>D=dot(A,cross(B,C))

D=

41

上例标明,首先进行的是向量B与C的叉积运算,然后再把叉积运算的结果与向量A进行点积运算.

4.4矩阵的基本运算

如果说MATLAB的最大特点是强大的矩阵运算功能,此话毫不为过.事实上,MATLAB中所有的计算都是以矩阵为基本单元进行的.MATLAB对矩阵的运算功能最全面,也是最为强大的.矩阵在形式上与构造方面是等同于前面所述的数组的,当其数学意义却是完全分歧的.

矩阵的基本运算包含矩阵的四则运算,矩阵与标时的运算,矩阵的幂运算,指数运算,对数运算,开方运算及以矩阵的逆运算,行列式运算等.

4.4.1矩阵的四则运算

矩阵的四则运算与前面介绍的数组的四则运算基底细同.但也有一些不同.

1.矩阵的加减

矩阵的加,减与数组的加,减是完全相同的,运算时要求两矩阵的大小完全相同.

>>a=[12;35;26];

>>b=[24;18;90];

>>c=a+b

c=

36

413

116

2.矩阵的相乘

对于矩阵的乘法,从线性代数中,我们知道,要求进行相乘的两矩阵有相同的公共维.如:

>>a=[12;35;26];

>>b=[241;890];

>>c=a*b

c=

18221

46573

52622

设A矩阵为一个阶的矩阵,则要求与之相乘的B矩阵必须是一个阶,得到矩阵是阶的.即,只有当第一个矩阵(左矩阵)的列数等于第二个矩阵(右矩阵)的行数时,两个矩阵的乘积才有意义.

3.矩阵的除法

对于矩阵的除法有两个运算符号,分别为左除符号"\"和右除符号"/".矩阵的右除运算速度要慢一点,而左除运算可以防止奇异矩阵的影响.

对于方程,若此方程为超定的方程,则使用除法可以自动找到使的平方最小化的解.若此方程为不定方程,则使用除法运算符至少求得的解至多有rank(A)(矩阵A的秩)个非零元素,而且求得的解是这种类型的解中范数最小的一个.

>>a=[213420;57820;211417;343138];

>>b=[10203040]';

>>x=b\a

x=

0.76671.18670.8767

上面方程是超定方程.要注意的:

结果矩阵x是列向量形式.如果,

>>a=[2134205;78202114;17343138];

>>b=[102030]';

>>x=b\a

x=

1.62861.25711.10711.0500

上面的方程为不定方程.

4.矩阵与标量间的四则运算

矩阵与标量的四则运算和数组与标量间的四则运算完全相同,即矩阵中的每个元素与标量进行加,减,乘,除四则运算.需要说明的是,当进行除法运算时,标量只能做除数.

5.矩阵的幂运算

矩阵的幂运算与标量的幂运算分歧.用符号"^",它不是对矩阵的每个元素进行幂运算,而是与矩阵的某种分解有关.

>>b=[213420;782021;173431];

>>c=b^2

c=

343320741754

355537662631

35362312

6.矩阵的指数,对数运算与开方运算

矩阵的指数运算,对数运算与开方运算与数组相应的运算是分歧的.它其实不是对矩阵中的单个元素的运算,而是对整个矩阵的运算.这些运算函数如下:

expm,expm1,expm2,expm3——指数运算函数;

logm——对数运算函数;

sqrtm——开方运算函数.

>>a=[134;265;324];

>>c=expm(a)

c=

1.0e+004*

0.46680.76940.9200

0.79191.30651.5613

0.48070.79190.9475

>>c=logm(a)

c=

0.5002+2.4406i0.59600.6800i0.78811.2493i

0.4148+0.4498i1.46600.1253i1.01080.2302i

0.57801.6143i0.4148+0.4498i1.0783+0.8263i

>>c=sqrtm(a)

c=

0.6190+0.8121i0.81280.2263i1.16230.4157i

0.3347+0.1497i2.30220.0417i1.14750.0766i

1.02710.5372i0.3347+0.1497i1.6461+0.2750i

7.矩阵的转置,逆运算与行列式运算

矩阵的转置的运算符为"'".求逆用运算函数:

inv().而用函数:

det()则可求的矩阵行列式的大小.

>>a=[120;251;4101];

>>c=a'

c=

124

2510

011

>>b=inv(a)

b=

522

211

021

>>d=det(a)

d=

1

4.5矩阵的特殊运算

矩阵的特殊运算包含矩阵特征值运算,条件数运算,奇异值运算,范数运算,秩运算,正交化运算,迹运算,伪逆运算等,这些运算,MATLAB都可以非常方便地给出.

4.5.1矩阵的特征值运算

在线性代数中,计算矩阵的特征值过程相当复杂.而在MATLAB中,矩阵特征值运算只需用函数"eig()"或"eigs()"计算即可得到.其使用格式如下.

E=eig(X)——生成由矩阵X的特征值所组成的一个列向量;

[V,D]=eig(X)——生成两个矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元素构成的对角矩阵.

eigs()函数使用迭代法求解矩阵的特征值和特征向量.

D=eigs(X)——生成由矩阵X的特征值所组成的一个列向量.X必定是方阵,最好是大型稀疏矩阵;

[V,D]=eigs(X)——生成两个矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元素构成的对角矩阵.

>>a=[120;251;4101];

[b,c]=eig(a)

b=

0.24400.91070.4472

0.33330.33330.0000

0.91070.24400.8944

c=

3.732100

00.26790

001.0000

4.5.2矩阵(向量)的范数运算

为了反映了矩阵(向量)某些特性,线性代数中引入了范数的概念,它分为2范数,1范数,无穷范数和Frobenius范数等.在MATLAB中,用函数norm()或normest()计算矩阵(向量)的范数.其使用格式如下.

norm(X)——计算矩阵(向量)X的2范数;

norm(X,2)——同上;

norm(X,1)——计算矩阵(向量)X的1范数;

norm(X,inf)——计算矩阵(向量)X的无穷范数;

norm(X,'fro')——计算矩阵(向量)X的Frobenius范数;

normest(X)——只计算矩阵(向量)X的2范数;而且是2范数的估计值,适用于计算norm(X)比较费时的情况.

>>X=hilb(4)

X=

1.00000.50000.33330.2500

0.50000.33330.25000.2000

0.33330.25000.20000.1667

0.25000.20000.16670.1429

>>norm(4)

ans=

4

>>norm(X)

ans=

1.5002

>>norm(X,2)

ans=

1.5002

>>norm(X,1)

ans=

2.0833

>>norm(X,inf)

ans=

2.0833

>>norm(X,'fro')

ans=

1.5097

>>normest(X)

ans=

1.5002

4.5.3矩阵的条件数运算

矩阵的条件数是判断矩阵"病态"程度的一个量值,矩阵A的条件数越大,标明A越"病态",反之,标明A越"良态".如Hilbert矩阵就是一个有名的病态矩阵.

cond(X)——返回矩阵X的2范数的条件数;

cond(X,P)——返回矩阵X的P范数的条件数,其中P为1,2,inf或fro;

rcond(X)——用于计算矩阵条件数的倒数值,当矩阵X为"病态"时,rcond(X)就接近0,X为"良态"时,rcond(X)就接近1.

condest(X)——计算关于矩阵X的1范数的条件数的估计值.

>>M=magic(3)

M=

816

357

492

>>H=hilb(4)

H=

1.00000.50000.33330.2500

0.50000.33330.25000.2000

0.33330.25000.20000.1667

0.25000.20000.16670.1429

>>c1=cond(M)

c1=

4.3301

>>c2=cond(M)

c2=

4.3301

>>c3=rcond(M)

c3=

0.1875

>>c4=condest(M)

c4=

5.3333

>>h1=cond(H)

h1=

1.5514e+004

>>h2=cond(H,inf)

h2=

2.8375e+004

>>h3=rcond(H)

h3=

3.5242e005

>>h4=condest(H)

h4=

2.8375e+004

从上计算可以看出,魔方矩阵比较"良态",而Hilbert矩阵是"病态"的.

4.5.4矩阵的秩

秩是线性代数中的相当重要的概念之一,通常矩阵可以经过初等行列式或列变换,将其转化为行阶梯形矩阵,而行阶梯矩阵所包含非零行的行数是一个定的,这个确定的非零行的行数就是矩阵的秩.矩阵中的秩用函数rank()来计算.

>>T=rand(6)

T=

0.95010.45650.92180.41030.13890.0153

0.23110.01850.73820.89360.20280.7468

0.60680.82140.17630.05790.19870.4451

0.48600.44470.40570.35290.60380.9318

0.89130.61540.93550.81320.27220.4660

0.76210.79190.91690.00990.19880.4186

>>r=rank(T)

r=

6

由上计算可知,矩阵T为满秩矩阵.

>>T1=[111;223]

T1=

111

223

>>r=rank(T1)

r=

2

由上计算可知,矩阵T1为行满秩矩阵.

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

当前位置:首页 > 初中教育

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

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