1 / 32

第 3 章 矩阵、数组和符号运算

第 3 章 矩阵、数组和符号运算. 一、矩阵和数组运算  要求内容: ( 1 )熟练掌握 矩阵的创建 。 ( 2 )掌握 矩阵运算 和 数组运算 。 ( 3 )学会如何使用 矩阵运算函数 和 数组运算函数 。 ( 4 )注意区分矩阵和数组的差别,特别是运算符的差别。 ( 6 )了解 多项式 的创建方法和基本运算。. 第 3 章 矩阵、数组和符号运算. MATLAB 以 矩阵 为基本的运算单元, 向量和标量 作为特殊的矩阵处理: 向量 看作只有一行或一列的矩阵; 标量 看作只有一个元素的矩阵。 1 、 矩阵的构造 a. 直接输入

Télécharger la présentation

第 3 章 矩阵、数组和符号运算

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第3章 矩阵、数组和符号运算 一、矩阵和数组运算  要求内容: ( 1)熟练掌握矩阵的创建。 ( 2)掌握矩阵运算和数组运算。 ( 3)学会如何使用矩阵运算函数和数组运算函数。 ( 4)注意区分矩阵和数组的差别,特别是运算符的差别。 ( 6)了解多项式的创建方法和基本运算。

  2. 第3章 矩阵、数组和符号运算 MATLAB 以矩阵为基本的运算单元,向量和标量作为特殊的矩阵处理:向量看作只有一行或一列的矩阵;标量看作只有一个元素的矩阵。 1、 矩阵的构造 a.直接输入 b.利用内部函数产生矩阵 c.利用M文件产生矩阵 d.从外部数据文件调入矩阵

  3. 第3章 矩阵、数组和符号运算 a.直接输入 直接输入需遵循以下基本规则: 整个矩阵应以“ [ ]”为首尾,即整个输入矩阵必须包含在方括号中; 矩阵中,行与行之间必须用分号“ ;”或 Enter键( 按 Enter 键)符分隔; 每行中的元素用逗号“ ,”或空格分隔; 矩阵中的元素可以是数字或表达式,但表达式中不可包含未知的变量,MATLAB用表达式的值为该位置的矩阵元素赋值。当矩阵中没有任何元素时,该矩阵被称作“ 空阵”( Empty Matrix)。

  4. 第3章 矩阵、数组和符号运算 • >> 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

  5. 第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

  6. 第3章 矩阵、数组和符号运算 >> 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

  7. 第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 =   []

  8. 第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]

  9. 第3章 矩阵、数组和符号运算 d.从外部数据文件调入矩阵 用load命令输入 用Import 菜单输入

  10. 第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

  11. 第3章 矩阵、数组和符号运算 • 3、矩阵的运算 • 矩阵运算按照线性代数中基本的运算法则进行; • 加减运算必须在具有相同行列的矩阵之间进行; • 只有当矩阵 A 的列数和矩阵 B 的行数相同时,才可进行矩阵 A 和 B 的乘法运算; • 乘方运算只有在矩阵为方阵时才有意义; • 当一个矩阵和一个标量( 1×1 的矩阵)进行运算时,其结果将是此标量和矩阵中的每一个元素“ 相加”、“ 相减”、“ 相乘”、“ 相除”; • 在 MATLAB 中,矩阵左除和右除的含义不同。矩阵右除定义为:B\A=(A′/B′)。

  12. 第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

  13. 第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

  14. 第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

  15. 第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

  16. 第3章 矩阵、数组和符号运算 b.常用的矩阵运算函数 只有方阵才可计算行列式值,即 det(A)的计算只有在 A 为方阵时才有意义。 logm(A)和 sqrtm(A)计算矩阵的对数/平方根是指对整个矩阵 A求对数/平方根。

  17. 第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

  18. 第3章 矩阵、数组和符号运算 c.矩阵的分解函数

  19. 第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

  20. 第3章 矩阵、数组和符号运算 • 5、数组运算 • Matlab是以矩阵为基本运算单元的,数组作为独立的计算单元实体是不存在的。数组运算是Matlab的一种运算形式,它从矩阵的单个元素出发,针对每个元素进行的运算。 • MATLAB对数组运算在符号上做了不同的约定,运算符形式为:.* , ./ , .\ , .^ • 矩阵运算和数组运算有着显著的不同。属于两种不同的运算:矩阵运算是从矩阵的整体出发,按照线性代数的运算规则进行,有着明确而严格的数学规则;而数组运算是从矩阵的单个元素出发,针对每个元素进行的运算。 • 对于加法和减法而言,矩阵运算和数组运算相同;对于乘法和除法而言,矩阵和数组的运算有着显著的不同。

  21. 第3章 矩阵、数组和符号运算 • 矩阵的数组乘/除及乘方 • 数组除的运算规则: • 当参与除运算的两个矩阵同维时,运算为矩阵的相应元素相除,计算结果是与参与运算的矩阵同维的矩阵; • 当参与运算的矩阵有一个是标量时,运算是标量和矩阵的每一个元素相除,计算结果是与参与运算的矩阵同维的矩阵; • 右除与左除的关系为 A./B=B.\A,其中 A 是被除数,B 是除数。

  22. 第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

  23. 第3章 矩阵、数组和符号运算 数组乘方的运算规则: ①矩阵的标量乘方A.^p( 即 A 为矩阵,p 为标量),运算为矩阵每个元素的 p 次方,计算结果是与矩阵A 同维的矩阵; ②标量的矩阵乘方p.^A,表示以 p 为底,分别以 A 的元素为指数求幂值,计算结果是与矩阵A 同维的矩阵。

  24. 第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 乘方: >> z7=2.^x >> z5=x.^3 >> z6=x.^y 点积、叉积: >> c1=dot(a,b) >> c1= sum(a.*b) >> c2=cross(a,b)

  25. 第3章 矩阵、数组和符号运算 6、数组函数 常用的数学函数

  26. 第3章 矩阵、数组和符号运算 常用三角函数和超越函数

  27. 第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

  28. 第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

  29. 第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

  30. 第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 多项式拟合: >> 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)*x1.^2+p(5)*x1+p(6); >> plot(x1,y1,'b-',x1,y2,'r*') >> legend('Original curve','Fitted curve') >> axis([0,7,-1.2,4])

  31. 上机习题(4) ( 1)在 MATLAB 6.0 的工作空间中用直接输入法建立如下两个矩阵,然后在矩阵编辑器中将矩阵A改为3行3列的矩阵,并将其保存。 ,  ( 2)分别对(1)产生的两个矩阵 作加、减、乘和除(左除,右除)运算,同时运用数组运算法则进行运算,比较二者的计算结果有何异同。 ( 3)利用矩阵生成函数建立一个对角线元素全部为 1 的 4 阶单位矩阵。 ( 4)利用矩阵生成函数建立一个 4×4 的随机矩阵。

  32. 上机练习(4) ( 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]

More Related