第 3章 矩阵、数组和符号运算一,矩阵和数组运算要求内容:
( 1) 熟练掌握 矩阵的创建 。
( 2) 掌握 矩阵运算 和 数组运算 。
( 3) 学会如何使用 矩阵运算函数 和 数组运算函数 。
( 4) 注意区分矩阵和数组的差别,特别是运算符的差别 。
( 6) 了解 多项式 的创建方法和基本运算 。
MATLAB 以 矩阵 为基本的运算单元,向量和标量 作为特殊的矩阵处理,向量 看作只有一行或一列的矩阵;
标量 看作只有一个元素的矩阵 。
1,矩阵的构造
a.直接输入
b.利用 内部函数 产生矩阵
c.利用 M文件 产生矩阵
d.从 外部数据文件 调入矩阵第 3章 矩阵、数组和符号运算第 3章 矩阵、数组和符号运算
a,直接输入直接输入需遵循以下 基本规则,
整个矩阵应以,[ ]” 为首尾,即整个输入矩阵必须包含在方括号中;
矩阵中,行与行之间必须用分号,;,或 Enter 键 ( 按
Enter 键 ) 符分隔;
每行中的元素用逗号,,,或 空格 分隔;
矩阵中的元素可以是 数字或表达式,但表达式中不可包含未知的变量,MATLAB用表达式的值为该位置的矩阵元素赋值 。 当矩阵中没有任何元素时,该矩阵被称作
,空阵,( Empty Matrix) 。
>> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16]
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
利用表达式输入
>> B=[1,sqrt(25),9,13
2,6,10,7*2
3+sin(pi),7,11,15
4,abs(-8),12,16]
B =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
第 3章 矩阵、数组和符号运算第 3章 矩阵、数组和符号运算
由向量构成矩阵向量是组成 矩阵的基本元素 之一。向量元素需要用方括号括起来。元素之间用 空格 和 逗号 分隔生成 行向量,用 分号隔开生成 列向量 。可以把 行向量 看成 1?n 阶矩阵,把 列向量 看成 n?1 阶矩阵。
向量的构造方法:
直接输入向量利用冒号生成向量利用 linspace/logspace生成向量
>> a=[1,2,3,4];
>> x=0:0.5:2;
% x=logspace(a,b,n) 生成有 n 个元素的行向量 x,其元素起点 x(1)=10a,
终点 x(n)=10b。
>> b=logspace(0,2,4)
b =
1.0000 4.6416 21.5443 100.0000
>> x
x =
0 0.5000 1.0000 1.5000 2.0000
% x=linspace(a,b,n) 生成有 n 个元素的行向量 x,其元素值在 a、
b 之间线性分布。
>> y=linspace(0,2,7)
y =
0 0.3333 0.6667 1.0000 1.3333 1.6667 2.0000
>> z=[-1 x 3]
z =
-1.0000 0 0.5000 1.0000 1.5000 2.0000 3.0000
>> u=[y;z]
u =
0 0.3333 0.6667 1.0000 1.3333 1.6667 2.0000
-1.0000 0 0.5000 1.0000 1.5000 2.0000 3.0000
第 3章 矩阵、数组和符号运算第 3章 矩阵、数组和符号运算
b.利用内部函数产生矩阵
%compan生成 x向量的伴随矩阵
>> x=[2,4,6,8,10]
x =
2 4 6 8 10
>> compan(x)
ans =
-2 -3 -4 -5 -6
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
% eye 生成单位阵
>> S=eye(6)
S =
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
% ones 生成全部元素为 1 的矩阵
>> ones(3,4) ans =
1 1 1 1
1 1 1 1
1 1 1 1
>> F=5*ones(3)
F =
5 5 5
5 5 5
5 5 5
% zeros 生成全部元素为 0的矩阵
>> Z=zeros(2,4)
Z =
0 0 0 0
0 0 0 0
% rand 生成均匀分布的随机矩阵
>> R=rand(4)
R =
0.9501 0.8913 0.8214 0.9218
0.2311 0.7621 0.4447 0.7382
0.6068 0.4565 0.6154 0.1763
0.4860 0.0185 0.7919 0.4057
%生成空阵
>> K=[]
K =
[]
第 3章 矩阵、数组和符号运算
c.利用 M文件产生矩阵
A=[1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
16,17,18,19,20
21,22,23,24,25]
第 3章 矩阵、数组和符号运算
d.从外部数据文件调入矩阵用 load命令输入用 Import 菜单输入第 3章 矩阵、数组和符号运算
2,矩阵元素的修改
>> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16]
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
>> A(1,1)
ans =
1
>> A(2,3)
ans =
7
>> A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0);
>> A
A=
0 2 3 4
5 7 7 8
9 10 11 12
13 14 15 1
第 3章 矩阵、数组和符号运算
3,矩阵的运算
矩阵运算按照 线性代数中基本的运算法则 进行;
加减运算必须在具有相同行列的矩阵之间进行;
只有当 矩阵 A 的列数和矩阵 B 的行数相同时,才可进行矩阵 A和 B 的 乘法运算 ;
乘方运算 只有在矩阵为 方阵 时才有意义;
当一个 矩阵 和一个 标量 ( 1× 1 的矩阵 ) 进行运算时,
其结果将是此 标量和矩阵中的每一个元素,相加,,
,相减,,,相乘,,,相除,;
在 MATLAB 中,矩阵左除和右除的含义不同 。 矩阵右除定义为,B\A=(A′/B′)。
第 3章 矩阵、数组和符号运算
a,矩阵的加减运算
>> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16]
>> B=[1,sqrt(25),9,13
2,6,10 7*2
3+sin(pi),7,11,15
4,abs(-8),12,16]
>> C=A+B
C =
2 7 12 17
7 12 17 22
12 17 22 27
17 22 27 32
>> D=A-B
D =
0 -3 -6 -9
3 0 -3 -6
6 3 0 -3
9 6 3 0
>> E=A+3
E =
4 5 6 7
8 9 10 11
12 13 14 15
16 17 18 19
第 3章 矩阵、数组和符号运算
b,矩阵乘法
>> C=A*B
C =
30 70 110 150
70 174 278 382
110 278 446 614
150 382 614 846
>> D=A*3
D =
3 6 9 12
15 18 21 24
27 30 33 36
39 42 45 48
c,矩阵除法左除 A\B=inv(A)*B
>> A=[8,1,6;3,5,7;4,9,2]
A=
8 1 6
3 5 7
4 9 2
>> B=[1,1,1;1,2,3;1,3,6]
B =
1 1 1
1 2 3
1 3 6
>> A\B
ans =
0.0667 0.0500 0.0972
0.0667 0.3000 0.6389
0.0667 0.0500 -0.0694
>> C=inv(A)
C =
0.1472 -0.1444 0.0639
-0.0611 0.0222 0.1056
-0.0194 0.1889 -0.1028
>> C*B
ans =
0.0667 0.0500 0.0972
0.0667 0.3000 0.6389
0.0667 0.0500 -0.0694
右除 A/B =A*inv(B)
>> A/B
ans =
27 -31 12
1 2 0
-13 29 -12
>> D=inv(B)
D =
3 -3 1
-3 5 -2
1 -2 1
>> A*D
ans =
27 -31 12
1 2 0
-13 29 -12
第 3章 矩阵、数组和符号运算当对矩阵作 除法运算 时,有可能因为误差设置的差别导致不精确的结果,此时,MATLAB会自动给出警告信息,
MATLAB 采用 IEEE( 国际认可的 ) 算法,即使 A 为奇异阵 ( 即 A
的行列式值是 0),运算也照样进行,但是此时 MATLAB 将给出警告信息:,Warning,Matrix is singular to working precision.”,求出的矩阵所有元素为无穷大 ( Inf) ;
当矩阵 A 为 病态阵 ( Badly Scaled) 时,MATLAB 使用的算法产生的误差可能很大,MATLAB 系统也将给出警告信息:,Warning:
Matrix is badly scaled to working precision,Results may be inaccurate.”。
>> E=[1,2,3;4,5,6;7,8,9]
E =
1 2 3
4 5 6
7 8 9
>> F=[1,4,7;2,5,8;3,6,9]
F =
1 4 7
2 5 8
3 6 9
>> E\F
Warning,Matrix is close to singular or badly scaled.
Results may be inaccurate,RCOND = 1.541976e-018.
ans =
-0.3333 -7.3333 -14.3333
0.6667 11.6667 22.6667
0 -4.0000 -8.0000
第 3章 矩阵、数组和符号运算
4,矩阵的函数
a.矩阵的基本变换函数
>> A=[3,3,5;2,4,6;7,8,9] %创建方阵 A
A =
3 3 5
2 4 6
7 8 9
>> inv(A) %矩阵的逆 ( A必须为非奇异方阵 )
ans =
0.5000 -0.5417 0.0833
-1.0000 0.3333 0.3333
0.5000 0.1250 -0.2500
>>A‘ %矩阵的转置
ans =
3 2 7
3 4 8
5 6 9
b.常用的矩阵运算函数只有方阵才可计算行列式值,即 det(A)的计算只有在 A 为方阵时才有意义 。
logm(A)和 sqrtm(A)
计算矩阵的对数 /平方根是指对 整个矩阵 A
求对数 /平方根 。
第 3章 矩阵、数组和符号运算第 3章 矩阵、数组和符号运算
>> det(A) %求方阵 A 的行列式值
ans =
-24
>> eig(A) %求特征值
ans =
16.7503
0.8793
-1.6295
>> logm(A) %求矩阵 A 的对数
ans =
0.5432 + 0.8066i 0.7475 + 0.5526i 0.6902 - 0.6914i
0.8584 + 1.4131i 0.7845 + 0.9681i 0.6967 - 1.2112i
0.7502 - 1.5947i 1.1089 - 1.0926i 1.8504 + 1.3668i
>> sqrtm(A) %求矩阵 A 的平方根
ans =
1.2466 + 0.3278i 0.5192 + 0.2246i 1.0906 - 0.2809i
0.2001 + 0.5742i 1.4228 + 0.3934i 1.3620 - 0.4921i
1.6144 - 0.6480i 1.7430 - 0.4439i 2.3610 + 0.5554i
c.矩阵的分解函数第 3章 矩阵、数组和符号运算第 3章 矩阵、数组和符号运算
>> X=[3,-1,2;1,2,-1;-2,1,4] %输入矩阵 X
X =
3 -1 2
1 2 -1
-2 1 4
>> [L,U]=lu(X) %对矩阵 X 进行 LU 分解
L =
1.0000 0 0
0.3333 1.0000 0
-0.6667 0.1429 1.0000
U =
3.0000 -1.0000 2.0000
0 2.3333 -1.6667
0 0 5.5714
>> [Q,R]=qr(X) %对矩阵 X 进行 QR 分解
Q =
-0.8018 0.1543 0.5774
-0.2673 -0.9567 -0.1155
0.5345 -0.2469 0.8083
R =
-3.7417 0.8018 0.8018
0 -2.3146 0.2777
0 0 4.5033
第 3章 矩阵、数组和符号运算
5、数组运算
Matlab是以矩阵为基本运算单元的,数组作为独立的计算单元实体是不存在的。数组运算 是 Matlab的一种运算形式,它 从矩阵的单个元素出发,针对每个元素进行的运算。
MATLAB对 数组运算 在符号上做了不同的约定,运算符形式为,.*,./,.\,.^
矩阵运算和数组运算 有着显著的不同。属于两种不同的运算,矩阵运算 是从矩阵的整体出发,按照线性代数的运算规则进行,有着明确而严格的数学规则; 而数组运算 是从矩阵的单个元素出发,针对每个元素进行的运算 。
对于加法和减法而言,矩阵运算和数组运算相同 ;对于乘法和除法而言,矩阵和数组的运算有着显著的不同。
第 3章 矩阵、数组和符号运算
a,矩阵的 数组乘 /除及乘方数组除 的运算规则:
当参与除运算的两个矩阵同维时,运算为矩阵 的相应元素相除,计算结果是与参与运算的矩阵同维的矩阵;
当参与运算的矩阵有一个是 标量 时,运算是标量和矩阵的每一个元素相除,计算结果是与参与运算的矩阵同维的矩阵;
右除与左除的关系为 A./B=B.\A,其中 A
是被除数,B是除数 。
第 3章 矩阵、数组和符号运算
> > E=[1,2,3;4,5,6;7,8,9]
E =
1 2 3
4 5 6
7 8 9
>> F=[1,4,7;2,5,8;3,6,9]
F =
1 4 7
2 5 8
3 6 9
>> E.\F
ans =
1.0000 2.0000 2.3333
0.5000 1.0000 1.3333
0.4286 0.7500 1.0000
>> 4.\F
ans =
0.2500 1.0000 1.7500
0.5000 1.2500 2.0000
0.7500 1.5000 2.2500
>> F./E
ans =
1.0000 2.0000 2.3333
0.5000 1.0000 1.3333
0.4286 0.7500 1.0000
>> E*F
ans =
14 32 50
32 77 122
50 122 194
>> E.*F
ans =
1 8 21
8 25 48
21 48 81
数组乘方 的运算规则:
① 矩阵的标量乘方 A.^p( 即 A 为矩阵,p 为标量 ),运算为矩阵每个元素的 p 次方,计算结果是与矩阵 A同维的矩阵;
② 标量的矩阵乘方 p.^A,表示以 p 为底,分别以
A 的元素为指数求幂值,计算结果是与矩阵 A 同维的矩阵 。
第 3章 矩阵、数组和符号运算
b.向量的 数组运算,
加 /减法:
>> x=[1,2,3]
>> y=[4,5,6]
>> c=x-y
>> a=1+x
乘 /除法,
>> b=2*x
>> b=2.*x
>> z3=x.\9
>> z4=x./9
>> z=x.*y
>> z1=x./y
>> z2=x.\y
第 3章 矩阵、数组和符号运算乘方:
>> z7=2.^x
>> z5=x.^3
>> z6=x.^y
点积、叉积:
>> c1=dot(a,b)
>> c1= sum(a.*b)
>> c2=cross(a,b)
6、数组函数常用的数学函数第 3章 矩阵、数组和符号运算常用三角函数和超越函数第 3章 矩阵、数组和符号运算
>> A=[3,3,5;2,4,6;7,8,9]
A =
3 3 5
2 4 6
7 8 9
>> log(A)
ans =
1.0986 1.0986 1.6094
0.6931 1.3863 1.7918
1.9459 2.0794 2.1972
>> sqrt(A)
ans =
1.7321 1.7321 2.2361
1.4142 2.0000 2.4495
2.6458 2.8284 3.0000
>> cos(A)
ans =
-0.9900 -0.9900 0.2837
-0.4161 -0.6536 0.9602
0.7539 -0.1455 -0.9111
>> pow2(A)
ans =
8 8 32
4 16 64
128 256 512
>> 2.^A
ans =
8 8 32
4 16 64
128 256 512
第 3章 矩阵、数组和符号运算
7、多项式及其运算
a.多项式的输入向量 A=[a0,a1,…,an-1,an],
则命令 poly(A)会生成 (x-a0)(x-a1)… (x-an-1)(x-an) 的多项式
>> a
a =
1 2 3 4
>> PA=poly(a)
PA =
1 -10 35 -50 24
>> poly2sym(PA,'x')
ans =
x^4-10*x^3+35*x^2-50*x+24
>> p_a=poly2sym(a)
p_a=
x^3+2*x^2+3*x+4
第 3章 矩阵、数组和符号运算
b.多项式的运算
>> a
a =
1 2 3 4
>> b=[0,1]
b =
0 1
加法:
>> c=a+[0 0 b]
c =
1 2 3 5
乘法:
>> d=conv(a,b)
d =
0 1 2 3 4
除法:
>> [div,rest]=deconv(d,a)
div =
0 1
rest =
0 0 0 0 0
微分:
>> polyder(a)
ans =
3 4 3
求根:
>> roots(a)
ans =
-1.6506
-0.1747 + 1.5469i
-0.1747 - 1.5469i
第 3章 矩阵、数组和符号运算求值:
>> a=[1,2,3,4]
a =
1 2 3 4
>> b=[1,1;1,1]
b =
1 1
1 1
>> polyvalm(a,4) % x=4时多项式的值
ans =
112 %与 polyval(a,4)结果相同
>> polyval(a,b) %数组运算
ans =
10 10
10 10
>> polyvalm(a,b) %矩阵运算
ans =
15 11
11 15
第 3章 矩阵、数组和符号运算多项式拟合:
>> x=0:pi/20:pi/2;
>> y=sin(x);
>> [p,s]=polyfit(x,y,5);
>> x1=0:pi/30:pi*2;
>> y1=sin(x1);
>>y2=p(1)*x1.^5+p(2)*x1.^4+p(3)*x1.^3+p(4)*x
1.^2+p(5)*x1+p(6);
>> plot(x1,y1,'b-',x1,y2,'r*')
>> legend('Original curve','Fitted curve')
>> axis([0,7,-1.2,4])
( 1) 在 MATLAB 6.0 的工作空间中用直接输入法建立如下两个矩阵,然后在矩阵编辑器中将矩阵 A改为 3行 3列的矩阵,并将其保存 。

( 2) 分别对 (1)产生的两个矩阵 作加,减,乘和除 ( 左除,
右除 ) 运算,同时运用数组运算法则进行运算,比较二者的计算结果有何异同 。
( 3) 利用矩阵生成函数建立一个对角线元素全部为 1 的 4
阶单位矩阵 。
( 4) 利用矩阵生成函数建立一个 4× 4 的随机矩阵 。
上机习题( 4)
642
531A
987
642
531
B
( 5)对题( 4)所产生的矩阵求特征值和特征向量,并用
lu和 qr命令对该矩阵进行分解。
( 6)对题( 1)中的矩阵 B 求秩、行列式的值、条件数、
平方根及对数。
( 7)将如下矩阵 A 进行转置和求逆。
( 8)在 MATLAB 环境下,用下面三条指令创建矩阵 C,
看输出怎样的结果。
a=2.7358; b=33/79;
C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]
上机练习( 4)

412
303
214
A