第三章矩阵与线性代数计算.docx
- 文档编号:6008198
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:27
- 大小:117.10KB
第三章矩阵与线性代数计算.docx
《第三章矩阵与线性代数计算.docx》由会员分享,可在线阅读,更多相关《第三章矩阵与线性代数计算.docx(27页珍藏版)》请在冰豆网上搜索。
第三章矩阵与线性代数计算
第三章矩阵与线性代数计算
MATLAB,即“矩阵实验室”,它是以矩阵为基本运算单元。
因此,本章从最基本的运算单元出发,介绍MATLAB的命令及其用法。
3.1矩阵的定义
由m×n个元素aij(i=1,2,…m;j=1,2,…n)排列成的矩形阵称为一个m行n列的矩阵,或m×n阶矩阵,可以简记为A=(aij)m×n,其中的aij叫做矩阵的第i行第j列元素。
当m=n时,称A为n阶方阵,也叫n阶矩阵;
当m=1,n≥2时,即A中只有一行时,称A为行矩阵,或行向量(1维数组);
当m≥2,n=1时,即A中只有一列时,称A为列矩阵,或列向量;
当m=1,n=1时,即A中只有一个元素时,称A为标量或数量(0维数组)。
3.2矩阵的生成
1.实数值矩阵输入
MATLAB的强大功能之一体现在能直接处理向量或矩阵。
当然首要任务是输入待处理的向量或矩阵。
不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:
同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。
所有元素处于一方括号([])内;当矩阵是多维(三维以上),且方括号内的元素是维数较低的矩阵时,会有多重的方括号。
如:
【例3-1】矩阵的生成例。
a=[123;456;789]
b=[11.11.21.31.41.51.61.71.81.9;
22.12.22.32.42.52.62.72.82.9;
33.13.23.33.43.53.63.73.83.9]
Null_M=[]%生成一个空矩阵
a=
123
456
789
b=
1.00001.10001.20001.30001.40001.50001.6000
2.00002.10002.20002.30002.40002.50002.6000
3.00003.10003.20003.30003.40003.50003.6000
1.70001.80001.9000
2.70002.80002.9000
3.70003.80003.9000
Null_M=[]
2.复数矩阵输入
复数矩阵有两种生成方式:
【例3-2】
a=2.7;b=13/25;
C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+1]
C=
1.00005.4000+0.5200i0.8544
0.70715.30004.5000
【例3-3】矩阵的生成例。
R=[123;456],M=[111213;141516]
CN=R+i*M
R=
123
456
M=
111213
141516
CN=
1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i
4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i
3大矩阵的生成
对于大型矩阵,一般创建M文件,以便于修改:
【例3-4】用M文件创建大矩阵,文件名为c3e4.m
exm=[456468873257955
2168754488813
6545678898215
4566845896545987
548810963377
在MATLAB命令窗口输入:
c3e4;
size(exm)%显示exm的大小
ans=
56%表示exm有5行6列。
4特殊矩阵的生成
命令全零阵
函数zeros
格式B=zeros(n)%生成n×n全零阵
B=zeros(m,n)%生成m×n全零阵
B=zeros([mn])%生成m×n全零阵
B=zeros(size(A))%生成与矩阵A相同大小的全零阵
命令单位阵
函数eye
格式Y=eye(n)%生成n×n单位阵
Y=eye(m,n)%生成m×n单位阵
Y=eye(size(A))%生成与矩阵A相同大小的单位阵
命令全1阵
函数ones
格式Y=ones(n)%生成n×n全1阵
Y=ones(m,n)%生成m×n全1阵
Y=ones([mn])%生成m×n全1阵
Y=ones(size(A))%生成与矩阵A相同大小的全1阵
命令均匀分布随机矩阵
函数rand
格式Y=rand(n)%生成n×n随机矩阵,其元素在(0,1)内
Y=rand(m,n)%生成m×n随机矩阵
Y=rand([mn])%生成m×n随机矩阵
Y=rand(size(A))%生成与矩阵A相同大小的随机矩阵
【例3-5】产生一个3×4随机矩阵
R=rand(3,4)
R=
0.95010.48600.45650.4447
0.23110.89130.01850.6154
0.60680.76210.82140.7919
【例3-6】产生一个在区间[10,20]内均匀分布的4阶随机矩阵
a=10;b=20;
x=a+(b-a)*rand(4)
x=
19.218119.354710.578911.3889
17.382119.169013.528712.0277
11.762714.102718.131711.9872
14.057118.936510.098616.0379
命令正态分布随机矩阵
函数randn
格式Y=randn(n)%生成n×n正态分布随机矩阵
Y=randn(m,n)%生成m×n正态分布随机矩阵
Y=randn([mn])%生成m×n正态分布随机矩阵
Y=randn(size(A))%生成与矩阵A相同大小的正态分布随机矩阵
【例3-7】产生均值为0.6,方差为0.1的4阶矩阵
mu=0.6;sigma=0.1;
x=mu+sqrt(sigma)*randn(4)
x=
0.83110.77990.13351.0565
0.78270.51920.52600.4890
0.61270.48060.63750.7971
0.81410.50640.69960.8527
命令产生随机排列
函数randperm
格式p=randperm(n)%产生1~n之间整数的随机排列
【例3-8】整数的随机排列。
randperm(6)
ans=
321546
命令产生线性等分向量
函数linspace
格式y=linspace(a,b)%在(a,b)上产生100个线性等分点
y=linspace(a,b,n)%在(a,b)上产生n个线性等分点
命令产生对数等分向量
函数logspace
格式y=logspace(a,b)%在()之间产生50个对数等分向量
y=logspace(a,b,n)
命令计算矩阵中元素个数
n=numel(a)%返回矩阵A的元素的个数
命令产生以输入元素为对角线元素的矩阵
函数blkdiag
格式out=blkdiag(a,b,c,d,…)%产生以a,b,c,d,…为对角线元素的矩阵
【例3-9】产生以输入元素为对角线元素的矩阵
out=blkdiag(1,2,3,4)
out=
1000
0200
0030
0004
命令Magic(魔方)矩阵
函数magic
格式M=magic(n)%产生n阶魔方矩阵
【例3-10】产生3阶魔方矩阵
M=magic(3)
M=
816
357
492
3.3矩阵的加减乘除运算
1加、减运算
设u为一数量,A=(aij)m×n和B=(bij)r×s为两矩阵,则加减运算的规定为:
对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。
u±A=(u±aij)m×n
A±B=(aij±bij)m×n
u*A=(u*aij)m×n
【例3-11】矩阵的加减运算。
输入:
u=9
a=[123;456;780]
b=[345;678;9102]
c=u+a
d=a-b
e=u*a%和数组运算相同
结果:
c=101112
131415
16179
d=-2-2-2
-2-2-2
-2-2-2
e=91827
364554
63720
2矩阵的乘及乘方运算
设u为一数量,A=(aij)m×l和B=(bij)l×n为两矩阵,A的列数l和B的行数l相等,可进行A与B的乘法运算。
这里cij=ai1b1j+ai2b2j+…ailblj=
它表示C的第i行第j列的元素是A第i行的各元分别与B第j列的各对应元的乘积的和。
【例3-12】矩阵的乘及乘方运算。
a=[123;456;780]
f=[123]
g=f*a
h=f.*a
a=123
456
780
g=303615
?
?
?
Errorusing==>.*
3.方阵的求逆
单位矩阵:
主对角线上的元素都是1,其他各元素都是0的n阶矩阵与任意n阶矩阵A左乘或右乘的乘积仍然是A自身,即EA=AE=A,因此我们叫E为n阶单位矩阵。
对满秩方阵A,存在A-1,使A*A-1=A-1*A=E;我们称A-1是A的逆矩阵。
命令逆
函数inv
格式Y=inv(X)%求方阵X的逆矩阵。
【例3-13】求
的逆矩阵
A=[123;221;343];
Y=inv(A)或Y=A^(-1)
则结果显示为
Y=
1.00003.0000-2.0000
-1.5000-3.00002.5000
1.00001.0000-1.0000
【例3-14】求逆运算。
A=[21-1;212;1-11];
formatrat%用有理格式输出
D=inv(A)
D=
1/301/3
01/3-2/3
-1/31/30
4.除法运算
右除:
矩阵a右除以矩阵b定义为:
a/b=a*b^(-1)=a*inv(b)
左除:
矩阵b左除以矩阵a定义为:
a\b=a^(-1)*b=inv(a)*b
Matlab提供了两种除法运算:
左除(\)和右除(/)。
一般情况下,x=a\b是方程a*x=b的解,而x=b/a是方程x*a=b的解。
即:
ax=b
a(-1)*a*x=a(-1)*b
X=inv(a)*b=a\b
xa=b
X*a*a(-1)=b*a(-1)
X=b*a(-1)=b*inv(a)=b/a
【例3-15】除法运算
a=[123;426;749]
b=[4;1;2];
x=a\b
则显示:
x=
-1.5000
2.0000
0.5000
在数组除法中,A./B表示A中元素与B中元素对应相除。
5.向量点积
向量的点乘(内积):
维数相同的两个向量的点乘。
函数dot
格式C=dot(A,B)%若A、B为向量,则返回向量A与B的点积,A与B长度相同;若为矩阵,则A与B有相同的维数。
C=dot(A,B,dim)%在dim维数中给出A与B的点积
【例3-16】向量点积
X=[-102];
Y=[-2-11];
Z=dot(X,Y)
则显示:
Z=4
6.向量叉乘
在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。
在Matlab中,用函数cross实现。
函数cross
格式C=cross(A,B)%若A、B为向量,则返回A与B的叉乘,即C=A×B,A、B必须是3个元素的向量;若A、B为矩阵,则返回一个3×n矩阵,其中的列是A与B对应列的叉积,A、B都是3×n矩阵。
C=cross(A,B,dim)%在dim维数中给出向量A与B的叉积。
A和B必须具有相同的维数,size(A,dim)和size(B,dim)必须是3。
【例3-17】计算垂直于向量(1,2,3)和(4,5,6)的向量。
a=[123];
b=[456];
c=cross(a,b)
结果显示:
c=
-36-3
可得垂直于向量(1,2,3)和(4,5,6)的向量为±(-3,6,-3)
7.混合积
混合积由以上两函数实现:
【例3-18】计算向量a=(1,2,3)、b=(4,5,6)和c=(-3,6,-3)的混合积
a=[123];b=[456];c=[-36-3];
x=dot(a,cross(b,c))
结果显示:
x=54
注意:
先叉乘后点乘,顺序不可颠倒。
8.张量积
函数kron
格式C=kron(A,B)%A为m×n矩阵,B为p×q矩阵,则C为mp×nq矩阵。
说明A与B的张量积定义为:
A
B与B
A均为mp×nq矩阵,但一般地A
B
B
A。
【例3-19】
求A
B。
A=[12;34];B=[123;456;789];
C=kron(A,B)
C=
123246
45681012
789141618
3694812
121518162024
212427283236
3.4矩阵的行列式
1矩阵转置
A=(aij)m×n的转置矩阵在数学中记为A′=(aji)n×m
运算符:
′
运算规则:
若矩阵A的元素为实数,则与线性代数中矩阵的转置相同。
若A为复数矩阵,则A转置后的元素由A对应元素的共轭复数构成。
若仅希望转置,则用如下命令:
A.′。
2方阵的行列式
把行列式按第i行展开:
其中Aij=(-1)i+jMij称为aij的代数余子式;而Mij是划去A中元aij所在的行及列得到的n-1阶子式,叫做aij的余子式。
函数det
格式d=det(X)%返回方阵X的多项式的值
【例3-20】行列式的值。
A=[123;456;789]
A=
123
456
789
D=det(A)
D=
0
3.矩阵的秩
子式:
在(m,n)矩阵A中取某k个行,k个列,由这些行、列相交的元构成的k阶行列式,叫做A的k阶子式。
n阶矩阵只有一个n阶子式,叫做矩阵行列式。
用︱A︱或detA表示。
矩阵的秩:
矩阵A中不为零的子式的最高阶数如果是r,就说A的秩是r。
常用r(A)表示。
即矩阵A的秩是矩阵A中最高阶非零子式的阶数;而向量组的秩通常由该向量组构成的矩阵来计算。
n阶矩阵如果它的秩是n,叫做满秩矩阵,否则就是降秩矩阵。
一般矩阵Am×n中,如果r(A)=min(m,n),称A为满秩阵,否则r(A)<min(m,n)称A为降秩阵。
函数rank
格式k=rank(A)%求矩阵A的秩
k=rank(A,tol)%tol为给定误差
【例3-21】求向量组
,
,
,
,
的秩,并判断其线性相关性。
A=[1-223;-24-13;-1203;0623;2-634];
k=rank(A)
结果为
k=
3
由于秩为3<向量个数,因此向量组线性相关。
4.矩阵特征值和特征向量
对n阶矩阵A,如果存在非0向量x满足线性方程组(A-λE)x=0,则称λ是矩阵A的特征值,x是A的对应于特征值λ的特征向量。
对于每一个实对称矩阵A,总可将A转化为对角矩阵,其主对角线上的元素就是A的n个特征值。
[p,r]=eig(a)且%eig=eigen(本征的,固有的)
a为输入矩阵。
r为特征值构成的对角阵。
p的各列为对应于特征值的特征向量构成的矩阵。
【例3-22】求矩阵
的特征值和特征向量
A=[-211;020;-413];
[V,D]=eig(A)
结果显示:
V=
-0.7071-0.24250.3015
000.9045
-0.7071-0.97010.3015
D=
-100
020
002
即:
特征值-1对应特征向量(-0.70710-0.7071)T
特征值2对应特征向量(-0.24250-0.9701)T和(-0.30150.9045-0.3015)T
【例3-23】求矩阵
的特征值和特征向量。
A=[-110;-430;102];
[V,D]=eig(A)
结果显示为
V=
00.4082-0.4082
00.8165-0.8165
1.0000-0.40820.4082
D=
200
010
001
3.5矩阵的特殊运算
1.矩阵对角线元素的抽取
函数diag
格式X=diag(v,k)%以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。
X=diag(v)%以v为主对角线元素,其余元素为0构成X。
v=diag(X,k)%抽取X的第k条对角线元素构成向量v。
k=0:
抽取主对角线元素;
k>0:
抽取上方第k条对角线元素;k<0抽取下方第k条对角线元素。
v=diag(X)%抽取主对角线元素构成向量v。
【例3-24】矩阵对角线元素的抽取。
v=[123];
x=diag(v,-1)
x=
0000
1000
0200
0030
A=[123;456;789]
A=
123
456
789
v=diag(A,1)
v=2
6
2.上三角阵和下三角阵的抽取
函数tril%取下三角部分
格式L=tril(X)%抽取X的主对角线的下三角部分构成矩阵L
L=tril(X,k)%抽取X的第k条对角线的下三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。
函数triu%取上三角部分
格式U=triu(X)%抽取X的主对角线的上三角部分构成矩阵U
U=triu(X,k)%抽取X的第k条对角线的上三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。
【例3-25】上三角阵和下三角阵的抽取。
A=ones(4)%产生4阶全1阵
A=
1111
1111
1111
1111
L=tril(A,1)%取下三角部分
L=
1100
1110
1111
1111
U=triu(A,-1)%取上三角部分
U=
1111
1111
0111
0011
3.矩阵的变维
A(i,:
)提取A的第i行
A(:
j)提取A的第j列
A(:
j:
k)取出A的从第j列到第k列的元素所成的阵。
【例3-26】矩阵的变维
a=[1.11.21.31.4
2.12.22.32.4
3.13.23.33.4];
b=a(2,:
)
c=a(:
3)
d=a(:
2:
4)
b=2.10002.20002.30002.4000
c=1.3000
2.3000
3.3000
d=1.20001.30001.4000
2.20002.30002.4000
3.20003.30003.4000
4.矩阵的变向
矩阵旋转函数
格式B=rot90(A)%将矩阵A逆时针方向旋转90°
B=rot90(A,k)%将矩阵A逆时针方向旋转(k×90°),k可取正负整数。
【例3-27】矩阵旋转。
A=[123;456;789]
A=
123
456
789
Y1=rot90(A),Y2=rot90(A,-1)
Y1=%逆时针方向旋转
369
258
147
Y2=%顺时针方向旋转
741
852
963
矩阵的左右翻转
函数fliplr
格式B=fliplr(A)%将矩阵A左右翻转
矩阵的上下翻转
函数flipud
格式B=flipud(A)%将矩阵A上下翻转
【例3-28】矩阵的翻转。
A=[123;456]
A=
123
456
B1=fliplr(A),B2=flipud(A)
B1=
321
654
B2=
456
123
5.矩阵的比较关系
矩阵的比较关系是针对于两个矩阵对应元素的,所以在使用关系运算时,首先应该保证两个矩阵的维数一致或其中一个矩阵为标量。
关系运算是对两个矩阵的对应运算进行比较,若关系满足,则将结果矩阵中该位置元素置为1,否则置0。
MATLAB的各种比较关系运算见下表。
运算符
含义
运算符
含义
>
大于关系
<
大于关系
==
等于关系
>=
大于或等于关系
<=
小于或等于关系
~=
不等于关系
【例3-29】矩阵的比较关系
A=[1234;5678];B=[0214;0772];
C1=A==B,C2=A>=B,C3=A~=B
C1=
0101
0010
C2=
1111
1011
C3=
1010
1101
6.矩阵逻辑运算
设矩阵A和B都是m×n矩阵或其中之一为标量,在MATLAB中定义了如下的逻辑运算:
矩阵的与运算
格式A&B或and(A,B)
说明A与B对应元素进行与运算,若两个数均非0,则结果元素的值为1,否则为0。
或运算
格式A|B或or(A,B)
说明A与B对应元素进行或运算,若两个数均为0,则结果元素的值为0,否则为1。
非运算
格式~A或not(A)
说明若A的元素为0,则结果元素为1,否则为0。
异或运算
格式xor(A,B)
说明A与B对应元素进行异或运算,若相应的两个数中一个为0,一个非0,则结果为0,否则为1。
【例3-30】矩阵逻辑运算
A=[0234;1350],B=[1053;1505]
A=
0234
1350
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 矩阵 线性代数 计算
![提示](https://static.bdocx.com/images/bang_tan.gif)