《矩阵、数组和符号运算.ppt》由会员分享,可在线阅读,更多相关《矩阵、数组和符号运算.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2.3矩阵、数组和符号运算矩阵、数组和符号运算一、矩阵和数组运算一、矩阵和数组运算要求内容:要求内容:(1)熟练掌握)熟练掌握矩阵的创建矩阵的创建。(2)掌握)掌握矩阵运算矩阵运算和和数组运算数组运算。(3)学会如何使用)学会如何使用矩阵运算函数矩阵运算函数和和数组运算函数数组运算函数。(4)注意区分矩阵和数组的差别,特别是运算符的差别。)注意区分矩阵和数组的差别,特别是运算符的差别。(6)了解)了解多项式多项式的创建方法和基本运算。的创建方法和基本运算。MATLAB以以矩矩阵阵为为基基本本的的运运算算单单元元,向向量量和和标标量量作作为为特特殊殊的的矩矩阵阵处处理理:向向量量看看作作只只有有
2、一一行行或或一一列列的的矩矩阵阵;标量标量看作只有一个元素的矩阵。看作只有一个元素的矩阵。1、矩阵的构造矩阵的构造a.直接输入直接输入b.利用利用内部函数内部函数产生矩阵产生矩阵c.利用利用M文件文件产生矩阵产生矩阵d.从从外部数据文件外部数据文件调入矩阵调入矩阵2.3矩阵、数组和符号运算矩阵、数组和符号运算2.3矩阵、数组和符号运算矩阵、数组和符号运算a.直接输入直接输入直接输入需遵循以下直接输入需遵循以下基本规则基本规则:整整个个矩矩阵阵应应以以“”为为首首尾尾,即即整整个个输输入入矩矩阵阵必必须须包包含含在方括号中;在方括号中;矩矩阵阵中中,行行与与行行之之间间必必须须用用分分号号“;”
3、或或Enter键键(按按Enter键)符分隔;键)符分隔;每行中的元素用逗号每行中的元素用逗号“,”或或空格空格分隔;分隔;矩矩阵阵中中的的元元素素可可以以是是数数字字或或表表达达式式,但但表表达达式式中中不不可可包包含含未未知知的的变变量量,MATLAB用用表表达达式式的的值值为为该该位位置置的的矩矩阵阵元元素素赋赋值值。当当矩矩阵阵中中没没有有任任何何元元素素时时,该该矩矩阵阵被被称称作作“空阵空阵”(EmptyMatrix)。)。A=1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16A=12345678910111213141516利用表达式输入利用表达式输入B
4、=1,sqrt(25),9,132,6,10,7*23+sin(pi),7,11,154,abs(-8),12,16B=159132610143711154812162.3矩阵、数组和符号运算矩阵、数组和符号运算2.3矩阵、数组和符号运算矩阵、数组和符号运算由向量构成矩阵由向量构成矩阵向量是组成向量是组成矩阵的基本元素矩阵的基本元素之一。向量元素需要用方括号之一。向量元素需要用方括号括起来。元素之间用括起来。元素之间用空格空格和和逗号逗号分隔生成分隔生成行向量行向量,用,用分号分号隔开生成隔开生成列向量列向量。可以把。可以把行向量行向量看成看成1 n 阶矩阵,阶矩阵,把把列向列向量量看成看成n
5、 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.00004.641621.5443100.0000 xx=00.50001.00001.50002.0000%x=linspace(a,b,n)生成有生成有n个元素的行向量个元素的行向量x,其元素值在其元
6、素值在a、b之间线性分布。之间线性分布。y=linspace(0,2,7)y=00.33330.66671.00001.33331.66672.0000z=-1x3z=-1.000000.50001.00001.50002.00003.0000u=y;zu=00.33330.66671.00001.33331.66672.0000-1.000000.50001.00001.50002.00003.00002.3矩阵、数组和符号运算矩阵、数组和符号运算2.3矩阵、数组和符号运算矩阵、数组和符号运算b.利用内部函数产生矩阵利用内部函数产生矩阵%compan生成生成x向量的伴随矩阵向量的伴随矩阵x=
7、2,4,6,8,10 x=246810compan(x)ans=-2-3-4-5-610000010000010000010%eye生成生成单位阵单位阵S=eye(6)S=100000010000001000000100000010000001%ones生成生成全部元素为全部元素为1的矩阵的矩阵ones(3,4)ans=111111111111F=5*ones(3)F=555555555%zeros生成生成全部元素为全部元素为0的矩阵的矩阵Z=zeros(2,4)Z=00000000%rand生成均匀分布的生成均匀分布的随机矩阵随机矩阵R=rand(4)R=0.95010.89130.8214
8、0.92180.23110.76210.44470.73820.60680.45650.61540.17630.48600.01850.79190.4057%生成空阵生成空阵K=K=2.3矩阵、数组和符号运算矩阵、数组和符号运算c.利用利用M文件产生矩阵文件产生矩阵A=1,2,3,4,56,7,8,9,1011,12,13,14,1516,17,18,19,2021,22,23,24,252.3矩阵、数组和符号运算矩阵、数组和符号运算d.从外部数据文件调入矩阵用load命令输入用Import菜单输入2.3矩阵、数组和符号运算矩阵、数组和符号运算2、矩阵元素的修改矩阵元素的修改A=1,2,3,4
9、;5,6,7,8;9,10,11,12;13,14,15,16A=12345678910111213141516A(1,1)ans=1A(2,3)ans=7A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0);AA=02345778910111213141512.3矩阵、数组和符号运算矩阵、数组和符号运算3、矩阵的运算、矩阵的运算矩阵运算按照矩阵运算按照线性代数中基本的运算法则线性代数中基本的运算法则进行;进行;加减运算必须在具有相同行列的矩阵之间进行;加减运算必须在具有相同行列的矩阵之间进行;只只有有当当矩矩阵阵A的的列列数数和和矩矩阵阵B的的行行数数相相同
10、同时时,才才可可进进行矩阵行矩阵A和和B的的乘法运算乘法运算;乘方运算乘方运算只有在矩阵为只有在矩阵为方阵方阵时才有意义;时才有意义;当当一一个个矩矩阵阵和和一一个个标标量量(11的的矩矩阵阵)进进行行运运算算时时,其其结结果果将将是是此此标标量量和和矩矩阵阵中中的的每每一一个个元元素素“相相加加”、“相减相减”、“相乘相乘”、“相除相除”;在在MATLAB中,矩阵左除和右除的含义不同。中,矩阵左除和右除的含义不同。2.3矩阵、数组和符号运算矩阵、数组和符号运算a.矩阵的加减运算矩阵的加减运算A=1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16B=1,sqrt(25
11、),9,132,6,107*23+sin(pi),7,11,154,abs(-8),12,16C=A+BC=27121771217221217222717222732D=A-BD=0-3-6-930-3-6630-39630E=A+3E=456789101112131415161718192.3矩阵、数组和符号运算矩阵、数组和符号运算b.矩阵乘法矩阵乘法C=A*BC=307011015070174278382110278446614150382614846D=A*3D=36912151821242730333639424548c.矩阵除法矩阵除法左除左除AB=inv(A)*BA=8,1,6;3
12、,5,7;4,9,2A=816357492B=1,1,1;1,2,3;1,3,6B=111123136ABans=0.06670.05000.09720.06670.30000.63890.06670.0500-0.0694C=inv(A)C=0.1472-0.14440.0639-0.06110.02220.1056-0.01940.1889-0.1028C*Bans=0.06670.05000.09720.06670.30000.63890.06670.0500-0.0694右除右除A/B=A*inv(B)A/Bans=27-3112120-1329-12D=inv(B)D=3-31-35
13、-21-21A*Dans=27-3112120-1329-122.3矩阵、数组和符号运算矩阵、数组和符号运算当当对对矩矩阵阵作作除除法法运运算算时时,有有可可能能因因为为误误差差设设置置的的差差别别导导致致不不精精确确的的结结果果,此时,此时,MATLAB会自动给出警告信息会自动给出警告信息:MATLAB采采用用IEEE(国国际际认认可可的的)算算法法,即即使使A为为奇奇异异阵阵(即即A的的行行列列式式值值是是0),运运算算也也照照样样进进行行,但但是是此此时时MATLAB将将给给出出警警告告信信息息:“Warning:Matrixissingulartoworkingprecision.”,
14、求求出出的的矩矩阵所有元素为无穷大(阵所有元素为无穷大(Inf););当当矩矩阵阵A为为病病态态阵阵(BadlyScaled)时时,MATLAB使使用用的的算算法法产产生生的的误误差差可可能能很很大大,MATLAB 系系统统也也将将给给出出警警告告信信息息:“Warning:Matrixisbadlyscaledtoworkingprecision.Resultsmaybeinaccurate.”。E=1,2,3;4,5,6;7,8,9E=123456789F=1,4,7;2,5,8;3,6,9F=147258369EFWarning:Matrixisclosetosingularorbadl
15、yscaled.Resultsmaybeinaccurate.RCOND=1.541976e-018.ans=-0.3333-7.3333-14.33330.666711.666722.66670-4.0000-8.00002.3矩阵、数组和符号运算矩阵、数组和符号运算4、矩阵的函数矩阵的函数a.a.矩阵的基本变换函数矩阵的基本变换函数 A=3,3,5;2,4,6;7,8,9%创建方阵AA=335246789inv(A)%矩阵的逆(A必须为非奇异方阵)ans=0.5000-0.54170.0833-1.00000.33330.33330.50000.1250-0.2500A%矩阵的转置ans=
16、327348569b.b.常用的矩阵运算函数常用的矩阵运算函数只只有有方方阵阵才才可可计计算算行行列列式式值值,即即det(A)的的计计算算只只有有在在A为为方方阵阵时才有意义。时才有意义。logm(A)和和sqrtm(A)计算矩阵的对数计算矩阵的对数/平方平方根是指对根是指对整个矩阵整个矩阵A求对数求对数/平方根平方根。2.3矩阵、数组和符号运算矩阵、数组和符号运算2.3矩阵、数组和符号运算矩阵、数组和符号运算det(A)%求方阵A的行列式值ans=-24eig(A)%求特征值ans=16.75030.8793-1.6295logm(A)%求矩阵A的对数ans=0.5432+0.8066i0
17、.7475+0.5526i0.6902-0.6914i0.8584+1.4131i0.7845+0.9681i0.6967-1.2112i0.7502-1.5947i1.1089-1.0926i1.8504+1.3668isqrtm(A)%求矩阵A的平方根ans=1.2466+0.3278i0.5192+0.2246i1.0906-0.2809i0.2001+0.5742i1.4228+0.3934i1.3620-0.4921i1.6144-0.6480i1.7430-0.4439i2.3610+0.5554ic.c.矩阵的分解函数矩阵的分解函数2.3矩阵、数组和符号运算矩阵、数组和符号运算2
18、.3矩阵、数组和符号运算矩阵、数组和符号运算X=3,-1,2;1,2,-1;-2,1,4%输入矩阵XX=3-1212-1-214L,U=lu(X)%对矩阵X进行LU分解L=1.0000000.33331.00000-0.66670.14291.0000U=3.0000-1.00002.000002.3333-1.6667005.5714Q,R=qr(X)%对矩阵X进行QR分解Q=-0.80180.15430.5774-0.2673-0.9567-0.11550.5345-0.24690.8083R=-3.74170.80180.80180-2.31460.2777004.50332.3矩阵、数
19、组和符号运算矩阵、数组和符号运算5、数组运算、数组运算Matlab是以矩阵为基本运算单元的,是以矩阵为基本运算单元的,数组作为独立的计数组作为独立的计算单元实体是不存在的。数组运算算单元实体是不存在的。数组运算是是Matlab的一种运算形的一种运算形式,式,它它从矩阵的单个元素出发,针对每个元素进行的运算。从矩阵的单个元素出发,针对每个元素进行的运算。MATLAB对对数组运算数组运算在符号上做了不同的约定,在符号上做了不同的约定,运算符运算符运算符运算符形式为:形式为:形式为:形式为:.*,./,.,.*,./,.,.矩阵运算和数组运算矩阵运算和数组运算有着显著的不同。属于两种不同的有着显著的
20、不同。属于两种不同的运算:运算:矩阵运算矩阵运算是从矩阵的整体出发,按照线性代数的运是从矩阵的整体出发,按照线性代数的运算规则进行算规则进行,有着明确而严格的数学规则;,有着明确而严格的数学规则;而数组运算而数组运算是是从矩阵的单个元素出发,针对每个元素进行的运算从矩阵的单个元素出发,针对每个元素进行的运算。对于加法和减法而言,矩阵运算和数组运算相同对于加法和减法而言,矩阵运算和数组运算相同;对于;对于乘法和除法而言,矩阵和数组的运算有着显著的不同。乘法和除法而言,矩阵和数组的运算有着显著的不同。2.3矩阵、数组和符号运算矩阵、数组和符号运算a.矩阵的矩阵的数组乘数组乘/除及乘方除及乘方b.数
21、组除数组除的运算规则:的运算规则:当当参参与与除除运运算算的的两两个个矩矩阵阵同同维维时时,运运算算为为矩矩阵阵的的相相应应元元素素相相除除,计计算算结结果果是是与与参参与与运算的矩阵同维的矩阵;运算的矩阵同维的矩阵;当当参参与与运运算算的的矩矩阵阵有有一一个个是是标标量量时时,运运算算是是标标量量和和矩矩阵阵的的每每一一个个元元素素相相除除,计计算算结结果是与参与运算的矩阵同维的矩阵;果是与参与运算的矩阵同维的矩阵;右右除除与与左左除除的的关关系系为为A./B=B.A,其其中中A是被除数,是被除数,B是除数。是除数。2.3矩阵、数组和符号运算矩阵、数组和符号运算E=1,2,3;4,5,6;7
22、,8,9E=123456789F=1,4,7;2,5,8;3,6,9F=147258369E.Fans=1.00002.00002.33330.50001.00001.33330.42860.75001.00004.Fans=0.25001.00001.75000.50001.25002.00000.75001.50002.2500F./Eans=1.00002.00002.33330.50001.00001.33330.42860.75001.0000E*Fans=143250327712250122194E.*Fans=182182548214881数组乘方数组乘方的运算规则:的运算规则:
23、矩矩阵阵的的标标量量乘乘方方A.p(即即A为为矩矩阵阵,p为为标标量量),运运算算为为矩矩阵阵每每个个元元素素的的p次次方方,计计算算结结果果是是与与矩阵矩阵A同维的矩阵;同维的矩阵;标标量量的的矩矩阵阵乘乘方方p.A,表表示示以以p为为底底,分分别别以以A的的元元素素为为指指数数求求幂幂值值,计计算算结结果果是是与与矩矩阵阵A同同维的矩阵。维的矩阵。2.3矩阵、数组和符号运算矩阵、数组和符号运算b.b.向量的向量的数组运算数组运算:加加/减法:减法:x=1,2,3y=4,5,6c=x-ya=1+x乘乘/除法除法:b=2*xb=2.*xz3=x.9z4=x./9z=x.*yz1=x./yz2=
24、x.y2.3矩阵、数组和符号运算矩阵、数组和符号运算乘方:乘方:z7=2.xz5=x.3z6=x.y点积、叉积:点积、叉积:c1=dot(a,b)c1=sum(a.*b)c2=cross(a,b)6、数组函数、数组函数常用的数学常用的数学函数函数2.3矩阵、数组和符号运算矩阵、数组和符号运算常用三角函数和超越函数常用三角函数和超越函数2.3矩阵、数组和符号运算矩阵、数组和符号运算A=3,3,5;2,4,6;7,8,9A=335246789log(A)ans=1.09861.09861.60940.69311.38631.79181.94592.07942.1972sqrt(A)ans=1.73
25、211.73212.23611.41422.00002.44952.64582.82843.0000cos(A)ans=-0.9900-0.99000.2837-0.4161-0.65360.96020.7539-0.1455-0.9111pow2(A)ans=8832416641282565122.Aans=8832416641282565122.3矩阵、数组和符号运算矩阵、数组和符号运算7、多项式及其运算、多项式及其运算a.多项式的输入多项式的输入向量向量A=a0,a1,an-1,an,则命令则命令poly(A)会生成会生成(x-a0)(x-a1)(x-an-1)(x-an)的多项式的多项
26、式aa=1234PA=poly(a)PA=1-1035-5024poly2sym(PA,x)ans=x4-10*x3+35*x2-50*x+24p_a=poly2sym(a)p_a=x3+2*x2+3*x+42.3矩阵、数组和符号运算矩阵、数组和符号运算b.多项式的运算多项式的运算aa=1234b=0,1b=01加法:加法:c=a+00bc=1235乘法:乘法:d=conv(a,b)d=01234除法:除法:div,rest=deconv(d,a)div=01rest=00000微分:微分:polyder(a)ans=343求根:求根:roots(a)ans=-1.6506-0.1747+1.
27、5469i-0.1747-1.5469i2.3矩阵、数组和符号运算矩阵、数组和符号运算求值:求值:a=1,2,3,4a=1234b=1,1;1,1b=1111polyvalm(a,4)%x=4时多项式的值ans=112%与polyval(a,4)结果相同polyval(a,b)%数组运算ans=10101010polyvalm(a,b)%矩阵运算ans=151111152.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)*x
28、1.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(Originalcurve,Fittedcurve)axis(0,7,-1.2,4)(1)在在MATLAB6.0的的工工作作空空间间中中用用直直接接输输入入法法建建立立如如下下两两个个矩矩阵阵,然然后后在在矩矩阵阵编编辑辑器器中中将将矩矩阵阵A改改为为3行行3列列的的矩矩阵,并将其保存。阵,并将其保存。,(2)分分别别对对(1)产产生生的的两两个个矩矩阵阵作作加加、减减、乘乘和和除除(左左除除,右右除除)运运算算,同同时时运运用用数数组组运运
29、算算法法则则进进行行运运算算,比比较较二二者者的计算结果有何异同。的计算结果有何异同。(3)利利用用矩矩阵阵生生成成函函数数建建立立一一个个对对角角线线元元素素全全部部为为1的的4阶单位矩阵。阶单位矩阵。(4)利用矩阵生成函数建立一个)利用矩阵生成函数建立一个44的随机矩阵。的随机矩阵。上机习题(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上机练习(4)
限制150内