矩阵Word文档下载推荐.docx
《矩阵Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《矩阵Word文档下载推荐.docx(23页珍藏版)》请在冰点文库上搜索。
1.2符号矩阵的生成
在MATLAB中输入符号向量或者矩阵的方法和输入数值类型的向量或者矩阵在形式上很相像,只不过要用到符号矩阵定义函数sym,或者是用到符号定义函数syms,先定义一些必要的符号变量,再像定义普通矩阵一样输入符号矩阵。
符号矩阵的输入:
定义矩阵为字符串,或先定义符号变量,再输入矩阵数据。
例如:
输出符号矩阵
。
1.用命令sym定义矩阵:
这时的函数sym实际是在定义一个符号表达式,这时的符号矩阵中的元素可以是任何的符号或者是表达式,而且长度没有限制,只是将方括号置于用于创建符号表达式的单引号中。
如下例:
A=sym('
[ab;
cd]'
)%输出符号矩阵A
[a,b]
[c,d]
2.用命令syms定义矩阵
先定义矩阵中的每一个元素为一个符号变量,而后像普通矩阵一样输入符号矩阵。
symsabcd%输出符号矩阵A
A=[ab;
cd]
1.3特殊矩阵的生成
命令全零阵
函数zeros
格式B=zeros(n)%生成n×
n全零阵
B=zeros(m,n)%生成m×
B=zeros([mn])%生成m×
B=zeros(d1,d2,d3…)%生成d1×
d2×
d3×
…全零阵或数组
B=zeros([d1d2d3…])%生成d1×
B=zeros(size(A))%生成与矩阵A相同大小的全零阵
命令单位阵
函数eye
格式Y=eye(n)%生成n×
n单位阵
Y=eye(m,n)%生成m×
Y=eye(size(A))%生成与矩阵A相同大小的单位阵
命令全1阵
函数ones
格式Y=ones(n)%生成n×
n全1阵
Y=ones(m,n)%生成m×
Y=ones([mn])%生成m×
Y=ones(d1,d2,d3…)%生成d1×
…全1阵或数组
Y=ones([d1d2d3…])%生成d1×
Y=ones(size(A))%生成与矩阵A相同大小的全1阵
重点掌握:
生成m阶单位方阵:
eye(m)
生成m×
n阶单位矩阵:
eye(m,n)
生成m阶全1方阵:
ones(m)
n阶全1矩阵:
ones(m,n)
生成m阶全0方阵:
zeros(m)
n阶全0矩阵:
zeros(m,n)
clear
E=eye(2,3)%生成2行3列的单位方阵
E=
100
010
B=ones(2,3)%生成2行3列的全1矩阵
B=
111
1.4向量、矩阵的访问与赋值
更改、增加或删除向量的元素。
x=[3745]%输出4维行向量x
x=
3745
x(3)=2%更改第三个元素
3725
注:
x(i)表示向量x的第i个分量。
x(6)=10%加入第六个元素(给第六个元素赋值)
3725010
x(4)=[]%删除第四个元素
372010
在对第六个元素进行赋值时,若未曾对第五个元素赋值,则默认为零。
上述运算,结果均返回为变量x。
MATLAB亦可取出向量的一个元素或一部份来做运算。
x=[1234];
y=[24680];
x
(2)*3+y(4)%取出x的第二个元素和y的第四个元素来做运算
ans=
14
y(2:
4)-1%取出y的第二至第四个元素来做运算
357
在上例中,2:
4代表一个由2、3、4组成的向量,同样的方法可用于产生公差为1的等差数列,例如:
z=7:
16
z=
78910111213141516
若不希望公差为1,则可将所需公差直接至于4与13之间,例如:
w=7:
3:
16%公差为3的等差数列
w=
7101316
同样地,我们可以对矩阵进行各种处理。
5678;
9101112])%输出一个3行4列的矩阵
A(2,3)=5%改变第二列,第三行的元素值
[5,6,5,8]
A(i,j)表示矩阵A的(I,j)元,括号中,逗号前面表示行,后面表示列
A(2,:
)%第2行的所有元素
[5,6,5,8]
B=A(2,1:
3)%取出部份矩阵B
[5,6,5]
A=[AB'
]%将B转置后以列向量并入A
[1,2,3,4,5]
[5,6,5,8,6]
[9,10,11,12,5]
矩阵合并,若按照行的形式合并,则用;
隔开;
若按列的形式合并,则用空格或逗号隔开,例如:
A(:
2)=[]%删除第二列(:
代表所有行)
[1,3,4,5]
[5,5,8,6]
[9,11,12,5]
A=[A;
4321]%加入第四行
[4,3,2,1]
A是以一维数组的形式存取的,故默认最后一行。
C=[6,7,8,9]
C=
6789
D=[5,5;
6,6;
7,7;
8,8;
]
D=
55
66
77
88
E=[D(:
1),C'
D(:
2)]%D第1列和第2列之间插入列向量C
565
676
787
898
A([14],:
)=[]%删除第一和第四行(:
代表所有列)
表3-1矩阵访问与赋值常用的相关指令格式
指令格式
指令功能
x(i)
向量x的第i各分量
A(i)
矩阵A作为一维数组的第i各元素
A(i,j)
矩阵A的(i,j)元
A(:
)
矩阵A以一维数组的形式输出
A(i,:
矩阵A的第i行
A(i:
j,:
矩阵A的第i行到第j行元素组成的子矩阵
j)
矩阵A的第j列
2矩阵运算
2.1加、减运算
运算符:
“+”和“-”分别为加、减运算符。
运算规则:
对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。
矩阵的加法:
A+B
矩阵的减法:
A-B
A=[1,1,1;
1,2,3;
1,3,6]
B=[8,1,6;
3,5,7;
4,9,2]
Z=A+B
Z=A-B
结果显示:
A+B=
927
4710
5128
A-B=
-70-5
-2-3-4
-3-64
注意:
矩阵加法与减法运算时,参加运算的矩阵必须是同型矩阵,其运算规则是对应元素的加减运算;
2.2乘法
*
按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。
1.矩阵的乘法:
两个矩阵相乘A*B
X=[2345;
1221]
Y=[011;
110;
001;
100]
Z=X*Y
结果显示为:
Z=
856
333
矩阵A,B相乘,必须满足A的列数等于B的行数;
2.矩阵的数乘:
数乘矩阵k*A
上例中:
a=2*X
则显示:
a=
46810
2442
向量的点乘(内积):
维数相同的两个向量的点乘。
数组乘法:
A.*B表示A与B对应元素相乘。
3.向量点积
函数dot
格式C=dot(A,B)%若A、B为向量,则返回向量A与B的点积,A与B长度相同;
若为矩阵,则A与B有相同的维数。
C=dot(A,B,dim)%在dim维数中给出A与B的点积
例>
X=[-102]
Y=[-2-11]
Z=dot(X,Y)
Z=
4
还可用另一种算法:
sum(X.*Y)
ans=
4
4.向量叉乘
在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。
在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。
计算垂直于向量(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)
2.3除法运算
Matlab提供了两种除法运算:
左除(\)和右除(/)。
一般情况下,x=a\b是方程a*x=b的解,而x=b/a是方程x*a=b的解。
例:
a=[123;
426;
749]
b=[4;
1;
2]
x=a\b
x=
-1.5000
2.0000
0.5000
如果a为非奇异矩阵,则a\b和b/a可通过a的逆矩阵与b阵得到:
z=inv(a)*b
b/a=b*inv(a)
数组除法:
A./B表示A中元素与B中元素对应相除。
2.4矩阵乘方
^矩阵的幂:
A^m
当A为方阵,P为大于0的整数时,A^P表示A的P次方,即A自乘P次;
P为小于0的整数时,A^P表示A-1的P次方。
2.5矩阵转置(A’)
′
若矩阵A的元素为实数,则与线性代数中矩阵的转置相同。
若A为复数矩阵,则A转置后的元素由A对应元素的共轭复数构成。
若仅希望转置,则用如下命令:
A.′。
2.6方阵的行列式
函数det
格式d=det(X)%返回方阵X的多项式的值
例1-42
A=[123;
456;
789]
789
D=det(A)
0
在方阵的前提下,才可以作行列式运算。
2.7逆
命令逆
函数inv
格式Y=inv(X)%求方阵X的逆矩阵。
若X为奇异阵或近似奇异阵,将给出警告信息。
矩阵的逆:
A^-1或inv(A)(A*在M-book里完成)
例求
的逆矩阵
方法一
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
方法二:
由增广矩阵
进行初等行变换
B=[1,2,3,1,0,0;
2,2,1,0,1,0;
3,4,3,0,0,1]
C=rref(B)%化行最简形
X=C(:
4:
6)%取矩阵C中的A^(-1)部分
显示结果如下:
1.0000001.00003.0000-2.0000
01.00000-1.5000-3.00002.5000
001.00001.00001.0000-1.0000
X=
例1-44
A=[21-1;
212;
1-11];
formatrat%用有理格式输出
D=inv(A)
1/301/3
01/3-2/3
-1/31/30
在方阵的前提下,才可以作逆运算。
2.8矩阵的迹
函数trace
格式b=trace(A)%返回矩阵A的迹,即A的对角线元素之和。
2.9特殊运算
生成矩阵的行数与列数:
size()结果是一个2维数组,第一个表示行数,第二个表示列数
生成对角矩阵:
diag(a)a是主对角线上元素所组成的向量
生成矩阵的对角元素:
diag(A)A是矩阵
生成上三角矩阵:
triu(A)A是矩阵
生成下三角矩阵:
tril(A)A是矩阵
symsabcdefghi
A=[abc;
def;
ghi]%输出符号矩阵A
[a,b,c]
[d,e,f]
[g,h,i]
size(A)%A的行数与列数
33
B=diag(A)%矩阵A主对角线上的元素
a
e
i
C=triu(A)%生成上三角形矩阵
[0,e,f]
[0,0,i]
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。
如:
v=[123]
x=diag(v,-1)
0000
1000
0200
0030
v=diag(A,1)
v=
2
6
2.上三角阵和下三角阵的抽取
函数tril%取下三角部分
格式L=tril(X)%抽取X的主对角线的下三角部分构成矩阵L
L=tril(X,k)%抽取X的第k条对角线的下三角部分;
k=0为主对角线;
0为主对角线以上;
0为主对角线以下。
函数triu%取上三角部分
格式U=triu(X)%抽取X的主对角线的上三角部分构成矩阵U
U=triu(X,k)%抽取X的第k条对角线的上三角部分;
如:
A=ones(4)%产生4阶全1阵
1111
L=tril(A,1)%取下三角部分
L=
1100
1110
U=triu(A,-1)%取上三角部分
U=
0111
0011
2.10符号矩阵运算
1.符号矩阵的四则运算
Matlab6.x抛弃了在4.2版中为符号矩阵设计的复杂函数形式,把符号矩阵的四则运算简化为与数值矩阵完全相同的运算方式,其运算符为:
加(+)、减(-)、乘(×
)、除(/、\)等或:
符号矩阵的和(symadd)、差(symsub)、乘(symmul)。
;
C=B-A
D=a\b
x-1/x1-1/(x+1)
x+2-1/(x+2)-1/(x+3)
D=
-6*x-2*x^3-7*x^21/2*x^3+x+3/2*x^2
6+2*x^3+10*x^2+14*x-2*x^2-3/2*x-1/2*x^3
2.其他基本运算
符号矩阵的其他一些基本运算包括转置('
)、行列式(det)、逆(inv)、秩(rank)、幂(^)和指数(exp和expm)等都与数值矩阵相同
3.将数值矩阵转化为符号矩阵
函数sym
格式B=sym(A)%将A转化为符号矩阵B
例1-59
A=[2/3,sqrt
(2),0.222;
1.4,1/0.23,log(3)]
0.66671.41420.2220
1.40004.34781.0986
B=sym(A)
[2/3,sqrt
(2),111/500]
[7/5,100/23,4947709893870346*2^(-52)]
【实验内容】
例3-1:
输出矩阵
,计算
(1)A的转置;
(2)A+2B;
(3)6BA;
(4)
(5)
(6)
(7)删除A第一行,将B的第二列的转置加到A的第一行于第二行中间.
相应的matlab代码及运算结果如下:
clear
A=[311;
123]%输出矩阵A
311
212
B=[11-1;
2-10;
101]%输出矩阵B
11-1
2-10
101
A'
%A的转置
321
112
A+2*B%A+2B
53-1
6-12
325
6*B*A%6BA
2400
2460
241824
A^2%A的平方
1268
10710
10914
det(A)%A的行列式
-4
inv(A)%A的逆矩阵
0.25000.2500-0.2500
1.0000-2.00001.0000
-0.75001.2500-0.2500
formatrat
A^-1%A的逆矩阵
1/41/4-1/4
1-21
-3/45/4-1/4
A(1,:
)=[]%删除A第一行
B1=B(:
2)'
%取出B的第二列
B1=
1-10
A=[A(1,:
);
B;
A(2,:
)]%将B1加到A的第一行于第二行中间.
例3-2:
生成3×
3单位矩阵,零矩阵,元素全为1的矩阵.
eye(3)
010
001
A=zeros(3)
000
B=ones(3)
【练习与思考】
1.计算
.(CHAP42(4))
2.已知
,计算
.
3.求矩阵
的逆矩阵.(CHAP420(5))