《第5章 数值计算功精选文档.ppt》由会员分享,可在线阅读,更多相关《第5章 数值计算功精选文档.ppt(78页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章数值计算功本讲稿第一页,共七十八页n n MATLAB MATLAB应用相当广泛的一个领域是解决数值计算问题。这是因为应用相当广泛的一个领域是解决数值计算问题。这是因为MATLAB MATLAB 对处理数组具有非凡的能力,使其成为许多科学与工程应对处理数组具有非凡的能力,使其成为许多科学与工程应用中的一个有力的工具。本章主要介绍如何运用用中的一个有力的工具。本章主要介绍如何运用MATLABMATLAB解决线性代解决线性代数以及概率统计中的相关问题。数以及概率统计中的相关问题。n n 【学习目标】【学习目标】n n能够创执行矩阵运算及掌握稀疏矩阵的基本操作。能够创执行矩阵运算及掌握稀疏矩阵
2、的基本操作。n n学会运用学会运用MATLABMATLAB解决线性代数的相关问题。解决线性代数的相关问题。n n掌握如何运用掌握如何运用MATLABMATLAB实现数据的插值、曲线的拟合和零极点实现数据的插值、曲线的拟合和零极点的求解。的求解。n n掌握利用统计工具箱解决概率统计的相关基本问题。掌握利用统计工具箱解决概率统计的相关基本问题。本讲稿第二页,共七十八页5.1 矩阵及其运算n nMATLAB最基本、最重要的功能就是进行矩阵运算。所有的数值功能都是以矩阵为基本单位实现的。本讲稿第三页,共七十八页5.1.1矩阵生成n n1.1.直接生成直接生成直接生成直接生成n n矩阵的生成可以通过在方
3、括号矩阵的生成可以通过在方括号中输入元素实现,不同行之间要用分号中输入元素实现,不同行之间要用分号隔开,不同列用空格分开。隔开,不同列用空格分开。n n【例【例5-15-1】生成一个】生成一个2323矩阵。矩阵。n n a=1 2 3;4 5 6 a=1 2 3;4 5 6 n na=a=n 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、4 5 6本讲稿第四页,共七十八页n n2.2.函数生成函数生成函数生成函数生成n nMATLABMATLAB中提供了特殊函数可以生成特殊矩阵。中提供了特殊函数可以生成特殊矩阵。n n【例【例5-25-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 0 1 0 0
5、1 0n n 0 0 1 0 0 1 本讲稿第五页,共七十八页常用的特殊矩阵列在表5.1当中。表表5.1常用的特殊矩阵常用的特殊矩阵命令命令函数函数命令命令函数函数全零全零阵阵zeroszeros友矩友矩阵阵compancompan单单位位阵阵eyeeyehadamardhadamard矩矩阵阵hadamardhadamard全全1 1阵阵onesonesHankelHankel矩矩阵阵hankelhankel均匀分布随机矩均匀分布随机矩阵阵randrandHilbertHilbert矩矩阵阵hilbhilb正正态态分布随机矩分布随机矩阵阵randnrandn逆逆HilbertHilbert矩
6、矩阵阵invhilbinvhilb产产生生线线性等分向量性等分向量linspacelinspaceMagicMagic矩矩阵阵magicmagic产产生生对对数等分向量数等分向量logspacelogspacePascalPascal矩矩阵阵pascalpascalWilkinsonWilkinson特征特征值测试阵值测试阵wilkinsonwilkinson托普利托普利兹兹矩矩阵阵toeplitztoeplitz本讲稿第六页,共七十八页5.1.2矩阵连接n n矩阵连接,是联合一个或多个矩阵形成一个新矩阵。方括号就可以作为矩阵连接操作符。表达式A=B C就是水平连接矩阵B和C;A=B;C就是垂
7、直连接矩阵B,C。n n连接矩阵也可以用函数形成一个新矩阵,如cat函数。cat函数调用格式:n n1)C=cat(dim1)C=cat(dim,A A,B)B)n nDim指链接方向。Dim的可选值:1,垂直方向;2,水平方向;3,生成三维数组。n n2)C=cat(dim2)C=cat(dim,A1A1,A2A2,)n n可以实现连接多个矩阵。可以实现连接多个矩阵。本讲稿第七页,共七十八页n n【例【例5-35-3】把矩阵】把矩阵A A,B B分别在垂直方向,水平方向连接,分别在垂直方向,水平方向连接,A=1 2 3A=1 2 3,B=4 5 6B=4 5 6。n n C1=cat(1 C
8、1=cat(1,A A,B)%B)%垂直方向连接垂直方向连接n nC1=C1=n n 1 2 3 1 2 3n n 4 5 6 4 5 6n 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本讲稿第八页,共七十八页表5.2列出了常用的连接矩阵函数。表表5.2 连接矩阵函数连接矩阵函数函数函数功能功能函数函数功能功能catcat连连接矩接矩阵阵rematremat复制一个矩复制一个矩阵阵到另一个矩到另一个矩阵阵horzcathorzcat水平水平连连接多个矩接多个矩阵阵blkdiagblk
9、diag对对角角连连接多个矩接多个矩阵阵vertcatvertcat垂直垂直连连接多个矩接多个矩阵阵本讲稿第九页,共七十八页5.1.35.1.3矩阵元素的下标引用及操作矩阵元素的下标引用及操作n n1矩阵下标矩阵下标 n n在MATLAB中,矩阵元素的引用可以通过下标表示,通常有如下规则:n n1)用两个下标来表示:在矩阵A中,第i行j列的元素用A(i,j)来表示。n n2)用一个下标来表示:对于矩阵,由于MATLAB的基本运算都是对列操作的,矩阵认为是按列优先排列的一个长的列向量,从而可用单下标引用。本讲稿第十页,共七十八页n n【例【例5-45-4】提取矩阵的元素。】提取矩阵的元素。n n
10、 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 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矩阵的抽取矩阵的抽取n n用下标可以从大矩阵里面抽取某些元素组成小的矩阵,并使用()运算符。n n【例5-5】提取矩阵A的前
11、2行为一个新矩阵B。n nB=C(1:2,:)n nC=n n 1 2 3n n 4 5 6本讲稿第十二页,共七十八页n n3 3删除矩阵的行和列删除矩阵的行和列删除矩阵的行和列删除矩阵的行和列 n n我们把空的中括号我们把空的中括号称为空矩阵,即矩阵大小为称为空矩阵,即矩阵大小为0000。可。可以通过把矩阵的行或列赋值为空矩阵来删除某行或某列。以通过把矩阵的行或列赋值为空矩阵来删除某行或某列。n n【例【例5-65-6】删除上例中】删除上例中A A的第的第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在在MAT
12、LABMATLAB里不能用双下标来删除矩阵的某个元素,例如里不能用双下标来删除矩阵的某个元素,例如X X(1(1,2)=2)=将给出错误信息。但可以用单下标来删除矩阵将给出错误信息。但可以用单下标来删除矩阵的某个或某些元素,的某个或某些元素,MATLABMATLAB删除这些元素后,将剩下的删除这些元素后,将剩下的元素按列编成一个长的行向量。元素按列编成一个长的行向量。本讲稿第十三页,共七十八页n n4reshape4reshape函数实现改变矩阵大小函数实现改变矩阵大小函数实现改变矩阵大小函数实现改变矩阵大小n nreshapereshape函数可以实现矩阵行列大小的变化,但变化前矩阵行列值函
13、数可以实现矩阵行列大小的变化,但变化前矩阵行列值的乘积和变化后的行列值的乘积不变。的乘积和变化后的行列值的乘积不变。n nreshape(A,M,N)reshape(A,M,N)命令将矩阵命令将矩阵A A的所有元素分配到一个的的所有元素分配到一个的新的矩阵,当矩阵新的矩阵,当矩阵A A的元素个数不是时,将返回一个错误。的元素个数不是时,将返回一个错误。n nreshape(A,M,N,P,reshape(A,M,N,P,)命令返回由矩阵命令返回由矩阵A A的元素组成的多维的元素组成的多维的矩阵,如果与的矩阵,如果与A A的元素个数不一样时将返回错误。的元素个数不一样时将返回错误。n nresh
14、ape(A,M,N,P,reshape(A,M,N,P,)命令与命令与reshape(A,M,N,P,reshape(A,M,N,P,)命令命令的作用一样。的作用一样。本讲稿第十四页,共七十八页n n【例5-7】把2行3列矩阵A变成变成1行6列的矩阵B。n n B=reshape(A,1,6)n nB=n n 1 4 2 5 3 6本讲稿第十五页,共七十八页5.1.4矩阵运算n n1矩阵的加减矩阵的加减 n n矩阵的加减运算使用、运算符,能够相加减的矩阵需满足以下两个条件之一:n n1)1)类型相同,即行数相等,且列数相等。类型相同,即行数相等,且列数相等。n n2)2)其中一个为标量,此时的
15、加减运算结果等于矩阵其中一个为标量,此时的加减运算结果等于矩阵中每一个元素都和标量做加减运算。中每一个元素都和标量做加减运算。n n【例5-8】求矩阵A与B的和,A=1 2 3,B=2 3 6。n n A+B A+Bn nans=ans=n n 3 5 9 3 5 9本讲稿第十六页,共七十八页n n2 2矩阵的乘积矩阵的乘积矩阵的乘积矩阵的乘积 n n矩阵的乘积运算使用矩阵的乘积运算使用*运算符,而且相乘的矩阵必须满足维数条件。如果运算符,而且相乘的矩阵必须满足维数条件。如果A A是一个是一个mpmp矩阵,而矩阵,而B B是是pn pn 矩阵,它们可以相乘产生矩阵,它们可以相乘产生mn mn
16、矩阵。矩阵。n n【例【例5-95-9】求例】求例5-85-8中矩阵中矩阵A A与与B B的转置矩阵的乘积。的转置矩阵的乘积。n n A*B A*Bn nans=ans=n n 26 26n n在在MATLABMATLAB里,单引号表示复共轭转置,一个点加单引号里,单引号表示复共轭转置,一个点加单引号.表示普通转置。表示普通转置。n n B Bn nans=ans=n n 2 2n n 3 3n n 6 6本讲稿第十七页,共七十八页n n3 3矩阵的除法矩阵的除法矩阵的除法矩阵的除法n nMATLABMATLAB定义了矩阵的左除及右除。定义了矩阵的左除及右除。“”运算符号运算符号表示两个矩阵的
17、左除,表示两个矩阵的左除,“/”表示两个矩阵的右除。表示两个矩阵的右除。ABAB即由即由GaussGauss消去法来获得线性方程消去法来获得线性方程AXAXB B的解的解X X,即,即X XA-1BA-1B。如果矩阵不是方阵,也可以求出。如果矩阵不是方阵,也可以求出ABAB,这时将使用最小二乘法来求取,这时将使用最小二乘法来求取AXAXB B中的中的X X矩阵。n n矩阵的右除:矩阵的右除:MATLABMATLAB用用“/”表示两个矩阵的右除。表示两个矩阵的右除。X=B/AX=B/A是是X*A=BX*A=B的解,对于非奇异方阵的解,对于非奇异方阵A A,B/AB/A等效等效为。为。n n通常:
18、通常:x=AB就是就是A*x=B的解,x=B/A就是就是x*A=Bx*A=B的解的解.本讲稿第十八页,共七十八页n n【例【例5-105-10】求矩阵】求矩阵a a与与b b的左除和右除。的左除和右除。n n,n n c=ab%c=ab%矩阵左除,相当于矩阵左除,相当于inv(a)*binv(a)*bn nc=c=n n 0.3333 0.6000 -0.2000 0.3333 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
19、 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 n1.6667 0.1667 -0.50001.6667 0.1667 -0.5000本讲稿第十九页,共七十八页表5.3给出了可以获得有关矩阵的形状与大小信息的函数。表表5.3 取得矩阵相关信息的函数取得矩阵相关信息的函数函数函数说说明明函数函数说说明明lengthlength返回矩返回矩阵阵最最长长的那的那维长维长度
20、度numelnumel返回矩返回矩阵阵的元素数的元素数ndimsndims返回矩返回矩阵阵的的维维数数sizesize返回矩返回矩阵阵每一每一维维的的长长度度本讲稿第二十页,共七十八页n n【例【例5-115-11】:产品成本分析,】:产品成本分析,表表5.45.4显示了与特定产品相关显示了与特定产品相关的成本,而表的成本,而表5.55.5则显示了一个财政年度中则显示了一个财政年度中4 4个季度的产量。使个季度的产量。使用用MATLABMATLAB算出:每个季度的材料成本、劳动成本和运输成本;算出:每个季度的材料成本、劳动成本和运输成本;一年中总的材料成本、劳动成本和运输成本,以及每个季度的一
21、年中总的材料成本、劳动成本和运输成本,以及每个季度的总成本。总成本。表表5.4 产品成本产品成本单位成本(美元单位成本(美元10103 3)产产品品材料材料劳动劳动运运输输1 16 62 21 12 22 25 54 43 34 43 32 24 49 97 73 3表表5.5 每季度产量每季度产量产产品品第第1 1季度季度第第2 2季度季度第第3 3季度季度第第4 4季度季度1 110101212131315152 28 87 76 64 43 31212101013139 94 46 64 411115 5本讲稿第二十一页,共七十八页n n成本是单位成本与产量的乘积。因此,用户定义两个矩阵
22、:成本是单位成本与产量的乘积。因此,用户定义两个矩阵:X X(包含(包含表表5.1.35.1.3中的单位成本,单位为千元)和中的单位成本,单位为千元)和Y Y(包含表(包含表5.1.45.1.4中每季度的中每季度的产品数据)。然后在运行下列命令行即可得到问题的答案。产品数据)。然后在运行下列命令行即可得到问题的答案。n n X=6 2 1;2 5 4;4 3 2;9 7 3;X=6 2 1;2 5 4;4 3 2;9 7 3;n n Y=10 12 13 15;8 7 6 4;12 10 13 9;6 4 11 5;Y=10 12 13 15;8 7 6 4;12 10 13 9;6 4 11
23、 5;n n quarterly_costs=sum(X*Y)quarterly_costs=sum(X*Y)n nquarterly_costs=quarterly_costs=n n 400 351 509 355 400 351 509 355n n category_costs=sum(X*Y)category_costs=sum(X*Y)n ncategory_costs=category_costs=n n 760 539 316 760 539 316n n所以,每个季度的总成本分别是:所以,每个季度的总成本分别是:400 400,351 351,509 509 和和355355
24、(美元)。一年中总的材料成本:(美元)。一年中总的材料成本:760760美元,劳动总成美元,劳动总成本:本:539539美元和运输成本美元和运输成本316316美元。美元。本讲稿第二十二页,共七十八页n n4矩阵的乘方运算和开方运算矩阵的乘方运算和开方运算n nMATLAB中矩阵的乘方可以由符号“”实现,而矩阵的开方则由sqrtm函数实现。n n【例5-12】求如下矩阵A的3次方。n n A3n nans=n n 468 576 684n n 1062 1305 1548n n 1656 2034 2412本讲稿第二十三页,共七十八页n n如果想实现矩阵中每个元素都进行如果想实现矩阵中每个元素
25、都进行3 3次方,则可用次方,则可用“.”实现,实现,在运算符前面加在运算符前面加“.”后就表示是对矩阵的元素操作。后就表示是对矩阵的元素操作。n n A.3 A.3n nans=ans=n n 1 8 27 1 8 27n n 64 125 216 64 125 216n n 343 512 729 343 512 729n n【例【例5-135-13】求例】求例5-125-12中矩阵中矩阵A A的开方。的开方。n n sqrtm(A)sqrtm(A)n nans=ans=n n 0.4498+0.7623i 0.5526+0.2068i 0.6555-0.4498+0.7623i 0.55
26、26+0.2068i 0.6555-0.3487i0.3487in n 1.0185+0.0842i 1.2515+0.0228i 1.4844-0.0385i 1.0185+0.0842i 1.2515+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 n矩阵的指数和对数运算矩阵的指数和对数运算n
27、n指数函数和对数函数是非常重要的两个函数,所以指数函数和对数函数是非常重要的两个函数,所以MATLABMATLAB提供了两个专门的函数提供了两个专门的函数expmexpm和和logmlogm来实来实现矩阵的指数运算和对数运算。现矩阵的指数运算和对数运算。n n【例【例5-145-14】求矩阵的指数运算和对数运算】求矩阵的指数运算和对数运算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.0185n n 0.6068 0.7621 0.8214 0.6068
28、0.7621 0.8214本讲稿第二十五页,共七十八页n n expm(A)expm(A)n nans=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.6663n n logm(A)logm(A)n nans=ans=n n -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本讲稿第二十
29、六页,共七十八页5.2稀疏型矩阵n n如果在矩阵中,多数的元素并没有值,称此矩阵为稀疏矩阵(Sparse Matrix),由于矩阵在方程中常使用二维阵列表示,二维阵列的大小与使用的内存空间成正比,如果多数的元素没有值,则会造成内存空间的浪费,为此,必须设计稀疏矩阵的阵列储存方式,利用较少的内存空间储存完整的矩阵信息。本讲稿第二十七页,共七十八页5.2.1稀疏型矩阵生成n n在在MATLABMATLAB中,用中,用sparsesparse函数来创建一个稀疏矩阵。函数来创建一个稀疏矩阵。n nsparse(A)sparse(A)n n由非零元素和下标建立稀疏矩阵由非零元素和下标建立稀疏矩阵A A。
30、如果。如果A A已是一个稀疏矩阵,则已是一个稀疏矩阵,则返回返回A A本身。本身。n nsparse(msparse(m,n)n)n n生成一个生成一个mnmn的所有元素都是的所有元素都是0 0的稀疏矩阵。的稀疏矩阵。n n【例【例5-155-15】把】把3 3阶的单位矩阵转换成稀疏矩阵。阶的单位矩阵转换成稀疏矩阵。n n as=sparse(eye(3)as=sparse(eye(3)n nas=as=n n (1 (1,1)11)1n n (2 (2,2)12)1n n (3 (3,3)13)1本讲稿第二十八页,共七十八页n n5.2.2 5.2.2 转换成满矩阵转换成满矩阵n nfull
31、(S)full(S)函数可以将稀疏矩阵函数可以将稀疏矩阵S S转换成一个满矩阵。转换成一个满矩阵。n n【例【例5-165-16】将例】将例5-155-15中的结果再转换成满矩阵。中的结果再转换成满矩阵。n n full(as)full(as)n nans=ans=n n 1 0 0n n 0 1 0 0 1 0n n 0 0 1 0 0 1本讲稿第二十九页,共七十八页5.2.3对非零元素进行操作n n nnz(A)nnz(A)函数可以求矩阵函数可以求矩阵A A中非零元素的个数,它既可求满矩阵也可求稀疏矩阵。中非零元素的个数,它既可求满矩阵也可求稀疏矩阵。n nspy(A)spy(A)函数可以
32、画出稀疏矩阵函数可以画出稀疏矩阵A A中非零元素的分布。也可用在满矩阵中,在这种中非零元素的分布。也可用在满矩阵中,在这种情况下,只给出非零元素的分布。情况下,只给出非零元素的分布。n nspy(Aspy(A,cstrcstr,size)size)函数可以用指定的颜色函数可以用指定的颜色cstrcstr在在sizesize规定的范围内画出稀规定的范围内画出稀疏矩阵疏矩阵A A中非零元素的分布。中非零元素的分布。n nnonzeros(A)nonzeros(A)函数可以按照列的顺序找出矩阵函数可以按照列的顺序找出矩阵A A中非零的元素。中非零的元素。n nspones(A)spones(A)函数
33、可以函数可以 把矩阵把矩阵A A中的非零元素全换为中的非零元素全换为1 1。n nnzmax(A)nzmax(A)函数可以给出为矩阵函数可以给出为矩阵A A中非零元素分配的内存数中非零元素分配的内存数.不一定和不一定和nnz nnz(A)(A)得到的数相同。得到的数相同。n nissparse(A)issparse(A)函数在矩阵函数在矩阵A A是稀疏矩阵的情况下返回是稀疏矩阵的情况下返回1;1;否则返回否则返回0 0。n nspfun(fcnspfun(fcn,A)A)函数可以用函数可以用A A中所有非零元素对函数中所有非零元素对函数fcnfcn求值,如果函数不求值,如果函数不是对稀疏矩阵定
34、义的,同样也可以求值。是对稀疏矩阵定义的,同样也可以求值。n nspfun(A)spfun(A)函数可以求稀疏矩阵函数可以求稀疏矩阵A A的结构秩。对于所有的矩阵来说,都有的结构秩。对于所有的矩阵来说,都有sprank sprank(Arank(A)(Arank(A)。本讲稿第三十页,共七十八页n n【例5-17】求3阶单位矩阵的非零元素的个数,并画出非零元素的分布。n n nnz(eye(3)n nans=n n 3n n spy(eye(3)n n结果如图5.1所示。n n图图5.1 矩阵矩阵A 的稀疏表示的稀疏表示本讲稿第三十一页,共七十八页5.2.4稀疏矩阵的特例n nMATLABMA
35、TLAB中有四个基本稀疏矩阵,它们是单位矩阵,随机矩阵,对称随机矩阵和对角矩阵。下面介绍各自的生成中有四个基本稀疏矩阵,它们是单位矩阵,随机矩阵,对称随机矩阵和对角矩阵。下面介绍各自的生成函数。函数。n nspeye(n)speye(n)函数可以生成函数可以生成nnnn的单位稀疏矩阵。的单位稀疏矩阵。n nspeye(mspeye(m,n)n)函数可以生成函数可以生成mnmn的单位稀疏矩阵。的单位稀疏矩阵。n nsprand(A)sprand(A)函数可以生成与函数可以生成与A A有相同结构的随机稀疏矩阵,且元素服从均匀分布。有相同结构的随机稀疏矩阵,且元素服从均匀分布。n nsprand(m
36、sprand(m,n n,dens)dens)函数可以函数可以 生成一个生成一个mnmn的服从均匀分布的随机稀疏矩阵,有的服从均匀分布的随机稀疏矩阵,有densmndensmn个非零元素,个非零元素,0dens1.0dens1.参数参数densdens是非零元素的分布密度。是非零元素的分布密度。n nsprandn(A)sprandn(A)函数可以生成与函数可以生成与A A有相同结构的随机稀疏矩阵,且元素服从正态分布。有相同结构的随机稀疏矩阵,且元素服从正态分布。n nsprandsym(S)sprandsym(S)函数可以生成一个随机对称稀疏矩阵。它的下三角及主对角线部分与函数可以生成一个随
37、机对称稀疏矩阵。它的下三角及主对角线部分与S S的结构相的结构相同,矩阵元素服从正态分布。同,矩阵元素服从正态分布。n nsprandsym(nsprandsym(n,dens)dens)函数可以生成一个函数可以生成一个mnmn的随机对称稀疏矩阵的随机对称稀疏矩阵.矩阵元素服从正态分布,分布密度矩阵元素服从正态分布,分布密度为为densdens。n nBB,d=spdiags(A)d=spdiags(A)函数可以求出函数可以求出A A中所有的对角元,对角元保存在矩阵中所有的对角元,对角元保存在矩阵B B中,它们的下标保存在向量中,它们的下标保存在向量d d中。中。n nspdiags(Aspd
38、iags(A,d)d)函数可以生成一个矩阵,这个矩阵包含有矩阵函数可以生成一个矩阵,这个矩阵包含有矩阵A A中向量中向量d d规定的对角元。规定的对角元。n nspdiags(Bspdiags(B,d d,A)A)函数可以生成矩阵函数可以生成矩阵A A,用矩阵,用矩阵B B中的列替换中的列替换d d定义的对角元。定义的对角元。n nA=spdiags(BA=spdiags(B,d d,mm,n)n)用保存在由用保存在由d d定义的定义的B B中的对角元创建稀疏矩阵中的对角元创建稀疏矩阵A A。本讲稿第三十二页,共七十八页表5.6给出了处理稀疏矩阵的常用函数。表表5.6 常用处理稀疏矩阵的函数常
39、用处理稀疏矩阵的函数函函 数数说说 明明fullfull将稀疏矩将稀疏矩阵转换为阵转换为完全矩完全矩阵阵nnznnz返回矩返回矩阵阵的非零元素数的非零元素数nzmaxnzmax返回返回为为非零元素分配的非零元素分配的储储存量存量sparsesparse建立稀疏矩建立稀疏矩阵阵或将完全矩或将完全矩阵转换为阵转换为稀疏矩稀疏矩阵阵sprandsprand建立稀疏均匀的随机分布矩建立稀疏均匀的随机分布矩阵阵issparseissparse测试测试矩矩阵阵是否是否为为稀疏矩稀疏矩阵阵nonzerosnonzeros返回矩返回矩阵阵的非零元素的非零元素spallocspalloc为为稀疏矩稀疏矩阵阵分配
40、存分配存储储空空间间speyespeye建立一个稀疏等同矩建立一个稀疏等同矩阵阵本讲稿第三十三页,共七十八页5.3MATLAB与线性代数n n5.3.1 5.3.1 矩阵的特征参数矩阵的特征参数n n1 1求矩阵的行列式求矩阵的行列式求矩阵的行列式求矩阵的行列式n n 行列式对于查明一个方程组是否有解很有用。行列式是一个特行列式对于查明一个方程组是否有解很有用。行列式是一个特殊的方形阵列,并且还可以简化为一个数。用户使用竖条来表殊的方形阵列,并且还可以简化为一个数。用户使用竖条来表示一个行列式,而使用方括号来代表矩阵。将一个示一个行列式,而使用方括号来代表矩阵。将一个2 22 2的行列式的行列
41、式简化为一个数的规则如下所示:简化为一个数的规则如下所示:n n数学上通过人笔算来得出行列式的值,现在可以通过数学上通过人笔算来得出行列式的值,现在可以通过MATLABMATLAB利用利用detdet函数轻松算出行列式的值。函数轻松算出行列式的值。本讲稿第三十四页,共七十八页n n【例5-18】计算如下的行列式:n n D=3 4 5;1 2 3;3 6 9;n n det(D)n nans=n n 0本讲稿第三十五页,共七十八页n n2 2矩阵的秩矩阵的秩矩阵的秩矩阵的秩n n矩阵的秩是矩阵行或列的数值线性独立的度量。如果一个向量线性独立于另外矩阵的秩是矩阵行或列的数值线性独立的度量。如果一
42、个向量线性独立于另外一些向量一些向量n n组,那意味着这一个向量不能写成它们的线性组合。组,那意味着这一个向量不能写成它们的线性组合。n n rank rank函数可以实现求矩阵的秩。函数可以实现求矩阵的秩。n n对于带有对于带有n n个未知量的个未知量的mm个线性系统方程:个线性系统方程:n n把把b b连结连结A A上构成了增广矩阵:上构成了增广矩阵:n n A bA b n n当且仅当当且仅当rank(A)=rank(A b)rank(A)=rank(A b)时系统有解。如果秩等于时系统有解。如果秩等于n n,那么系统有唯一解,那么系统有唯一解,但如果但如果n n秩小于秩小于n n,那么
43、系统有无数解。如果我们用,那么系统有无数解。如果我们用r r来表示秩,那么未知量的来表示秩,那么未知量的r r就可以表示就可以表示成其它成其它n n变量的变量的n-rn-r的线性组合。的线性组合。本讲稿第三十六页,共七十八页n n秩可以在MATLAB 中简单的计算得到,我们也能够容易地把数组连接在一起,所以我n n们可以相对轻松地使用这些事实来分析线性系统。如果秩条件吻合并且秩与未知数个数相n n等,解就可以用左除计算得到。下面举例具体说明以下。n n 本讲稿第三十七页,共七十八页n n【例5-19】求下列方程的解。n n A=1-2 1;3 4 5;-2 1 7;b=12;20;11;n n
44、我们可以使用级联创建增广矩阵:我们可以使用级联创建增广矩阵:n n C=A b C=A bn nC=C=n n1-2 1 121-2 1 12n n3 4 5 203 4 5 20n n-2 1 7 11-2 1 7 11本讲稿第三十八页,共七十八页n n现在我们检查一下现在我们检查一下A A 的秩:的秩:n n rank(A)rank(A)n nans=ans=n n3 3n n增广矩阵的秩为:增广矩阵的秩为:n n rank(C)rank(C)n nans=ans=n n3 3n n由于秩相同,因此解存在。这里有三个未知量,我们也注意到秩由于秩相同,因此解存在。这里有三个未知量,我们也注意
45、到秩r r 满足满足r r=n n。这意味。这意味n n着解唯一。我们用左除求得解:着解唯一。我们用左除求得解:n n x=A b x=A bn nx=x=n n4.39584.3958n n-2.2292-2.2292n n3.14583.1458本讲稿第三十九页,共七十八页n n3矩阵的特征值和特征向量矩阵的特征值和特征向量n n矩阵特征值与特征向量的定义:设A是n阶矩阵,如果存在数和n维非零向量x使关系式Ax=x成立,那么,这样的数称为方阵A的特征值,非零向量x称为A的对应特征值的特征向量。n neig函数可求得特征值和特征向量。本讲稿第四十页,共七十八页n n【例5-20】求下列矩阵的
46、特征值。n nA=3-1;-1 3;n n eig(A)n nans=n n 4n n 2本讲稿第四十一页,共七十八页n n矩阵的逆矩阵的逆矩阵的逆矩阵的逆n n 逆矩阵的定义:对于逆矩阵的定义:对于n n阶矩阵阶矩阵A A,如果有一个,如果有一个n n阶矩阵阶矩阵B B,使,使AB=BA=EAB=BA=E,则说矩阵,则说矩阵A A是可逆的,并把矩阵是可逆的,并把矩阵B B称称为为A A的逆矩阵,的逆矩阵,E E为单位矩阵。为单位矩阵。invinv函数可以求矩阵的逆。函数可以求矩阵的逆。n n【例【例5-215-21】求下列矩阵的逆。】求下列矩阵的逆。n n A=1 0 4;7 8 3;2 3
47、 8;A=1 0 4;7 8 3;2 3 8;n n inv(A)inv(A)n nans=n n 0.7333 0.1600 -0.4267 0.7333 0.1600 -0.4267n n -0.6667 -0.0000 0.3333n n 0.0667 -0.0400 0.1067 0.0667 -0.0400 0.1067本讲稿第四十二页,共七十八页n n【例【例5-225-22】利用矩阵的逆求解方程:】利用矩阵的逆求解方程:n n2 2x+x+9 9y=y=5 5n n3 3x x 4 4y=y=7 7n n A=2 9;3-4;A=2 9;3-4;n n b=5;7;b=5;7;n
48、 n x=inv(A)*b x=inv(A)*bn nx=x=n n 2.3714 2.3714n n0.02860.0286n n通过手算矩阵逆是非常繁重的任务,使用通过手算矩阵逆是非常繁重的任务,使用MATLABMATLAB则变得非常则变得非常容易。容易。本讲稿第四十三页,共七十八页表5.7给出了可以获得矩阵特征参数的常用函数。表表5.7 矩阵特征参数函数矩阵特征参数函数函数函数说说明明函数函数说说明明detdet求矩求矩阵阵的行列式的行列式normnorm求矩求矩阵阵和向量范数和向量范数eigeig求矩求矩阵阵的特征的特征值值和特征和特征向量向量rankrank求矩求矩阵阵的秩的秩inv
49、inv求矩求矩阵阵的逆的逆tracetrace求矩求矩阵阵的迹的迹本讲稿第四十四页,共七十八页5.3.2利用矩阵的分解求解线性方程组n n矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解有LU分解、QR分解、Cholesky分解,以及Schur分解、Hessenberg分解、奇异分解等。本讲稿第四十五页,共七十八页n n1 LU1 LU分解分解分解分解n n矩阵的矩阵的LULU分解就是将一个矩阵表示为一个交换下三角矩阵和一分解就是将一个矩阵表示为一个交换下三角矩阵和一个上三角矩阵的乘积形式。线性代数中已经证明,只要方阵个上三角矩阵的乘积形式。线性代数中已经证
50、明,只要方阵A A是是非奇异的,非奇异的,LULU分解总是可以进行的。分解总是可以进行的。n nMATLABMATLAB提供的提供的lulu函数用于对矩阵进行函数用于对矩阵进行LULU分解,其调用格式分解,其调用格式为:为:n nLL,U=lu(X)U=lu(X)产生一个上三角阵产生一个上三角阵U U和一个变换形式的下三和一个变换形式的下三角阵角阵L(L(行交换行交换),使之满足,使之满足X=LUX=LU。注意,这里的矩阵。注意,这里的矩阵X X必须必须是方阵。是方阵。n nLL,U U,P=lu(X)P=lu(X)产生一个上三角阵产生一个上三角阵U U和一个下三角阵和一个下三角阵L L以及一