向量矩阵的运算.docx
《向量矩阵的运算.docx》由会员分享,可在线阅读,更多相关《向量矩阵的运算.docx(12页珍藏版)》请在冰豆网上搜索。
向量矩阵的运算
第三章
向量、矩阵的运算
学习目标:
1、正确输入向量、矩阵;
2、熟悉MATLAB中向量、矩阵基本运算的命令;
3、会访问提取向量、矩阵中元素;
4、能用MATLAB进行矩阵的初等变换。
第一节向量的运算
由n个数组成的一个有序数组,称为一个n维向量,记作:
或
,前者称为行向量,后者称为列向量。
一、向量的生成:
方法一:
生成向量的最直接方式是把向量元素逐个从键盘上直接输入,用“[]”括起来,元素之间可以用逗号、空格、分号分隔,注意不同的是,用空格和逗号分隔生成行向量,用分号分隔生成列向量。
方法二:
利用冒号表达式生成
格式是:
a:
d:
b,d为”步长”即公差.
方法三:
利用线性等分命令linspace,先设定向量的维数,再生成等间隔的向量.
格式是:
x=linspace(a,b)%生成100维的行向量,使得x1=a,x100=b,
x=linspace(a,b,n),%生成n维行向量,使得x1=a,xn=b.
例如:
>>x=[1,2,5,8,10]
x=
125810
>>y=1:
2:
10
y=
13579
>>z=linspace(1,10,5)
z=
1.00003.25005.50007.750010.0000
二、向量中的元素操作
MATLAB允许访问向量中的元素和对元素重新赋值,元素的位置编号写在小括号内,如:
x(n)表示向量x的第n个元素。
在小括号中可以使用冒号表达式和“[]”,此时表示访问向量中的多个元素。
如:
x(1:
3)%访问x的前3个元素
x(5:
-2:
1)%访问x的第5、3、1个元素
x([1,3,4])%访问x的第1、3、4个元素
x(3)%访问x的第3个元素
x(5)=-3%给x的第5个元素重新赋值为-3
三、向量的运算
向量运算
命令格式
a+b
a+b
a+k
a+k
ka
k.*a
a.b向量点积
dot(a,b)
向量的长度(范数)
norm(a)
例:
a=(7,2,0,-8),b=(2,1,-4,3),求1)3a+7b2)a.b
>>
(1)3*a+7*b
ans=
3513-28-3
(2)dot(a,b)
ans=
-8
>>
第二节矩阵
一、矩阵的生成:
1)数值型小矩阵的生成:
把矩阵中的元素从键盘逐一输入,放置在“[]”内,同行元素之间用逗号或空格分隔,行与行之间用分号或回车键分隔;
2)特殊数值矩阵的生成:
利用内部语句和函数命令可快速产生特殊矩阵。
如单位矩阵、零矩阵、全1阵、随机矩阵、空矩阵。
命令格式
说明
[]
生成空矩阵
eye(n)
eye(m,n)
eye(size(A))
生成n阶单位矩阵
生成m行n列单位矩阵
生成与矩阵A同阶的单位矩阵
zeros(n)
zeros(m,n)
zeros(size(A))
生成n阶零矩阵
生成m行n列零矩阵
生成与矩阵A同阶的零矩阵
ones(n)
ones(m,n)
ones(size(A))
生成n阶全1矩阵
生成m行n列全1矩阵
生成与矩阵A同阶的全1矩阵
rand(n)
rand(m,n)
rand(size(A))
生成n阶随机矩阵
生成m行n列随机矩阵
生成与矩阵A同阶的随机矩阵
randn(m,n)
生成m行n列的标准正态随机矩阵
例如:
>>A=eye(3)
A=
100
010
001
>>B=ones(2,3)
B=
111
111
>>C=rand(size(A))
C=
0.95010.48600.4565
0.23110.89130.0185
0.60680.76210.8214
3)符号矩阵:
用sym或syms命令
方法一:
sym(‘[]’)
方法二:
先用syms命令创建符号变量,再用创建数值型矩阵的方法输入。
例如:
>>A=sym('[ab;cd]')
A=
[a,b]
[c,d]
>>symsx
>>B=([cos(x),sin(x);-x,x^2+1])
B=
[cos(x),sin(x)]
[-x,x^2+1]
注:
符号型矩阵输出时的特征是每行都用“[]”括起来。
二、矩阵的基本数学运算:
矩阵运算
命令格式
说明
加法
A+B
A,B必须是行列数分别相等的同型矩阵
减法
A-B
数乘
k*A
乘法
A*B
矩阵A的列数与矩阵B的行数相同
除法:
左除(/)、右除(\)
A/B,B\A
A/B相当于
B\A相当于
矩阵的行列式|A|
det(A)
A必须是方阵
逆矩阵
int(A)
A必须是方阵
矩阵的秩R(A)
rank(A)
矩阵的转置
A
矩阵的特征值、特征向量
X=eig(A)
[X,Y]=eig(A)
只求A的特征值
X为A的特征值,t=
t=
t=
t=
t=
t=
t=
t=
t=
Y为A的特征向量
例:
1、求矩阵
的逆矩阵
>>A=[23-1;120;-12-2]
A=
23-1
120
-12-2
>>inv(A)
ans=
0.6667-0.6667-0.3333
-0.33330.83330.1667
-0.66671.1667-0.1667
>>formatrat%指定数值输出为分数形式
>>ans
ans=
2/3-2/3-1/3
-1/35/61/6
-2/37/6-1/6
例2、解矩阵方程:
>>X=[1-30;1027;1078]*inv([12-3;32-4;2-10])
X=
20-1513
-10577-58
-152112-87
例3、求矩阵
的特征值和特征向量:
>>[X,D]=eig([11/20;01/21;000])
X=
1-985/1393881/2158
0985/1393-881/1079
00881/2158%X为特征向量
D=
100
01/20
000
>>eig([11/20;01/21;000])%求特征值
ans=
1
1/2
0
上机实践:
1)、
,
,求:
AB,BA(AB=BA吗?
)
2)、设
,
解矩阵方程:
(2A-X)+2(B-X)=0
3)、解矩阵方程:
4)、求矩阵的A秩:
5)、求方阵
的逆矩阵
6)、用克拉默法则解线性方程组:
第三节矩阵的元素操作
一、MATLAB可以对矩阵元素作如下操作:
提取、赋值、删除、增加元素,从矩阵中提取小矩阵,由小矩阵合并成大矩阵。
命令格式
说明
A(i)
单下标访问,把A的元素按列从左到右连接成一个列向量,提取A的第i个元素
A(i,j)
双下标访问,提取元素
A(i,:
)
提取矩阵A的第i行
A(:
j)
提取矩阵A的第j列
A([m,n],[s,t])
提取矩阵A的第m,n行和第s,t列交叉处元素
A(i,j)=a
给元素
重新赋值为a
A(i,j)=[]
删除元素
例如:
>>A=zeros(2,4)%生成2行4列的零矩阵
A=
0000
0000
>>A(1,3)%重新赋值,使
=4
ans=
0
>>A(:
[2,3])=ones
(2)%把A的第2、3列元素的值变为1
A=
0110
0110
>>A(2,:
)%提取矩阵A的第2行
ans=
0110
二、矩阵的初等变换
1)互换变换:
矩阵的两行(列)互换位置。
A([i,j],:
)=A([j,i],:
)%交换A的第i行与第j行
A(:
[j,i])=A(:
[i,j])%交换A的第i列和第j列
2)数乘变换:
用一个非零数乘矩阵的某一行(列)的所有元素。
A(i,:
)=k*A(i,:
)%数k乘以A的第i行元素
A(:
,j)=k*A(:
j)%数k乘以A的第j列元素
3)消去变换:
把矩阵的某一行(列)乘以一个非零数后加到另一行上(列)去。
A(j,:
)=k*A(i,:
)+A(j,:
)%A的第i行元素乘以k后加到第j行上去。
A(:
j)=k*A(:
i)+A(:
j)%A的第i列元素乘以k后加到第j列上去。
例如:
用初等变换把矩阵
化为上三角阵
>>A=[-102;31-1;024]
A=
-102
31-1
024
>>A(1,:
)=-1*A(1,:
)
A=
10-2
31-1
024
>>A(2,:
)=-3*A(1,:
)+A(2,:
)
A=
10-2
015
024
>>A(3,:
)=-2*A(2,:
)+A(3,:
)
A=
10-2
015
00-6
上机实践:
1、设矩阵
,输入下列程序并解释语句的功能
(1)B(3,3)=0%
(2)B(2,6)=1%
注:
因为B没有6列,矩阵B的维数会根据需要增加,并且在其他没有赋值的位置填上0,以便使数组保持为一个矩形矩阵。
(3)B(:
4)=4%
(4)B(3:
-1:
1,1:
3)%
(5)B(1:
2,2:
3)%
(6)A1=B([1,2],[3,4])%
A2=B([2,3],[1,2])%
A=[A1,A2]%
2、用初等变换求矩阵
的逆矩阵