MATLAB基础与应用教程人民邮电出版社第二章a_第1页
MATLAB基础与应用教程人民邮电出版社第二章a_第2页
MATLAB基础与应用教程人民邮电出版社第二章a_第3页
MATLAB基础与应用教程人民邮电出版社第二章a_第4页
MATLAB基础与应用教程人民邮电出版社第二章a_第5页
已阅读5页,还剩79页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章 矩阵、数组和符号运算一、矩阵和数组运算要求内容:(1)熟练掌握矩阵的创建。 (2)掌握矩阵运算和数组运算。 (3)学会如何使用矩阵运算函数和数组运算函数。 (4)注意区分矩阵和数组的差别,特别是运算符的差别。 (5)了解多项式的创建方法和基本运算。MATLAB 以矩阵为基本的运算单元,向量和标量作为特殊的矩阵处理:向量看作只有一行或一列的矩阵;标量看作只有一个元素的矩阵。1、 矩阵的构造a.直接输入b.利用内部函数产生矩阵c.利用M文件产生矩阵d.从外部数据文件调入矩阵第2章 矩阵、数组和符号运算第2章 矩阵、数组和符号运算a. 直接输入直接输入需遵循以下基本规则:整个矩阵应以“ ”为

2、首尾,即整个输入矩阵必须包含在方括号中; 矩阵中,行与行之间必须用分号“ ;”或 Enter 键( 按 Enter 键)符分隔; 每行中的元素用逗号“ ,”或空格分隔; 矩阵中的元素可以是数字或表达式,但表达式中不可包含未知的变量,MATLAB用表达式的值为该位置的矩阵元素赋值。当矩阵中没有任何元素时,该矩阵被称作“ 空阵”( Empty Matrix)。第2章 矩阵、数组和符号运算 A=1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16A = 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

3、11 12 13 14 15 16A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16利用表达式输入第2章 矩阵、数组和符号运算B = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 B=1,sqrt(25),9,132,6,10,7*23+sin(pi),7,11,154,abs(-8),12,16 第2章 矩阵、数组和符号运算矩阵及其元素的赋值赋值就是把数赋予代表常量或变量的标识符。MATLAB中的变量或常量都代表矩阵,标量应看做11阶的矩阵。赋值语句的一般形式为:变量表达式(或数)例如: 输入语句a1 2 3; 4 5 6;

4、7 8 9则显示结果为a1 2 3 4 5 6 7 8 9输入x=-1.3 sqrt(3) (1+2+3)/5*4结果为x = -1.3000 1.7321 4.8000第2章 矩阵、数组和符号运算变量的元素的标注 变量的元素用圆括号“()”中的数字(也称为下标)来注明,一维矩阵(也称数组或向量) 中的元素用一个下标表示; 二维的矩阵可有两个下标数,以逗号分开; 三维或更高维的矩阵,可有三个或更多下标。 用户可以单独给元素赋值,如x(2)=1.7321,a(2,3)=6等。如果赋值元素的下标超出了原来矩阵的大小,矩阵的行列会自动扩展。例如输入x(5)=abs(x(1)结果为x = -1.300

5、0 1.7321 4.8000 0 1.3000又如键入a(4,3)=6.5第2章 矩阵、数组和符号运算得 a = 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 0 0 6.5000 可见,跳空的元素x(4),a(4,1),a(4,2)被自动赋值0。这种自动扩展维数的功能只适用于赋值语句。在其他语句中若出现超维调用的情况,MATLAB将给出出错提示。给全行(或全列)赋值,可用“ : ”。例如,给a的第5行赋值,可键入 a(5,: )=5,4,3得 a = 1.0000 2.0000 3.0000 4.0000 5.

6、0000 6.0000 7.0000 8.0000 9.0000 0 0 6.5000 5.0000 4.0000 3.0000第2章 矩阵、数组和符号运算 把a的第2、 4行及1、 3列交点上的元素取出,构成一个新矩阵b,可键入 b=a(2,4,1,3)得 b = 4.0000 6.0000 0 6.5000 要抽去a中的2、 4、 5行,可利用空矩阵 的概念。键入 a(2,4,5,: )= 得到 a = 1 2 3 7 8 9第2章 矩阵、数组和符号运算注意,“空矩阵”是指没有元素的矩阵。对任何一个矩阵赋值为 ,就是使它的元素都消失掉。这完全不同于“零矩阵”,后者是元素存在,只是其数值为零

7、而已。可以看出,空矩阵在使矩阵减缩时是不可缺少的概念。除“变量表达式(或数)”的标准形式外,可以不要等式左端而只剩下“表达式”。这有两种可能: 该表达式并不产生数字解,例如产生图形或改变系统状态; 该表达式产生数字解,但不需要保存它。此时MATLAB自动给出一个临时变量ans,把右端的结果暂存在ans中。若再做下一次运算又用到ans,则前一次的结果就被冲销了。例如键入 a/7得到 ans = 0.1429 0.2857 0.4286 1.0000 1.1429 1.2857第2章 矩阵、数组和符号运算b = 1.0000 4.6416 21.5443 100.0000由向量构成矩阵向量是组成矩

8、阵的基本元素之一。向量元素需要用方括号括起来。元素之间用空格和逗号分隔生成行向量,用分号隔开生成列向量。可以把行向量看成1n 阶矩阵,把列向量看成n1 阶矩阵。向量的构造方法: 直接输入向量 利用冒号生成向量 利用 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 。 等比数列,公比为 10(b-a)/(n-1)。 b=logspace(0,2,4)u = 0 0.3333 0.6667 1.0000 1.3333 1.6667 2

9、.0000 -1.0000 0 0.5000 1.0000 1.5000 2.0000 3.0000第2章 矩阵、数组和符号运算% x=linspace(a,b,n) 生成有 n 个元素的行向量 x,其元素值在 a、b 之间线性分布。等差数列,公差为 (b-a)/(n-1) x x = 0 0.5000 1.0000 1.5000 2.0000 y=linspace(0,2,7) y = 0 0.3333 0.6667 1.0000 1.3333 1.6667 2.0000 z=-1 x 3z = -1.0000 0 0.5000 1.0000 1.5000 2.0000 3.0000 u=y

10、;z第2章 矩阵、数组和符号运算b.利用内部函数产生矩阵%compan生成x向量的伴随矩阵 x=2,4,6,8,10 x = 2 4 6 8 10 compan(x)ans = -2 -3 -4 -5 1 0 0 0 0 1 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

11、 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 = 第2章 矩阵、数组和符号运算c.利用M文件产生矩阵 afA=1,2,3,4,5 6,7,8,9,10 11,12,13,14,15 16,17,18,19,2

12、0 21,22,23,24,25第2章 矩阵、数组和符号运算d.从外部数据文件调入矩阵 用load命令输入 用Import 菜单输入第2章 矩阵、数组和符号运算2、矩阵元素的修改 A=1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16A = 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); AA = 0 2 3 4 5 7 7 8 9 10 11 12 13 14 15 1第2章 矩阵、数组和符号

13、运算3、矩阵的运算矩阵运算按照线性代数中基本的运算法则进行;加减运算必须在具有相同行列的矩阵之间进行;只有当矩阵 A 的列数和矩阵 B 的行数相同时,才可进行矩阵 A 和 B 的乘法运算;乘方运算只有在矩阵为方阵时才有意义;当一个矩阵和一个标量( 11 的矩阵)进行运算时,其结果将是此标量和矩阵中的每一个元素“ 相加”、“ 相减”、“ 相乘”、“ 相除”;在 MATLAB 中,矩阵左除()和右除(/)的含义不同。第2章 矩阵、数组和符号运算D = 0 -3 -6 -9 3 0 -3 -6 6 3 0 -3 9 6 3 0E = 4 5 6 7 8 9 10 11 12 13 14 15 16

14、17 18 19a. 矩阵的加减运算 A=1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16 B=1,sqrt(25),9,132,6,10 7*23+sin(pi),7,11,154,abs(-8),12,16 C=A+BC = 2 7 12 17 7 12 17 22 12 17 22 27 17 22 27 32 D=A-B E=A+3第2章 矩阵、数组和符号运算矩阵的加减 两矩阵的相加(减)就是其对应元素的相加(减),因此,相加(减)的两个矩阵的阶数必须相同,且它们的和也有相同的阶数。检查矩阵阶数的MATLAB语句是size,例如: 键入 m,n=size(C

15、)得 m=4 n=4 (4行4列) 如果要自己编写矩阵A和B相加(减)的程序,就必须先求mA,nA,mB,nB,并检验是否满足mA=mB和nA=nB。确认无误后再按对应元素相加(减),得出CAB(或C=A-B)。 如果阶数检验不合格,则显示出错。第2章 矩阵、数组和符号运算当两个相加矩阵中有一个是标量时,MATLAB 承认算式有效,它自动把该标量扩展成同阶等元素矩阵,再与另一矩阵相加。例如,键入 X=-1 0 1; Y=X-1得 Y= -2 -1 0如果已经知道X是一维矩阵(数组),也可以用 l=length(X)来求它的长度。注意size有两个输出量,而length只有一个输出量。lengt

16、h不区分列或行,所以作加减法阶数检验时只能用size。注:length(X)=max(size(X)第2章 矩阵、数组和符号运算D = 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48b.矩阵乘法 C=A*BC = 30 70 110 150 70 174 278 382 110 278 446 614 150 382 614 846 D=A*3 A A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 BB = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16第2章 矩阵、数组和符号运算矩阵的

17、乘法mp阶矩阵A与pn阶矩阵B的乘积C是一个mn阶矩阵,它的任何一个元素C(i,j)的值为A阵的第i行和B阵的第j列对应元素乘积的和,即 C(i,j)=A(i,1)*B(1,j)+A(i,2)*B(2,j)+A(i,p)*B(p,j)=kA(i,k)*B(k,j)式中的乘号是普通数(标量)的乘号。p是A阵的列数,也是B阵的行数,也称为两个相乘矩阵的内阶数,两矩阵相乘的必要条件是它们的内阶数相等。不难看出,对于标量A,B,因为m,p,n均为1,矩阵乘法就退化为普通数的乘法。第2章 矩阵、数组和符号运算如果要自己编写矩阵A和B相乘的程序,就必须先求mA,nA,mB,nB,并检验nA是否等于mB,确

18、认无误后再按上式把对应元素相乘后累加,得出C(i,j)。分别取i从1到mA,j从1到nB,得出mAnB个元素,排成矩阵形式,得到C。实际上MATLAB已将矩阵加、 减、 乘的程序编程为内部函数,我们只要用、 、 * 作运算符号, 就包含了检查阶数和执行运算的全过程,而且其运算对复数有效。由此可见,前面定义的X和Y是不能相乘的,因为它们的内阶数分别为3和1。与加减法相仿,如果乘数中的一个是标量,则MATLAB不检查其内阶数,而用该标量乘以矩阵的每个元素。例如,键入 pi*X得 ans = -3.1416 0 3.1416第2章 矩阵、数组和符号运算 若把Y转置,成为31阶,内阶数变为与X的相同,

19、就可以求 X*Y得ans = 2 不难用心算检验其正确性。这个式子可读成X左乘Y。现在让X右乘Y,这时两者的内阶数都是1,而外阶数(定义中的nA和mB)都成了3。于是有Y*X得 ans = 2 0 -2 1 0 -1 0 0 0 显然,X左乘和右乘Y所得的结果是完全不同的。只有单位矩阵例外,单位矩阵乘以任何矩阵A(其阶数为mA*nA)时,不管是左乘还是右乘,其积仍等于该矩阵,即 eye(mA)*A=A A*eye(nA)=A读者可按单位矩阵的定义自行检验其正确性。第2章 矩阵、数组和符号运算设三个线性方程组成的联立方程组: x1+2x2+3x3=2 3x1-5x2+4x3=07x1+8x2+9

20、x3=2令a=1,2,3; 3,-5,4; 7,8,9; X=x1;x2;x3; b=2; 0; 2则这个联立方程组就可表示为简洁的矩阵形式a*X = b给出a和X,可以用矩阵乘法求出b。但若给出a和b,要求X,那就需要进行逆运算矩阵除法了。第2章 矩阵、数组和符号运算A=8,1,6;3,5,7;4,9,2A = 8 1 6 3 5 7 4 9 2c.矩阵除法BAans = 19 -3 -1 -17 4 13 6 0 -6C=inv(B)C = 3 -3 1 -3 5 -2 1 -2 1 C*Aans = 19 -3 -1 -17 4 13 6 0 -6B=1,1,1;1,2,3;1,3,6B

21、 = 1 1 1 1 2 3 1 3 6左除 BA=inv(B)*A A/Bans = 27 -31 12 1 2 0 -13 29 -12 C=inv(B)C = 3 -3 1 -3 5 -2 1 -2 1 A*Cans = 27 -31 12 1 2 0 -13 29 -12右除 A/B =A*inv(B)第2章 矩阵、数组和符号运算矩阵除法及线性方程组的解 在线性代数中,没有除法,只有“逆矩阵”。矩阵除法是MATLAB从逆矩阵的概念引申来的。先介绍逆矩阵的定义,对于任意nn阶方阵A,如果能找到一个同阶的方阵V,使 A*V=I,其中,I为n阶的单位矩阵eye(n),则V就是A的逆矩阵,用数

22、学符号表示为 VA-1逆矩阵V存在的条件是A的行列式det(A)不等于0,V的最古典求法为高斯消去法。 在MATLAB中已经做成了内部函数inv,键入 V=inv(A)就可得到A的逆矩阵V。如果det(A)等于或很接近于零,则MATLAB会显示出错或警告信息: “A矩阵病态(ill-conditioned),结果精度不可靠。”第2章 矩阵、数组和符号运算现在来看方程D*X=B,设X为未知矩阵,等式两端同时左乘以inv(D),即inv(D)*D*X = inv(D)*B因为等式左端inv(D)*D=I,而I*X=X, 所以上式成为 X=inv(D)*B = DB 把D的逆阵左乘以B,MATLAB

23、就记作D,称之为“左除”。左除时的阶数检验条件是: 两矩阵的行数必须相等。如果原始方程的未知数向量在左而系数矩阵在右,即 X*D=B则按上述同样的方法可以写出 X=B*inv(D)=B/D 把D的逆阵右乘以B,MATLAB就记作/D,称之为“右除”。同理,右除时的阶数检验条件是: 两矩阵的列数必须相等。第2章 矩阵、数组和符号运算 矩阵除法可以用来方便地解线性方程组。例如要求方程组6x1+3x2+4x3=3 -2x1+5x2+7x3=-48x1-4x2-3x3=-7的解x=x1; x2; x3,方程组可写成矩阵形式A*x=B,求解的MATLAB程序为A=6,3,4;-2,5,7;8,-4,-3

24、;B=3;-4;-7; x=AB得 x= 0.6000 7.0000 -5.4000第2章 矩阵、数组和符号运算MATLAB中的除法还可以用来解方程数不等于未知数个数的情况。比如再加上一个方程x15x2-7x3=9这时系数矩阵A1成为43阶,不难看出A1的行数mA1是方程数,其列数nA1是未知数的个数,nA1mA1,说明方程组是不定的,它有无穷个解。此时仍然可用除法符号来求出解。这个解是满足方程的,但它不是唯一解。它是令x1中某个或某些元素为零的一个特殊解。第2章 矩阵、数组和符号运算a.矩阵的基本变换函数 A=3,3,5;2,4,6;7,8,9 %创建方阵 A A = 3 3 5 2 4 6

25、 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 94、矩阵的函数b.常用的矩阵运算函数 只有方阵才可计算行列式值,即 det(A)的计算只有在 A 为方阵时才有意义。expm(A)/logm(A)/ sqrtm(A)计算矩阵的指数/对数/平方根是指对整个矩阵 A 求指数/对数/平方根。 第2章 矩阵、数组和符号运算第2章 矩阵、数组和符号运算 det(A) %求方阵 A 的行列式值

26、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.2

27、809i 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.矩阵的分解函数 第2章 矩阵、数组和符号运算A=LU,L为准下三角阵,U为上三角阵A=QR,Q为正交矩阵,R为上三角矩阵第2章 矩阵、数组和符号运算 X=3,-1,2;1,2,-1;-2,1,4 %输入矩阵 XX = 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.66

28、67 0.1429 1.0000U = 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.8083R = -3.7417 0.8018 0.8018 0 -2.3146 0.2777 0 0 4.5033第2章 矩阵、数组和符号运算5、数组运算 Matlab是以矩阵为基本运算单元的,数组作为独立的计算单元实体是不存在的。数组运算是Matlab的一种运算形式,它从矩

29、阵的单个元素出发,针对每个元素进行的运算。 MATLAB对数组运算在符号上做了不同的约定,运算符形式为:.* , ./ , . , .矩阵运算和数组运算有着显著的不同。属于两种不同的运算:矩阵运算是从矩阵的整体出发,按照线性代数的运算规则进行,有着明确而严格的数学规则;而数组运算是从矩阵的单个元素出发,针对每个元素进行的运算。对于加法和减法而言,矩阵运算和数组运算相同;对于乘法和除法而言,矩阵和数组的运算有着显著的不同。 第2章 矩阵、数组和符号运算 矩阵的数组乘/除及乘方数组除的运算规则:当参与除运算的两个矩阵同维时,运算为矩阵的相应元素相除,计算结果是与参与运算的矩阵同维的矩阵;当参与运算

30、的矩阵有一个是标量时,运算是标量和矩阵的每一个元素相除,计算结果是与参与运算的矩阵同维的矩阵;右除与左除的关系为 A./B=B.A,其中 A 是被除数,B 是除数。第2章 矩阵、数组和符号运算 E=1,2,3;4,5,6;7,8,9E = 1 2 3 4 5 6 7 8 9 F=1,4,7;2,5,8;3,6,9F = 1 4 7 2 5 8 3 6 9 E.Fans = 1.0000 2.0000 2.3333 0.5000 1.0000 1.3333 0.4286 0.7500 1.0000 4.Fans = 0.2500 1.0000 1.7500 0.5000 1.2500 2.000

31、0 0.7500 1.5000 2.2500 F./Eans = 1.0000 2.0000 2.3333 0.5000 1.0000 1.3333 0.4286 0.7500 1.0000 E*Fans = 14 32 50 32 77 122 50 122 194 E.*Fans = 1 8 21 8 25 48 21 48 81数组乘方的运算规则:矩阵的标量乘方 A.p( 即 A 为矩阵,p 为标量),运算为矩阵每个元素的 p 次方,计算结果是与矩阵A 同维的矩阵;标量的矩阵乘方 p.A,表示以 p 为底,分别以 A 的元素为指数求幂值,计算结果是与矩阵A 同维的矩阵。第2章 矩阵、数组

32、和符号运算 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第2章 矩阵、数组和符号运算 乘方: z7=2.x z5=x.3 z6=x.y点积、叉积: c1=dot(a,b) c1= sum(a.*b) c2=cross(a,b)注: dot(a,b)=sum(a.*b)第2章 矩阵、数组和符号运算 元素群的四则运算和幂次运算 元素群运算也就是矩阵中所有元素按单个元素进行运算。为了与矩阵作为整体的运算符号相区别,要在运算符“*、 、 、 ”前加一点

33、符号“.”,以表示进行的是元素群运算。参与元素群运算的两个矩阵必须是同阶的(标量除外,它会自动扩展为同阶矩阵参与运算),表2.5中表示两个13阶的元素群运算的结果。因为数取得很简单, 所以可用心算加以检验。第2章 矩阵、数组和符号运算 注:表中X=1,2,3 Y=4,5,6 元素群的幂次运算也就是各个元素自行作幂次运算,对每个元素而言,这种运算和对标量运算一样,所以很容易判定它的正确性。表 2.5第2章 矩阵、数组和符号运算 表2.6中参与元素群运算的是一个33阶方阵,这是为了便于比较矩阵中的元素运算和矩阵整体运算的不同(因为非方阵是不能按整体作矩阵乘幂运算的)。特别注意D 3 和D.3结果的

34、不同。3.D与3D也完全不同,3D是合法运算,读者可自行实践并对其结果作出解释,不过这是比较难的题目,本书不作要求。表 2.6第2章 矩阵、数组和符号运算 元素群的函数 所有的MATLAB函数都适用于作元素群运算,只有专门说明的几个除外。那就是*、 /、 、 运算符和sqrtm、 expm、 logm三个函数。表2.7初等数学函数库中的常用函数都可用于元素群运算, 即其自变量都可以是任意阶的矩阵。第2章 矩阵、数组和符号运算 反余割双曲余切反双曲余切表 2.7第2章 矩阵、数组和符号运算 以2为底的对数余数与被除数同号余数与除数同号第2章 矩阵、数组和符号运算 下面的例子可以说明利用元素群运算

35、的优越性。例如,要求列出一个三角函数表, 这在MATLAB中只要两条语句, 键入 x=0: 0.1: pi/4; x,sin(x),cos(x),tan(x)第一条语句给数组x赋值,经转置后成为一个列向量。因为sin,cos,tan函数都对元素群有效, 所以得出的都是同阶的列向量。第二条语句把四个列向量组成一个矩阵,并进行显示,得0 0 1.0000 0 0.1000 0.0998 0.9950 0.1003 0.2000 0.1987 0.9801 0.2027 0.3000 0.2955 0.9553 0.3093 0.4000 0.3894 0.9211 0.4228 0.5000 0.

36、4794 0.8776 0.5463 0.6000 0.5646 0.8253 0.6841 0.7000 0.6442 0.7648 0.8423第2章 矩阵、数组和符号运算 第一列是x,以下各列依次是 sin(x)、 cos(x)、 tan(x)。如果要加一个表头,第二条语句可改成两条如下的显示语句: disp(x sin(x) cos(x) tan(x) ) disp(x,sin(x),cos(x),tan(x)disp后括号内引号中的内容是直接显示的,放入空格就显示空格,放入汉字就显示汉字。后一句括号中没有引号,是变量名组成的矩阵,它就显示该矩阵中各变量的值。 6 关系运算 MATLA

37、B提供了6种关系运算符: (小于)、(大于)、=(大于或等于)、=(等于)、=(不等于)。 它们的含义不难理解,但要注意其书写方法与数学中的不等式符号不尽相同。第2章 矩阵、数组和符号运算 关系运算符的运算法则为:(1) 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。 (2) 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。(3) 当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个

38、比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。第2章 矩阵、数组和符号运算 例 产生5阶随机方阵A,其元素为10,90区间的随机整数,然后判断A的元素是否能被3整除。 (1) 生成5阶随机方阵A。 A=fix(90-10+1)*rand(5)+10) (2) 判断A的元素是否可以被3整除。 P=rem(A,3)=0 其中,rem(A,3)是矩阵A的每个元素除以3的余数矩阵。此时,0被扩展为与A同维数的零矩阵,P是进行等于(=)比较的结果矩阵。第2章 矩阵、数组和符号运算 7 逻辑运算 MATLAB提供了3种逻辑运算符: &(与)、|(或)和(

39、非)。 逻辑运算的运算法则为:(1) 在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。(2) 设参与逻辑运算的是两个标量a和b,那么, a&b a,b全为非零时,运算结果为1,否则为0。 a|b a,b中只要有一个非零,运算结果为1。 a 当a是零时,运算结果为1;当a非零时,运算结果为0。第2章 矩阵、数组和符号运算 (3) 若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。(4) 若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运

40、算结果是一个与矩阵同维的矩阵,其元素由1或0组成。(5) 逻辑非是单目运算符,也服从矩阵运算规则。(6) 在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。第2章 矩阵、数组和符号运算 第2章 矩阵、数组和符号运算 所有的算法语言中都有逻辑运算。MATLAB的特点是使逻辑运算用于元素群,得出同阶的0-1矩阵。表 2.11第2章 矩阵、数组和符号运算 现在来看逻辑式 u=p|p,这是把p和非p求“或”。p就是把p中的0元素换成1,1元素换成0。在p和非p对应位置上的元素,必有一个是1 ,把p和p“或”起来,一定是全1。得 u = 1 1 1 1 1 1 1 1 1 1 1 1 1

41、 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1p = 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 第2章 矩阵、数组和符号运算 为了按列、 按行判断一群元素的逻辑值,MATLAB中又增加了两种对元素群的逻辑运算函数all(全为真)和any(不全为假)。 all和any后的输入变量应为矩阵,它是按列运算的。从它们的定义可知 all(p)= 0 0 0 0 0 0 (列中有一个元素为0,即得0) all(u)= 1 1 1 1 1 1 (列中元素为全1,

42、才得1) any(p)= 1 1 1 1 1 1 (列中有一个元素为1,即得1)第2章 矩阵、数组和符号运算 j,k= find(p) 给出p矩阵中不为零的元素的两个下标, find(p)或lp=find(p)给出p矩阵中不为零的元素的顺序号。矩阵元素是按列排序号的,先排第一列,再排第二列 ,依次排完后,再确定它们的顺序号。一个66的矩阵的36个元素的序号排列见表 2.10。因此一个mn阵中下标为(j,k)的元素,其序号为l=(k-1)*m+j。表 2.10第2章 矩阵、数组和符号运算 键入 lp=find(p=0)或者 lp=find(p)得 lp= 2 5 9 12 13 16 20 23

43、 27 30 31 34 可以看出这些序号确实对应于p中的l元素。矩阵的序号(index)与下标(subscript)是一一对应的。p = 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 例 建立矩阵A,然后找出大于4的元素的位置。(1) 建立矩阵A。A=4,-65,-54,0,6;56,0,67,-45,0 (2) 找出大于4的元素的位置。find(A4) %find 寻找非零元素的下标和值 find(A4)ans = 2 6 9 第2章 矩阵、数组和符号运算A = 4 -65 -54 0 6 5

44、6 0 67 -45 0第2章 矩阵、数组和符号运算 表 2.9第2章 矩阵、数组和符号运算 8 矩阵分析A 对角阵与三角阵1对角阵只有对角线上有非0元素的矩阵称为对角矩阵;对角线上的元素相等的对角矩阵称为数量矩阵;对角线上的元素都为1的对角矩阵称为单位矩阵。第2章 矩阵、数组和符号运算 (1) 提取矩阵的对角线元素 设A为mn矩阵,diag(A)函数用于提取矩阵A主对角线元素,产生一个具有min(m,n)个元素的列向量。diag(A)函数还有一种形式diag(A,k),其功能是提取第k条对角线的元素。(2) 构造对角矩阵 设V为具有m个元素的向量,diag(V)将产生一个mm对角矩阵,其主对

45、角线元素即为向量V的元素。diag(V)函数也有另一种形式diag(V,k),其功能是产生一个nn(n=m+|k|)对角阵,其第k条对角线的元素即为向量V的元素。第2章 矩阵、数组和符号运算第2章 矩阵、数组和符号运算例 先建立55矩阵A,然后将A的第一行元素乘以1,第二行乘以2,第五行乘以5。A=17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;.11,18,25,2,19; D=diag(1:5); D*A %用D左乘A,对A的每行乘以一个指定常数第2章 矩阵、数组和符号运算 D=diag(1:5)D = 1 0 0 0 0 0 2 0

46、0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 5 A = 17 0 1 0 15 23 5 7 14 16 4 0 13 0 22 10 12 19 21 3 11 18 25 2 19 D*Aans = 17 0 1 0 15 46 10 14 28 32 12 0 39 0 66 40 48 76 84 12 55 90 125 10 95第2章 矩阵、数组和符号运算2三角阵 三角阵又进一步分为上三角阵和下三角阵,所谓上三角阵,即矩阵的对角线以下的元素全为0的一种矩阵,而下三角阵则是对角线以上的元素全为0的一种矩阵。(1) 上三角矩阵 求矩阵A的上三角阵的MATLAB函数

47、是triu(A)。triu(A)函数也有另一种形式triu(A,k),其功能是求矩阵A的第k条对角线以上的元素。例如, B=triu(A,2)提取矩阵A的第2条对角线以上的元素,形成新的矩阵B。(2) 下三角矩阵 在MATLAB中,提取矩阵A的下三角矩阵的函数是tril(A)和tril(A,k),其用法与提取上三角矩阵的函数triu(A)和triu(A,k)完全相同。第2章 矩阵、数组和符号运算第2章 矩阵、数组和符号运算B 矩阵的转置与旋转1矩阵的转置转置运算符是单撇号()。2矩阵的旋转利用函数rot90(A,k)将矩阵A逆时针旋转90的k倍,当k为1时可省略。第2章 矩阵、数组和符号运算C

48、矩阵的翻转1. 矩阵的左右翻转 对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,依次类推。MATLAB对矩阵A实施左右翻转的函数是fliplr(A)。2矩阵的上下翻转MATLAB对矩阵A实施上下翻转的函数是flipud(A)。D 方阵的行列式 把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。在MATLAB中,求方阵A所对应的行列式的值的函数是det(A)。第2章 矩阵、数组和符号运算第2章 矩阵、数组和符号运算E 矩阵的秩与迹1矩阵的秩矩阵线性无关的行数(或列数)称为矩阵的秩。在MATLAB中,求矩阵秩的函数是rank(A)。

49、2矩阵的迹矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。在MATLAB中,求矩阵的迹的函数是trace(A)。第2章 矩阵、数组和符号运算F 向量和矩阵的范数 矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。范数有多种方法定义,其定义不同,范数值也就不同。1向量的3种常用范数及其计算函数在MATLAB中,求向量范数的函数为:(1) norm(V)或norm(V,2):计算向量V的2范数。(2) norm(V,1):计算向量V的1范数。(3) norm(V,inf):计算向量V的范数。2矩阵的范数及其计算函数MATLAB提供了求3种矩阵范数的函数,其函数调用格式与求向量的范数的

50、函数完全相同。G 矩阵的条件数 在MATLAB中,计算矩阵A的3种条件数的函数是:(1) cond(A,1) 计算A的1范数下的条件数。(2) cond(A)或cond(A,2) 计算A的2范数下的条件数。(3) cond(A,inf) 计算A的 范数下的条件数。第2章 矩阵、数组和符号运算第2章 矩阵、数组和符号运算H 矩阵的特征值与特征向量 在MATLAB中,计算方阵A的特征值和特征向量的函数是eig(A),常用的调用格式有3种:(1) E=eig(A):求矩阵A的全部特征值,构成列向量E。(2) V,D=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。

51、(3) V,D=eig(A,nobalance):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。第2章 矩阵、数组和符号运算 a=2,9,0,0;0,4,1,4;7,5,5,1;7,8,7,4; E=eig(a); V,D=eig(a); V,D=eig(a,nobalance);第2章 矩阵、数组和符号运算例2-12 用求特征值的方法解方程。3x5-7x4+5x2+2x-18=0p=3,-7,0,5,2,-18;A=compan(p); %p的伴随矩阵x1=eig(A) %求A的特征值x2=roots(p) %直接求多项式p的零点第2章 矩阵、数组和符号运算 p=3,-7,0,5,2,-18; A=compan(p) A = 2.3333 0 -1.6667 -0.6667 6.0000 1.0000 0 0 0 0 0 1.0000 0 0 0 0 0 1.0000 0 0 0 0 0 1.0000 0 x1=eig(A) x1 = 2.1837 1.0000 + 1.0000i 1.0000 - 1.0000i -0.9252 + 0.7197i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论