《第2章 数值计算功能精选文档.ppt》由会员分享,可在线阅读,更多相关《第2章 数值计算功能精选文档.ppt(66页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2章 数值计算功能本讲稿第一页,共六十六页n n MATLABMATLAB应用相当广泛的一个领域是解决数值计算问题。应用相当广泛的一个领域是解决数值计算问题。应用相当广泛的一个领域是解决数值计算问题。应用相当广泛的一个领域是解决数值计算问题。这是由于这是由于这是由于这是由于MATLAB MATLAB 对处理数组具有非凡的能力,使其成为对处理数组具有非凡的能力,使其成为对处理数组具有非凡的能力,使其成为对处理数组具有非凡的能力,使其成为许多科学与工程应用中的一个有力的工具。本章主要介绍矩许多科学与工程应用中的一个有力的工具。本章主要介绍矩许多科学与工程应用中的一个有力的工具。本章主要介绍矩许多
2、科学与工程应用中的一个有力的工具。本章主要介绍矩阵的创建、运算以及如何运用阵的创建、运算以及如何运用阵的创建、运算以及如何运用阵的创建、运算以及如何运用MATLABMATLAB解决线性代数中的相解决线性代数中的相解决线性代数中的相解决线性代数中的相关问题。关问题。关问题。关问题。n n【学习目标】【学习目标】【学习目标】【学习目标】n n能够创建矩阵,并熟练掌握矩阵的各种运算法则能够创建矩阵,并熟练掌握矩阵的各种运算法则能够创建矩阵,并熟练掌握矩阵的各种运算法则能够创建矩阵,并熟练掌握矩阵的各种运算法则n n掌握稀疏矩阵的基本操作。掌握稀疏矩阵的基本操作。掌握稀疏矩阵的基本操作。掌握稀疏矩阵的
3、基本操作。n n学会运用学会运用学会运用学会运用MATLABMATLAB解决线性代数的相关问题。解决线性代数的相关问题。解决线性代数的相关问题。解决线性代数的相关问题。n n掌握如何运用掌握如何运用掌握如何运用掌握如何运用MATLABMATLAB实现数据的插值、曲线的拟合和零极实现数据的插值、曲线的拟合和零极实现数据的插值、曲线的拟合和零极实现数据的插值、曲线的拟合和零极点的求解。点的求解。点的求解。点的求解。本讲稿第二页,共六十六页2.1 矩阵及其运算矩阵及其运算n nMATLAB最基本、最重要的功能就是进行矩阵运算。所有的数值功能都是以矩阵为基本单位实现的。本讲稿第三页,共六十六页2.1.
4、1 矩阵生成矩阵生成n n1.1.直接生成直接生成直接生成直接生成n n矩阵的生成可以通过在方括号矩阵的生成可以通过在方括号矩阵的生成可以通过在方括号矩阵的生成可以通过在方括号中输入元素实现,不同行之间中输入元素实现,不同行之间中输入元素实现,不同行之间中输入元素实现,不同行之间要用分号隔开,不同列用空格分开。要用分号隔开,不同列用空格分开。要用分号隔开,不同列用空格分开。要用分号隔开,不同列用空格分开。n n【例【例【例【例2-12-1】生成一个】生成一个】生成一个】生成一个2 23 3矩阵。矩阵。矩阵。矩阵。n n a=1 2 3;4 5 6 a=1 2 3;4 5 6 n na=a=n
5、n 1 2 3 1 2 3n n 4 5 6 4 5 6n n可以用冒号快速建立矩阵,步长在默认的情况下为可以用冒号快速建立矩阵,步长在默认的情况下为可以用冒号快速建立矩阵,步长在默认的情况下为可以用冒号快速建立矩阵,步长在默认的情况下为1 1,也可以自定,也可以自定,也可以自定,也可以自定义步长。义步长。义步长。义步长。n n a=1:3;4:6 a=1:3;4:6n na=a=n n 1 2 3 1 2 3n n 4 5 6 4 5 6本讲稿第四页,共六十六页n n2.2.函数生成函数生成函数生成函数生成n nMATLABMATLAB中提供了特殊函数可以生成特殊矩阵。中提供了特殊函数可以生
6、成特殊矩阵。中提供了特殊函数可以生成特殊矩阵。中提供了特殊函数可以生成特殊矩阵。n n【例【例【例【例2-22-2】生成一个】生成一个】生成一个】生成一个2323全零矩阵,一个全零矩阵,一个全零矩阵,一个全零矩阵,一个3333单位矩阵。单位矩阵。单位矩阵。单位矩阵。n n a=zeros(2 a=zeros(2,3)3)%生成生成生成生成2323全零阵全零阵全零阵全零阵n na=a=n n 0 0 0 0 0 0 n n 0 0 0 0 0 0 n n a=eye(3 a=eye(3,3)%3)%生成生成生成生成3333单位阵单位阵单位阵单位阵n na=a=n n 1 0 0 1 0 0n n
7、 0 1 0 0 1 0n n 0 0 1 0 0 1 本讲稿第五页,共六十六页 常用的特殊矩阵列在表常用的特殊矩阵列在表常用的特殊矩阵列在表常用的特殊矩阵列在表2.12.1当中。当中。当中。当中。表表表表2.12.1常用的特殊矩阵常用的特殊矩阵常用的特殊矩阵常用的特殊矩阵函数函数函数函数功能功能功能功能函数函数函数函数命令命令命令命令zeroszeros生成全生成全生成全生成全0 0矩矩矩矩阵阵阵阵compancompan生成多生成多生成多生成多项项项项式的友矩式的友矩式的友矩式的友矩阵阵阵阵eyeeye生成生成生成生成单单单单位矩位矩位矩位矩阵阵阵阵hadamardhadamard生成哈达
8、生成哈达生成哈达生成哈达玛玛玛玛矩矩矩矩阵阵阵阵(由(由(由(由1 1和和和和-1-1构成的正交矩构成的正交矩构成的正交矩构成的正交矩阵阵阵阵)onesones生成全生成全生成全生成全1 1阵阵阵阵vandervander生成范德蒙矩生成范德蒙矩生成范德蒙矩生成范德蒙矩阵阵阵阵randrand生成均匀分布随机矩生成均匀分布随机矩生成均匀分布随机矩生成均匀分布随机矩阵阵阵阵hilbhilbHilbertHilbert矩矩矩矩阵阵阵阵(沿主(沿主(沿主(沿主对对对对角角角角线线线线对对对对称)称)称)称)randnrandn生成正生成正生成正生成正态态态态分布随机矩分布随机矩分布随机矩分布随机矩阵
9、阵阵阵invhilbinvhilb逆逆逆逆HilbertHilbert矩矩矩矩阵阵阵阵triltriutriltriu生成上三角或下三角矩生成上三角或下三角矩生成上三角或下三角矩生成上三角或下三角矩阵阵阵阵magicmagicMagicMagic矩矩矩矩阵阵阵阵diagdiag生成生成生成生成对对对对角矩角矩角矩角矩阵阵阵阵pascalpascalPascalPascal矩矩矩矩阵阵阵阵wilkinsonwilkinson生成威生成威生成威生成威尔尔尔尔金森矩金森矩金森矩金森矩阵阵阵阵toeplitztoeplitz托普利托普利托普利托普利兹兹兹兹矩矩矩矩阵阵阵阵本讲稿第六页,共六十六页2.1
10、.2 矩阵连接矩阵连接n n矩阵连接,是联合一个或多个矩阵形成一个新矩阵。方括号矩阵连接,是联合一个或多个矩阵形成一个新矩阵。方括号矩阵连接,是联合一个或多个矩阵形成一个新矩阵。方括号矩阵连接,是联合一个或多个矩阵形成一个新矩阵。方括号就可以就可以就可以就可以作为矩阵连接操作符。表达式作为矩阵连接操作符。表达式作为矩阵连接操作符。表达式作为矩阵连接操作符。表达式A=B CA=B C就是水平连接矩阵就是水平连接矩阵就是水平连接矩阵就是水平连接矩阵BB和和和和C C;A=A=BB;CC就是垂直连接矩阵就是垂直连接矩阵就是垂直连接矩阵就是垂直连接矩阵BB和和和和C C连接矩阵也可以用函数形成一个新矩
11、连接矩阵也可以用函数形成一个新矩连接矩阵也可以用函数形成一个新矩连接矩阵也可以用函数形成一个新矩阵,如阵,如阵,如阵,如catcat函数。函数。函数。函数。catcat函数调用格式:函数调用格式:函数调用格式:函数调用格式:n n1)C=cat(dim1)C=cat(dim,AA,B)B)n nDimDim指链接方向。指链接方向。指链接方向。指链接方向。DimDim的可选值:的可选值:的可选值:的可选值:1 1,垂直方向;,垂直方向;,垂直方向;,垂直方向;2 2,水平,水平,水平,水平方向;方向;方向;方向;3 3,生成三维数组。,生成三维数组。,生成三维数组。,生成三维数组。n n2)C=
12、cat(dim2)C=cat(dim,A1A1,A2A2,)n n可以实现连接多个矩阵。可以实现连接多个矩阵。可以实现连接多个矩阵。可以实现连接多个矩阵。本讲稿第七页,共六十六页n n【例【例【例【例2-32-3】把矩阵】把矩阵】把矩阵】把矩阵AA,BB分别在垂直方向,水平方向连接,分别在垂直方向,水平方向连接,分别在垂直方向,水平方向连接,分别在垂直方向,水平方向连接,A=1 2 3A=1 2 3,B=4 5 6B=4 5 6。n n C1=cat(1 C1=cat(1,A A,B)%B)%垂直方向连接垂直方向连接n nC1=C1=n n 1 2 3 1 2 3n n 4 5 6 4 5 6
13、n n C2=cat(2 C2=cat(2,A A,B)%B)%水平方向连接水平方向连接n nC2=C2=n n 1 2 3 4 5 6 1 2 3 4 5 6本讲稿第八页,共六十六页表表2.2列出了常用的连接矩阵函数。列出了常用的连接矩阵函数。表表2.2 连接矩阵函数连接矩阵函数函数函数函数函数功能功能功能功能函数函数函数函数功能功能功能功能catcat连连连连接矩接矩接矩接矩阵阵阵阵rematremat复制一个矩复制一个矩复制一个矩复制一个矩阵阵阵阵到另一个到另一个到另一个到另一个矩矩矩矩阵阵阵阵horzcathorzcat水平水平水平水平连连连连接多个矩接多个矩接多个矩接多个矩阵阵阵阵b
14、lkdiagblkdiag对对对对角角角角连连连连接多个矩接多个矩接多个矩接多个矩阵阵阵阵vertcatvertcat垂直垂直垂直垂直连连连连接多个矩接多个矩接多个矩接多个矩阵阵阵阵本讲稿第九页,共六十六页2.1.3 2.1.3 矩阵元素的下标引用及操作矩阵元素的下标引用及操作矩阵元素的下标引用及操作矩阵元素的下标引用及操作n n1.1.矩阵下标矩阵下标矩阵下标矩阵下标 n n在在MATLABMATLAB中,矩阵元素的引用可以通过下标表中,矩阵元素的引用可以通过下标表示,通常有如下规则:示,通常有如下规则:n n1)1)用两个下标来表示:在矩阵用两个下标来表示:在矩阵A A中,第中,第i i行
15、行j j列的元列的元素用素用A(iA(i,j)j)来表示。来表示。n n2)2)用一个下标来表示:对于矩阵,由于用一个下标来表示:对于矩阵,由于MATLABMATLAB的基本运算都是对列操作的,矩阵认为是按列优的基本运算都是对列操作的,矩阵认为是按列优先排列的一个长的列向量,从而可用单下标引用。先排列的一个长的列向量,从而可用单下标引用。本讲稿第十页,共六十六页n n【例【例2-42-4】提取矩阵的元素。】提取矩阵的元素。n n A=1 2 3;4 5 6;7 8 9 A=1 2 3;4 5 6;7 8 9n nA=A=n n1 2 31 2 3n n4 5 64 5 6n n7 8 97 8
16、 9n n可以用可以用A(m,n)A(m,n)选出第选出第mm行行n n列的元素。列的元素。n n A(2,3)A(2,3)n nans=ans=n n6 6n n也可以用一个下标选出元素。也可以用一个下标选出元素。n n A(8)A(8)n nans=ans=n n6 6本讲稿第十一页,共六十六页n n2.2.矩阵的抽取矩阵的抽取矩阵的抽取矩阵的抽取n n用下标可以从大矩阵里面抽取某些元素组成小的用下标可以从大矩阵里面抽取某些元素组成小的矩阵,并使用矩阵,并使用()()运算符。运算符。n n【例【例2-52-5】提取矩阵】提取矩阵A A的前的前2 2行为一个新矩阵行为一个新矩阵B B。n n
17、B=A(1:2,:)B=A(1:2,:)%B=A(12,:)B=A(12,:)n nB=B=n n 1 2 3 1 2 3n n 4 5 6 4 5 6本讲稿第十二页,共六十六页n n3.3.删除矩阵的行和列删除矩阵的行和列删除矩阵的行和列删除矩阵的行和列 n n我们把空的中括号我们把空的中括号我们把空的中括号我们把空的中括号称为空矩阵,即矩阵大小为称为空矩阵,即矩阵大小为称为空矩阵,即矩阵大小为称为空矩阵,即矩阵大小为0000。可以。可以。可以。可以通过把矩阵的行或列赋值为空矩阵来删除某行或某列。通过把矩阵的行或列赋值为空矩阵来删除某行或某列。通过把矩阵的行或列赋值为空矩阵来删除某行或某列。
18、通过把矩阵的行或列赋值为空矩阵来删除某行或某列。n n【例【例【例【例2-62-6】删除上例中】删除上例中】删除上例中】删除上例中AA的第的第的第的第1 1,2 2列。列。列。列。n n A(:,1 2)=A(:,1 2)=n nA=A=n n 3 3n n 6 6n n 9 9n n 在在在在MATLABMATLAB里不能用双下标来删除矩阵的某个元素,里不能用双下标来删除矩阵的某个元素,里不能用双下标来删除矩阵的某个元素,里不能用双下标来删除矩阵的某个元素,例如例如例如例如X(1X(1,2)=2)=将给出错误信息。但可以用单下标来删将给出错误信息。但可以用单下标来删将给出错误信息。但可以用单
19、下标来删将给出错误信息。但可以用单下标来删除矩阵的某个或某些元素,除矩阵的某个或某些元素,除矩阵的某个或某些元素,除矩阵的某个或某些元素,MATLABMATLAB删除这些元素后,删除这些元素后,删除这些元素后,删除这些元素后,将剩下的元素按列编成一个长的行向量。将剩下的元素按列编成一个长的行向量。将剩下的元素按列编成一个长的行向量。将剩下的元素按列编成一个长的行向量。本讲稿第十三页,共六十六页n n4.reshape4.reshape函数实现改变矩阵大小函数实现改变矩阵大小函数实现改变矩阵大小函数实现改变矩阵大小n nreshapereshape函数可以实现矩阵行列大小的变化,但变化前函数可以
20、实现矩阵行列大小的变化,但变化前函数可以实现矩阵行列大小的变化,但变化前函数可以实现矩阵行列大小的变化,但变化前矩阵行列值的乘积和变化后的行列值的乘积不变。矩阵行列值的乘积和变化后的行列值的乘积不变。矩阵行列值的乘积和变化后的行列值的乘积不变。矩阵行列值的乘积和变化后的行列值的乘积不变。n nreshape(A,M,N)reshape(A,M,N)命令将矩阵命令将矩阵命令将矩阵命令将矩阵AA的所有元素分配到一个的所有元素分配到一个的所有元素分配到一个的所有元素分配到一个MMNN的的的的新的矩阵,当矩阵新的矩阵,当矩阵新的矩阵,当矩阵新的矩阵,当矩阵AA的元素个数不是的元素个数不是的元素个数不是
21、的元素个数不是MMNN时,将返回一个错时,将返回一个错时,将返回一个错时,将返回一个错误。误。误。误。n nreshape(A,M,N,P,reshape(A,M,N,P,)命令返回由矩阵命令返回由矩阵命令返回由矩阵命令返回由矩阵AA的元素组成的的元素组成的的元素组成的的元素组成的MMNNP P.多维的矩阵,如果多维的矩阵,如果多维的矩阵,如果多维的矩阵,如果MMNNP P.与与与与AA的元素个数不的元素个数不的元素个数不的元素个数不一样时将返回错误。一样时将返回错误。一样时将返回错误。一样时将返回错误。n nreshape(A,M,N,P,reshape(A,M,N,P,)命令与命令与命令与
22、命令与reshape(A,M,N,P,reshape(A,M,N,P,)命令的作用一样。命令的作用一样。命令的作用一样。命令的作用一样。本讲稿第十四页,共六十六页n n【例2-7】把2行3列矩阵A变成变成1行6列的矩阵B。n n B=reshape(A,1,6)n nB=n n 1 4 2 5 3 6本讲稿第十五页,共六十六页2.1.4 矩阵运算矩阵运算n n1.1.矩阵的加、减矩阵的加、减矩阵的加、减矩阵的加、减 n n矩阵的加减运算使用、运算符,能够相加减矩阵的加减运算使用、运算符,能够相加减的矩阵需满足以下两个条件之一:的矩阵需满足以下两个条件之一:n n1)1)类型相同,即行数相等,且
23、列数相等。类型相同,即行数相等,且列数相等。n n2)2)其中一个为标量,此时的加减运算结果等于矩阵中其中一个为标量,此时的加减运算结果等于矩阵中每一个元素都和标量做加减运算。每一个元素都和标量做加减运算。n n【例【例2-82-8】求矩阵】求矩阵A A与与B B的和,的和,A=1 2 3 A=1 2 3,B=2 3 B=2 3 66。n n A+B A+Bn nans=ans=n n 3 5 9 3 5 9本讲稿第十六页,共六十六页n n2.2.矩阵的乘积矩阵的乘积矩阵的乘积矩阵的乘积 n n矩阵的乘积运算使用矩阵的乘积运算使用矩阵的乘积运算使用矩阵的乘积运算使用*运算符,而且相乘的矩阵必须
24、满足维数运算符,而且相乘的矩阵必须满足维数运算符,而且相乘的矩阵必须满足维数运算符,而且相乘的矩阵必须满足维数条件。如果条件。如果条件。如果条件。如果A A是一个是一个是一个是一个mpmp矩阵,而矩阵,而矩阵,而矩阵,而B B是是是是pn pn 矩阵,它们可以相矩阵,它们可以相矩阵,它们可以相矩阵,它们可以相乘产生乘产生乘产生乘产生mn mn 矩阵。矩阵。矩阵。矩阵。n n【例【例【例【例2-92-9】求例】求例】求例】求例2-82-8中矩阵中矩阵中矩阵中矩阵A A与与与与B B的转置矩阵的乘积。的转置矩阵的乘积。的转置矩阵的乘积。的转置矩阵的乘积。n n A*B A*Bn nans=ans=
25、n n 26 26n n在在在在MATLABMATLAB里,单引号表示复共轭转置,一个点加单引号里,单引号表示复共轭转置,一个点加单引号里,单引号表示复共轭转置,一个点加单引号里,单引号表示复共轭转置,一个点加单引号“.”“.”表示普通转置,即沿主对角线左上与右下相对元素对调。表示普通转置,即沿主对角线左上与右下相对元素对调。表示普通转置,即沿主对角线左上与右下相对元素对调。表示普通转置,即沿主对角线左上与右下相对元素对调。n nBBn nans=ans=n n22n n33n n66本讲稿第十七页,共六十六页n n3 3、矩阵的除法、矩阵的除法、矩阵的除法、矩阵的除法n nMATLABMAT
26、LAB定义了矩阵的左除及右除。定义了矩阵的左除及右除。定义了矩阵的左除及右除。定义了矩阵的左除及右除。“”“”运算符号表示两个矩运算符号表示两个矩运算符号表示两个矩运算符号表示两个矩阵的左除,阵的左除,阵的左除,阵的左除,“/”“/”表示两个矩阵的右除。表示两个矩阵的右除。表示两个矩阵的右除。表示两个矩阵的右除。ABAB即由即由即由即由GaussGauss消去法来消去法来消去法来消去法来获得线性方程获得线性方程获得线性方程获得线性方程AXAXB B的解的解的解的解X X,即,即,即,即X XA A-1-1B B。n n矩阵的右除:矩阵的右除:矩阵的右除:矩阵的右除:MATLABMATLAB用用
27、用用“/”“/”表示两个矩阵的右除。表示两个矩阵的右除。表示两个矩阵的右除。表示两个矩阵的右除。X*A=BX*A=B的解是的解是的解是的解是X=B/AX=B/A,对于非奇异方阵,对于非奇异方阵,对于非奇异方阵,对于非奇异方阵A A,B/AB/A等效为等效为等效为等效为BABA-1-1 。n n【例【例【例【例2-102-10】求矩阵】求矩阵】求矩阵】求矩阵a a与与与与b b的左除和右除。的左除和右除。的左除和右除。的左除和右除。n n c=ab%c=ab%矩阵左除,相当于矩阵左除,相当于inv(a)*binv(a)*bn nc=c=n n 0.3333 0.6000 -0.2000 0.33
28、33 0.6000 -0.2000n n -0.6667 -0.4000 0.8000 -0.6667 -0.4000 0.8000n n 1.0000 0.4000 0.2000 1.0000 0.4000 0.2000n n d=a/b%d=a/b%矩阵右除,相当于矩阵右除,相当于a*inv(b)a*inv(b)n nd=d=n n 1.3333 1.3333 -1.0000 1.3333 1.3333 -1.0000n n 0 -0.5000 1.5000 0 -0.5000 1.5000n n 1.6667 0.1667 -0.5000 1.6667 0.1667 -0.5000本讲稿
29、第十八页,共六十六页表表2.3给出了可以获得有关矩阵的形状与大小信息的函数给出了可以获得有关矩阵的形状与大小信息的函数。表表2.3 取得矩阵相关信息的函数取得矩阵相关信息的函数函数函数函数函数说说说说明明明明函数函数函数函数说说说说明明明明lengthlength返回矩返回矩返回矩返回矩阵阵阵阵最最最最长长长长的那的那的那的那维长维长维长维长度度度度numelnumel返回矩返回矩返回矩返回矩阵阵阵阵的元素数的元素数的元素数的元素数ndimsndims返回矩返回矩返回矩返回矩阵阵阵阵的的的的维维维维数数数数(如二(如二(如二(如二维维维维、三、三、三、三维维维维)sizesize返回矩返回矩返
30、回矩返回矩阵阵阵阵每一每一每一每一维维维维的的的的长长长长度(度(度(度(2 233,3 333 )本讲稿第十九页,共六十六页n n4.4.矩阵的乘方运算和开方运算矩阵的乘方运算和开方运算矩阵的乘方运算和开方运算矩阵的乘方运算和开方运算n nMATLABMATLAB中矩阵的乘方可以由符号中矩阵的乘方可以由符号“”“”实现,而矩实现,而矩阵的开方则由阵的开方则由sqrtmsqrtm函数实现。函数实现。n n【例【例2-112-11】求如下矩阵】求如下矩阵A A的的3 3次方。次方。n nA3A3n nans=ans=n n468576684468576684n n1062130515481062
31、13051548n n165620342412165620342412本讲稿第二十页,共六十六页n n如果想实现矩阵中每个元素都进行如果想实现矩阵中每个元素都进行如果想实现矩阵中每个元素都进行如果想实现矩阵中每个元素都进行3 3次方,则可用次方,则可用次方,则可用次方,则可用“.”实现,实现,实现,实现,在运算符前面加在运算符前面加在运算符前面加在运算符前面加“.”后就表示是对矩阵的元素操作。后就表示是对矩阵的元素操作。后就表示是对矩阵的元素操作。后就表示是对矩阵的元素操作。n n A.3 A.3n nans=ans=n n 1 8 27 1 8 27n n 64 125 216 64 125
32、 216n n 343 512 729 343 512 729n n【例【例2-122-12】求例】求例2-112-11中矩阵中矩阵A A的开方。的开方。n n sqrtm(A)%sqrtm(A)sqrtm(A)%sqrtm(A)相当于相当于A0.5A0.5n nans=ans=n n 0.4498+0.7623i 0.5526+0.2068i 0.6555-0.3487i 0.4498+0.7623i 0.5526+0.2068i 0.6555-0.3487in n 1.0185+0.0842i 1.2515+0.0228i 1.4844-0.0385i 1.0185+0.0842i 1.2
33、515+0.0228i 1.4844-0.0385in n 1.5873-0.5940i 1.9503-0.1611i 2.3134+0.2717i 1.5873-0.5940i 1.9503-0.1611i 2.3134+0.2717in n其实矩阵的开方运算和乘方运算互为逆运算。其实矩阵的开方运算和乘方运算互为逆运算。其实矩阵的开方运算和乘方运算互为逆运算。其实矩阵的开方运算和乘方运算互为逆运算。本讲稿第二十一页,共六十六页n n5.5.矩阵的指数和对数运算矩阵的指数和对数运算矩阵的指数和对数运算矩阵的指数和对数运算n n指数函数和对数函数是非常重要的两个函数,所以指数函数和对数函数是非常
34、重要的两个函数,所以MATLABMATLAB提供了两个专门的函数提供了两个专门的函数expmexpm和和logmlogm来实来实现矩阵的指数运算和对数运算。现矩阵的指数运算和对数运算。n n【例【例2-132-13】求矩阵的指数运算和对数运算】求矩阵的指数运算和对数运算n n A=rand(3)A=rand(3)n nA=A=n n 0.9501 0.4860 0.4565 0.9501 0.4860 0.4565n n 0.2311 0.8913 0.0185 0.2311 0.8913 0.0185n n 0.6068 0.7621 0.8214 0.6068 0.7621 0.8214本
35、讲稿第二十二页,共六十六页n n expm(A)%expm(A)%对对A A矩阵的每个元素求以矩阵的每个元素求以e e为底的指数为底的指数n nans=ans=n n 3.1250 1.7453 1.1993 3.1250 1.7453 1.1993n n 0.6360 2.6358 0.1796 0.6360 2.6358 0.1796n n 1.8010 2.2981 2.6663 1.8010 2.2981 2.6663n n logm(A)%logm(A)%对对A A矩阵的每个元素求以矩阵的每个元素求以e e为底的对为底的对数数n nans=ans=n n -0.2977 0.3399
36、 0.6044 -0.2977 0.3399 0.6044n n 0.2874 -0.1588 -0.0604 0.2874 -0.1588 -0.0604n n 0.6696 0.8173 -0.3901 0.6696 0.8173 -0.3901本讲稿第二十三页,共六十六页6.矩阵的数组运算矩阵的数组运算运算中,往往需要在矩阵之间进行对应元素的运算,这就是矩阵的数组运算。矩阵的数组运算与前面运算区别主要放映在乘和除两种运算中。n n1.乘法矩阵的数组运算A.*B(称为数乘)n n2.除法矩阵的数组运算A./B(称为数除)练习练习n n已知A=1 3 5;2 4 6;7 8 9;B=1 2
37、1;2 3 2;3 4 3 比较A*B和A.*B以及A/B和A./B的区别本讲稿第二十四页,共六十六页2.2 稀疏型矩阵稀疏型矩阵n n如果在矩阵中,多数的元素并没有值,称此矩阵为稀疏如果在矩阵中,多数的元素并没有值,称此矩阵为稀疏如果在矩阵中,多数的元素并没有值,称此矩阵为稀疏如果在矩阵中,多数的元素并没有值,称此矩阵为稀疏矩阵矩阵矩阵矩阵(Sparse Matrix)(Sparse Matrix),由于矩阵在方程中常使用二维,由于矩阵在方程中常使用二维,由于矩阵在方程中常使用二维,由于矩阵在方程中常使用二维阵列表示,二维阵列的大小与使用的内存空间成正比,阵列表示,二维阵列的大小与使用的内存
38、空间成正比,阵列表示,二维阵列的大小与使用的内存空间成正比,阵列表示,二维阵列的大小与使用的内存空间成正比,如果多数的元素没有值,则会造成内存空间的浪费,为如果多数的元素没有值,则会造成内存空间的浪费,为如果多数的元素没有值,则会造成内存空间的浪费,为如果多数的元素没有值,则会造成内存空间的浪费,为此,必须设计稀疏矩阵的阵列储存方式,利用较少的内此,必须设计稀疏矩阵的阵列储存方式,利用较少的内此,必须设计稀疏矩阵的阵列储存方式,利用较少的内此,必须设计稀疏矩阵的阵列储存方式,利用较少的内存空间储存完整的矩阵信息。存空间储存完整的矩阵信息。存空间储存完整的矩阵信息。存空间储存完整的矩阵信息。本讲
39、稿第二十五页,共六十六页2.2.1 稀疏型矩阵生成稀疏型矩阵生成n n在在在在MATLABMATLAB中,用中,用中,用中,用sparsesparse函数来创建一个稀疏矩阵。函数来创建一个稀疏矩阵。函数来创建一个稀疏矩阵。函数来创建一个稀疏矩阵。n nsparse(A)sparse(A)n n由非零元素和下标建立稀疏矩阵由非零元素和下标建立稀疏矩阵由非零元素和下标建立稀疏矩阵由非零元素和下标建立稀疏矩阵AA。如果。如果。如果。如果AA已是一个稀疏矩阵,则已是一个稀疏矩阵,则已是一个稀疏矩阵,则已是一个稀疏矩阵,则返回返回返回返回AA本身。本身。本身。本身。n nsparse(msparse(m
40、,n)n)n n生成一个生成一个生成一个生成一个mnmn的所有元素都是的所有元素都是的所有元素都是的所有元素都是0 0的稀疏矩阵。的稀疏矩阵。的稀疏矩阵。的稀疏矩阵。n n【例【例【例【例2-142-14】把】把】把】把3 3阶的单位矩阵转换成稀疏矩阵。阶的单位矩阵转换成稀疏矩阵。阶的单位矩阵转换成稀疏矩阵。阶的单位矩阵转换成稀疏矩阵。n n as=sparse(eye(3)%as=sparse(eye(3)%生成主对角线为生成主对角线为生成主对角线为生成主对角线为1 1的稀疏矩阵。的稀疏矩阵。的稀疏矩阵。的稀疏矩阵。n nas=as=n n (1 (1,1)1%1)1%第第1 1行第行第1
41、1列的元素为列的元素为1 1n n (2 (2,2)1%2)1%第第2 2行第行第2 2列的元素为列的元素为1 1n n (3 (3,3)1%3)1%第第3 3行第行第3 3列的元素为列的元素为1 1本讲稿第二十六页,共六十六页2.2.2 2.2.2 转换成满矩阵转换成满矩阵转换成满矩阵转换成满矩阵n nfull(S)full(S)函数可以将稀疏矩阵函数可以将稀疏矩阵S S转换成一个满矩阵。转换成一个满矩阵。n n【例【例2-152-15】将例】将例2-142-14中的结果再转换成满矩阵。中的结果再转换成满矩阵。n n full(as)full(as)n nans=ans=n n 1 0 0
42、1 0 0n n 0 1 0 0 1 0n n 0 0 1 0 0 1本讲稿第二十七页,共六十六页2.2.3 对非零元素进行操作n nnnz(A)nnz(A)函数可以求矩阵函数可以求矩阵A A中非零元素的个数,它既可求中非零元素的个数,它既可求满矩阵也可求稀疏矩阵。满矩阵也可求稀疏矩阵。n nspy(A)spy(A)函数可以画出稀疏矩阵函数可以画出稀疏矩阵A A中非零元素的分布。中非零元素的分布。也可用在满矩阵中,在这种情况下,只给出非零元素的也可用在满矩阵中,在这种情况下,只给出非零元素的分布。分布。n nspy(Aspy(A,cstrcstr,size)size)函数可以用指定的颜色函数可
43、以用指定的颜色cstrcstr在在sizesize规定的范围内画出稀疏矩阵规定的范围内画出稀疏矩阵A A中非零元素的分布。中非零元素的分布。n nnonzeros(A)nonzeros(A)函数可以按照列的顺序找出矩阵函数可以按照列的顺序找出矩阵A A中非零的元素。中非零的元素。本讲稿第二十八页,共六十六页n nspones(A)spones(A)函数可以把矩阵函数可以把矩阵A A中的非零元素全换为中的非零元素全换为1 1。n nnzmax(A)nzmax(A)函数可以给出为矩阵函数可以给出为矩阵A A中非零元素分配的中非零元素分配的内存数内存数.不一定和不一定和nnz(A)nnz(A)得到的
44、数相同。得到的数相同。n nissparse(A)issparse(A)函数在矩阵函数在矩阵A A是稀疏矩阵的情况下返回是稀疏矩阵的情况下返回1;1;否否则返回则返回0 0。n nspfun(fcnspfun(fcn,A)A)函数可以用函数可以用A A中所有非零元素对函数中所有非零元素对函数fcnfcn求值,如果函数不是对稀疏矩阵定义的,同样也可求值,如果函数不是对稀疏矩阵定义的,同样也可以求值。以求值。n nsprank(A)sprank(A)函数可以求稀疏矩阵函数可以求稀疏矩阵A A的结构秩。对于所的结构秩。对于所有的矩阵来说,都有有的矩阵来说,都有sprank(Asprank(A)ran
45、k(A)rank(A)。本讲稿第二十九页,共六十六页n n【例2-16】求3阶单位矩阵的非零元素的个数,并画出非零元素的分布。n n nnz(eye(3)n nans=n n 3n n spy(eye(3)n n结果如图2.1所示。n n图图2.1 矩阵矩阵A 的稀疏表示的稀疏表示本讲稿第三十页,共六十六页2.2.4 稀疏矩阵的特例n nMATLABMATLAB中有四个基本稀疏矩阵,它们是单位矩阵,随机中有四个基本稀疏矩阵,它们是单位矩阵,随机中有四个基本稀疏矩阵,它们是单位矩阵,随机中有四个基本稀疏矩阵,它们是单位矩阵,随机矩阵,对称随机矩阵和对角矩阵。下面介绍各自的生成函数。矩阵,对称随机
46、矩阵和对角矩阵。下面介绍各自的生成函数。矩阵,对称随机矩阵和对角矩阵。下面介绍各自的生成函数。矩阵,对称随机矩阵和对角矩阵。下面介绍各自的生成函数。n nspeye(n)speye(n)函数可以生成函数可以生成函数可以生成函数可以生成nnnn的单位稀疏矩阵。的单位稀疏矩阵。的单位稀疏矩阵。的单位稀疏矩阵。n nspeye(mspeye(m,n)n)函数可以生成函数可以生成函数可以生成函数可以生成mnmn的单位稀疏矩阵。的单位稀疏矩阵。的单位稀疏矩阵。的单位稀疏矩阵。n nsprand(A)sprand(A)函数可以生成与函数可以生成与函数可以生成与函数可以生成与AA有相同结构的随机稀疏矩阵,且
47、有相同结构的随机稀疏矩阵,且有相同结构的随机稀疏矩阵,且有相同结构的随机稀疏矩阵,且元素服从均匀分布。元素服从均匀分布。元素服从均匀分布。元素服从均匀分布。n nsprand(msprand(m,n n,dens)dens)函数可以函数可以函数可以函数可以 生成一个生成一个生成一个生成一个mnmn的服从均匀的服从均匀的服从均匀的服从均匀分布的随机稀疏矩阵,有分布的随机稀疏矩阵,有分布的随机稀疏矩阵,有分布的随机稀疏矩阵,有densmndensmn个非零元素,个非零元素,个非零元素,个非零元素,0dens1.0dens1.参数参数参数参数densdens是非零元素的分布密度。是非零元素的分布密度
48、。是非零元素的分布密度。是非零元素的分布密度。n nsprandn(A)sprandn(A)函数可以生成与函数可以生成与函数可以生成与函数可以生成与AA有相同结构的随机稀疏矩阵,有相同结构的随机稀疏矩阵,有相同结构的随机稀疏矩阵,有相同结构的随机稀疏矩阵,且元素服从正态分布。且元素服从正态分布。且元素服从正态分布。且元素服从正态分布。本讲稿第三十一页,共六十六页n nsprandsym(S)sprandsym(S)函数可以生成一个随机对称稀疏矩阵。它的下函数可以生成一个随机对称稀疏矩阵。它的下函数可以生成一个随机对称稀疏矩阵。它的下函数可以生成一个随机对称稀疏矩阵。它的下三角及主对角线部分与三
49、角及主对角线部分与三角及主对角线部分与三角及主对角线部分与S S的结构相同,矩阵元素服从正态分布。的结构相同,矩阵元素服从正态分布。的结构相同,矩阵元素服从正态分布。的结构相同,矩阵元素服从正态分布。n nsprandsym(nsprandsym(n,dens)dens)函数可以生成一个函数可以生成一个函数可以生成一个函数可以生成一个nnnn的随机对称稀疏的随机对称稀疏的随机对称稀疏的随机对称稀疏矩阵矩阵矩阵矩阵.矩阵元素服从正态分布,分布密度为矩阵元素服从正态分布,分布密度为矩阵元素服从正态分布,分布密度为矩阵元素服从正态分布,分布密度为densdens。n nBB,d=spdiags(A)
50、d=spdiags(A)函数可以求出函数可以求出函数可以求出函数可以求出AA中所有的对角元,对角中所有的对角元,对角中所有的对角元,对角中所有的对角元,对角元保存在矩阵元保存在矩阵元保存在矩阵元保存在矩阵BB中,它们的下标保存在向量中,它们的下标保存在向量中,它们的下标保存在向量中,它们的下标保存在向量d d中。中。中。中。n nspdiags(Aspdiags(A,d)d)函数可以生成一个矩阵,这个矩阵包含有矩阵函数可以生成一个矩阵,这个矩阵包含有矩阵函数可以生成一个矩阵,这个矩阵包含有矩阵函数可以生成一个矩阵,这个矩阵包含有矩阵AA中向量中向量中向量中向量d d规定的对角元。规定的对角元。