线性代数中的数值计算.pptx
会计学1线性代数中的数值计算线性代数中的数值计算目录目录n n4.1 特殊矩阵的生成n n4.2 矩阵分析n n4.3 线性方程组求解n n4.4 矩 阵 分 解n n4.5 超越函数运算n n4.6 稀疏矩阵的处理第1页/共45页4.1 4.1 特殊矩阵的生成特殊矩阵的生成特殊矩阵的生成特殊矩阵的生成n n4.1.1 4.1.1 通用的特殊矩阵通用的特殊矩阵n nzeroszeros函数:产生全函数:产生全0 0矩阵,即零矩阵。矩阵,即零矩阵。n nonesones函数:产生全函数:产生全1 1矩阵,即幺矩阵。矩阵,即幺矩阵。n neyeeye函数:产生单位矩阵,即对角线上的元素为函数:产生单位矩阵,即对角线上的元素为1 1、其余元素为、其余元素为0 0的矩阵。的矩阵。n nrandrand函数:产生函数:产生0 01 1均匀分布的随机矩阵。均匀分布的随机矩阵。n nrandnrandn函数:产生均值为函数:产生均值为0 0、方差为、方差为1 1的标准正态分布随机矩阵。的标准正态分布随机矩阵。n n这几个函数的调用格式相似,如果这个函数的参数只是一个,那么这几个函数的调用格式相似,如果这个函数的参数只是一个,那么MATLABMATLAB将会创建一个方将会创建一个方阵,行数和列数均为这个参数;如果这个函数的参数有两个,那么第一个参数代表行数,第阵,行数和列数均为这个参数;如果这个函数的参数有两个,那么第一个参数代表行数,第二个参数代表列数。下面以产生零矩阵的二个参数代表列数。下面以产生零矩阵的zeroszeros函数为例进行说明。函数为例进行说明。n nzeroszeros函数的调用格式如下。函数的调用格式如下。n nzeros(m)zeros(m):产生:产生m mm m零矩阵。零矩阵。n nzeros(m,n)zeros(m,n):产生:产生m mn n零矩阵。当零矩阵。当m m=n n时,等同于时,等同于zeros(zeros(m m)。n nzeros(size(A)zeros(size(A):产生与矩阵:产生与矩阵AA同样大小的零矩阵。同样大小的零矩阵。第2页/共45页n n【例4.1】分别建立33、32和与矩阵A同样大小的零矩阵。n n(1 1)建立一个)建立一个3333的零矩阵。的零矩阵。n nzeros(3)zeros(3)n nans=ans=n n 0 0 0 0 0 0n n 0 0 0 0 0 0n n 0 0 0 0 0 0n n(2 2)建立一个)建立一个3232的零矩阵。的零矩阵。n nzeros(3,2)zeros(3,2)n n(3 3)设)设A A为为2323矩阵,则可以用矩阵,则可以用zeros(size(A)zeros(size(A)建立一个与矩阵建立一个与矩阵A A同样大小的零矩阵。同样大小的零矩阵。n nA=1 2 3;4 5 6;A=1 2 3;4 5 6;%产生一个产生一个2323阶矩阵阶矩阵A An nzeros(size(A)zeros(size(A)%产生一个与矩阵产生一个与矩阵A A同样大小的同样大小的零矩阵零矩阵第3页/共45页n n【例4.2】建立随机矩阵:n n(1 1)在区间)在区间10,3010,30内均匀分布的内均匀分布的4 4阶随机矩阵。阶随机矩阵。n n(2 2)均值为)均值为0.60.6、方差为、方差为0.10.1的的4 4阶正态分布随机阶正态分布随机矩阵。矩阵。n n产生产生(0,1)(0,1)区间均匀分布随机矩阵使用区间均匀分布随机矩阵使用randrand函数,假设函数,假设得到了一组满足得到了一组满足(0,1)(0,1)区间均匀分布的随机数区间均匀分布的随机数x xi i,则若,则若想得到在任意想得到在任意 a a,b b 区间上均匀分布的随机数,只需区间上均匀分布的随机数,只需用用y yi i=a a+(+(b ba a)x xi i计算即可。计算即可。n n产生均值为产生均值为0 0、方差为、方差为1 1的标准正态分布随机矩阵使的标准正态分布随机矩阵使用用randnrandn函数,假设已经得到了一组标准正态分布随函数,假设已经得到了一组标准正态分布随机数机数xi xi,如果想更一般地得到均值为,如果想更一般地得到均值为、方差为、方差为 2 2的的随机数,可用随机数,可用y yi i=+xxi i计算出来。针对本例,命令计算出来。针对本例,命令如下:如下:n na=10;a=10;n nb=30;b=30;n nx=a+(b-a)*rand(4)x=a+(b-a)*rand(4)n ny=0.6+sqrt(0.1)*randn(4)y=0.6+sqrt(0.1)*randn(4)第4页/共45页n n4.1.2 4.1.2 面向特定应用的特殊矩阵面向特定应用的特殊矩阵n n1 1魔方矩阵魔方矩阵n n魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于素和都相等。对于n n阶魔方阵,其元素由阶魔方阵,其元素由1 1,2 2,3 3,n n2 2共共n n2 2个个整数组成。整数组成。MATLABMATLAB提供了求魔方矩阵的函数提供了求魔方矩阵的函数magic(n)magic(n),其功能,其功能是生成一个是生成一个n n阶魔方阵。阶魔方阵。n n【例例4.34.3】将将101101125125等等2525个数填入一个个数填入一个5 5行行5 5列的表格中,使其列的表格中,使其每行、每列及对角线的和均为每行、每列及对角线的和均为565565。n n一个一个5 5阶魔方矩阵的每行、每列及对角线的和均为阶魔方矩阵的每行、每列及对角线的和均为6565,对其每个,对其每个元素都加元素都加100100后这些和变为后这些和变为565565。完成其功能的命令如下:。完成其功能的命令如下:n nM=100+magic(5)M=100+magic(5)n nM=M=n n 117 124 101 108 115 117 124 101 108 115n n 123 105 107 114 116 123 105 107 114 116n n 104 106 113 120 122 104 106 113 120 122n n 110 112 119 121 103 110 112 119 121 103n n 111 118 125 102 109 111 118 125 102 109第5页/共45页n n2范得蒙矩阵n n范得蒙(范得蒙(VandermondeVandermonde)矩阵的最)矩阵的最后一列全为后一列全为1 1,倒数第二列为一个,倒数第二列为一个指定的向量,其他各列是其后列指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用与倒数第二列的点乘积。可以用一个指定向量生成一个范得蒙矩一个指定向量生成一个范得蒙矩阵。在阵。在MATLABMATLAB中,函数中,函数vander(V)vander(V)生成以向量生成以向量VV为基础向量为基础向量的范得蒙矩阵。的范得蒙矩阵。n nA=vander(1:4)A=vander(1:4)n nA=A=n n 1 1 1 1 1 1 1 1n n 8 4 2 1 8 4 2 1n n 27 9 3 1 27 9 3 1n n 64 16 4 1 64 16 4 1第6页/共45页n n3希尔伯特矩阵n n希尔伯特(希尔伯特(HilbertHilbert)矩阵是一种数学变换矩阵,)矩阵是一种数学变换矩阵,它的每个元素它的每个元素h hij ij=1/(=1/(i i+j j1)1)。在。在MATLABMATLAB中,中,生成希尔伯特矩阵的函数是生成希尔伯特矩阵的函数是hilb(n)hilb(n)。n n专门求希尔伯特矩阵的逆的函数专门求希尔伯特矩阵的逆的函数invhilb(n)invhilb(n)n nformat rat%format rat%以有理形式输出以有理形式输出n nH=hilb(4)H=hilb(4)n nH=H=n n 1 1/2 1/3 1/4 1 1/2 1/3 1/4 n n 1/2 1/3 1/4 1/5 1/2 1/3 1/4 1/5 n n 1/3 1/4 1/5 1/6 1/3 1/4 1/5 1/6 n n 1/4 1/5 1/6 1/7 1/4 1/5 1/6 1/7 n nH=invhilb(4)H=invhilb(4)n nformat short%format short%恢复默认输出格式恢复默认输出格式第7页/共45页n n4托普利兹矩阵n n托普利兹(托普利兹(ToeplitzToeplitz)矩阵除第一)矩阵除第一行第一列外,其他每个元素都与行第一列外,其他每个元素都与左上角的元素相同。生成托普利左上角的元素相同。生成托普利兹矩阵的函数是兹矩阵的函数是toeplitz(x,y)toeplitz(x,y),它生,它生成一个以成一个以x x为第一列、为第一列、y y为第一行为第一行的托普利兹矩阵。这里的托普利兹矩阵。这里x x、y y均为均为向量,两者不必等长。向量,两者不必等长。toeplitz(x)toeplitz(x)用向量用向量x x生成一个对称的托普利兹生成一个对称的托普利兹矩阵。矩阵。n nT2=toeplitz(1:4)T2=toeplitz(1:4)n nT2=T2=n n 1 2 3 4 1 2 3 4 n n 2 1 2 3 2 1 2 3 n n 3 2 1 2 3 2 1 2 n n 4 3 2 1 4 3 2 1 第8页/共45页n n5伴随矩阵n n生成伴随矩阵的函数是生成伴随矩阵的函数是compan(compan(p p),其中,其中p p是一是一个多项式的系数向量,高次幂系数排在前,低个多项式的系数向量,高次幂系数排在前,低次幂排在后。例如,为了求多项式的次幂排在后。例如,为了求多项式的x x3 377x x+6+6的伴随矩阵,可使用如下命令:的伴随矩阵,可使用如下命令:n np=1,0,-7,6;p=1,0,-7,6;n ncompan(p)compan(p)n nans=ans=n n 0 7 -6 0 7 -6n n 1 0 0 1 0 0n n 0 1 0 0 1 0 第9页/共45页n n6 6帕斯卡矩阵帕斯卡矩阵n n我们知道,二次项我们知道,二次项(x x+y y)n n展开后的系数随展开后的系数随n n的增大组成一个三角形表,称为杨辉三角形。的增大组成一个三角形表,称为杨辉三角形。由杨辉三角形表组成的矩阵称为帕斯卡(由杨辉三角形表组成的矩阵称为帕斯卡(PascalPascal)矩阵,它的元素)矩阵,它的元素p p1 1j j=1=1,p p i i1 1=1=1,p p ij ij=p p i i1,1,j j11+p p i i11,j j(i i11,j j11)。函数)。函数pascal(n)pascal(n)生成一个生成一个n n阶帕斯卡矩阵。阶帕斯卡矩阵。n n【例例4.54.5】求求(x x+y y)4 4的展开式。的展开式。n n在在MATLABMATLAB命令窗口,输入命令:命令窗口,输入命令:n npascal(5)pascal(5)n nans=ans=n n 1 1 1 1 1 1 1 1 1 1n n 1 2 3 4 5 1 2 3 4 5n n 1 3 6 10 15 1 3 6 10 15n n 1 4 10 20 35 1 4 10 20 35n n 1 5 15 35 70 1 5 15 35 70n n矩阵矩阵次对角线次对角线上的元素上的元素1 1,4 4,6 6,4 4,1 1即为展开式的系数,即即为展开式的系数,即(x x+y y)4 4=x x4 4+4+4x x3 3y y+6+6x x2 2y y2 2+4+4xyxy3 3+y y4 4第10页/共45页4.2 4.2 矩阵分析矩阵分析矩阵分析矩阵分析n n4.2.1 4.2.1 矩阵结构变换矩阵结构变换n n1 1对角阵对角阵n n只有对角线上有非只有对角线上有非0 0元素的矩阵称为对角矩阵,对角线上的元素都为元素的矩阵称为对角矩阵,对角线上的元素都为1 1的对角矩阵称为单位矩的对角矩阵称为单位矩阵。阵。n n(1 1)提取矩阵的对角线元素)提取矩阵的对角线元素n n设设AA为为m mn n矩阵,函数矩阵,函数diag(diag(AA)用于提取矩阵用于提取矩阵AA主对角线元素,产生一个具有主对角线元素,产生一个具有min(min(m m,n n)个元素的个元素的列向量。例如:列向量。例如:n nA=1,2,3;4,5,6A=1,2,3;4,5,6n nA=A=n n 1 2 3 1 2 3n n 4 5 6 4 5 6n nD=diag(A)D=diag(A)n nD=D=n n 1 1n n 5 5n ndiag(A,k)diag(A,k)提取第提取第k k条对角线的元素。主对角线为第条对角线的元素。主对角线为第0 0条对角线;与主对角线平行,往上为第条对角线;与主对角线平行,往上为第1 1条,第条,第2 2条,条,第,第n n条对角线,往下为第条对角线,往下为第1 1条,第条,第2 2条,条,第,第n n条对角线。条对角线。第11页/共45页n n(2)构造对角矩阵n n设设VV为具有为具有m m个元素的向量,个元素的向量,diag(V,k)diag(V,k)的功能是的功能是产生一个产生一个n nn n(n n=m m+|+|k k|)对角阵,其第)对角阵,其第k k条条对角线的元素即为向量对角线的元素即为向量VV的元素。的元素。n n例如:例如:n ndiag(1:3,-1)diag(1:3,-1)n nans=ans=n n 0 0 0 0 0 0 0 0n n 1 0 0 0 1 0 0 0n n 0 2 0 0 0 2 0 0n n 0 0 3 0 0 0 3 0n n省略省略k k时,相当于时,相当于k k为为0 0,其主对角线元素即为向,其主对角线元素即为向量量VV的元素。的元素。第12页/共45页n n【例4.6】先建立55矩阵A,然后将A的第一行元素乘以1,第二行乘以2,第五行乘以5。n n用一个对角矩阵左乘一个矩阵时,相当于用对用一个对角矩阵左乘一个矩阵时,相当于用对角阵的第一个元素乘以该矩阵的第一行,用对角阵的第一个元素乘以该矩阵的第一行,用对角阵的第二个元素乘以该矩阵的第二行角阵的第二个元素乘以该矩阵的第二行依依此类推,因此,只需按要求构造一个对角矩阵此类推,因此,只需按要求构造一个对角矩阵D D,并用,并用D D左乘左乘A A即可。命令如下:即可。命令如下:n nA=1:5;2:6;3:7;4:8;5:9A=1:5;2:6;3:7;4:8;5:9n nD=diag(1:5);D=diag(1:5);n nD*A%D*A%用用DD左乘左乘A,A,对对A A的每行乘以一个指定的每行乘以一个指定常数常数第13页/共45页n n2三角阵n n三角阵又进一步分为上三角阵和下三角阵。所三角阵又进一步分为上三角阵和下三角阵。所谓上三角阵,即矩阵的对角线以下的元素全为谓上三角阵,即矩阵的对角线以下的元素全为0 0的一种矩阵,而下三角阵则是对角线以上的元的一种矩阵,而下三角阵则是对角线以上的元素全为素全为0 0的一种矩阵。的一种矩阵。n n与矩阵与矩阵A A对应的上三角阵对应的上三角阵B B是与是与A A具有相同的行具有相同的行数和列数的一个矩阵,并且数和列数的一个矩阵,并且B B的对角线以上的对角线以上(含对角线)的元素和(含对角线)的元素和A A对应相等,而对角线对应相等,而对角线以下的元素等于以下的元素等于0 0。求矩阵。求矩阵A A的上三角阵的的上三角阵的MATLABMATLAB函数是函数是triu(A)triu(A)。n ntriu(A,k)triu(A,k),其功能是求矩阵,其功能是求矩阵AA的第的第k k条对角线以上的元条对角线以上的元素。素。n n在在MATLABMATLAB中,提取矩阵中,提取矩阵AA的下三角矩阵的函数是的下三角矩阵的函数是tril(A)tril(A)和和tril(A,k)tril(A,k)第14页/共45页n n3矩阵的转置n n所谓转置,即把源矩阵的第一行变成目标矩阵所谓转置,即把源矩阵的第一行变成目标矩阵第一列,第二行变成第二列第一列,第二行变成第二列依此类推。显依此类推。显然,一个然,一个m m行行n n列的矩阵经过转置运算后,变成列的矩阵经过转置运算后,变成一个一个n n行行m m列的矩阵。列的矩阵。MATLABMATLAB中,转置运算符中,转置运算符是单撇号是单撇号()。n nA=1:3;1:3;1:3A=1:3;1:3;1:3n nB=AB=A第15页/共45页n n4 4矩阵的旋转矩阵的旋转n n在在MATLABMATLAB中,可以很方便地以中,可以很方便地以9090为单位对矩阵为单位对矩阵AA按逆时针方向进行旋转。利用函数按逆时针方向进行旋转。利用函数rot90(A,k)rot90(A,k)将矩阵将矩阵AA旋转旋转9090的的k k倍,当倍,当k k为负整数时,对矩阵为负整数时,对矩阵AA按顺时针方向进行旋转;当按顺时针方向进行旋转;当k k为为1 1时可省略。例如,将时可省略。例如,将AA按逆时针方向旋转按逆时针方向旋转9090,命令如下:,命令如下:n nA=9,37,38;-2,31,8;0,84,5;A=9,37,38;-2,31,8;0,84,5;n nB=rot90(A)B=rot90(A)n nB=B=n n 38 8 5 38 8 5n n 37 31 84 37 31 84n n 9 -2 0 9 -2 0n nrot90(A,4)rot90(A,4)n nans=ans=n n 9 37 38 9 37 38n n -2 31 8 -2 31 8n n 0 84 5 0 84 5第16页/共45页n n5矩阵的翻转n n矩阵的翻转分左右翻转和上下翻转。对矩阵实矩阵的翻转分左右翻转和上下翻转。对矩阵实施左右翻转是将原矩阵的第一列和最后一列调施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换换,第二列和倒数第二列调换依此类推。依此类推。n n对矩阵对矩阵AA实施左右翻转的函数是实施左右翻转的函数是fliplr(A)fliplr(A)。n n对矩阵对矩阵AA实施上下翻转的函数是实施上下翻转的函数是flipud(A)flipud(A)。第17页/共45页n n4.2.2 矩阵求值n n1 1方阵的行列式值方阵的行列式值n n把一个方阵看作一个行列式,并对其按行列式的规把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。则求值,这个值就称为矩阵所对应的行列式的值。在在MATLABMATLAB中,求方阵中,求方阵AA所对应的行列式的值的函所对应的行列式的值的函数是数是det(A)det(A)。例如:。例如:n nA=1:3;2:-1:0;12,5,9A=1:3;2:-1:0;12,5,9n nA=A=n n 1 2 3 1 2 3n n 2 1 0 2 1 0n n 12 5 9 12 5 9n nB=det(A)B=det(A)n nB=B=n n -33 -33第18页/共45页n n2矩阵的秩与迹n n(1 1)矩阵的秩)矩阵的秩n n矩阵线性无关的行数和列数称为矩阵的秩。矩阵线性无关的行数和列数称为矩阵的秩。n nrank(A)rank(A)n nA=1,2,3;2,5,6;3,2,5;A=1,2,3;2,5,6;3,2,5;n nr=rank(A)r=rank(A)n nr=r=n n 3 3n n(2 2)矩阵的迹)矩阵的迹n n矩阵的迹即矩阵的对角线元素之和。矩阵的迹即矩阵的对角线元素之和。n ntrace(A)trace(A)。第19页/共45页n n3向量和矩阵的范数p函数norm用于计算矩阵或向量的范数,norm函数的格式如下。norm(X,1):求向量或矩阵X的1范数。norm(X)、norm(X,2):求向量或矩阵X的2范数。norm(X,inf):求向量或矩阵X的范数。第20页/共45页n n4矩阵的条件数n n矩阵矩阵A A的条件数的条件数等于等于A A的范数与的范数与A A的逆矩阵的范的逆矩阵的范数的乘积,即。这样定义的条件数总是大于数的乘积,即。这样定义的条件数总是大于1 1的。的。条件数越接近于条件数越接近于1 1,矩阵的性能越好,反之,矩,矩阵的性能越好,反之,矩阵的性能越差。阵的性能越差。n nA A有有3 3种范数,相应地可定义种范数,相应地可定义3 3种条件数。在种条件数。在MATLABMATLAB中,计算中,计算A A的的3 3种条件数的函数如下。种条件数的函数如下。n ncond(A,1)cond(A,1):计算:计算AA的的11范数下的条件数。范数下的条件数。n ncond(A)cond(A)或或cond(A,2)cond(A,2):计算:计算AA的的22范数数下的条件数。范数数下的条件数。n ncond(A,inf)cond(A,inf):计算:计算AA的的范数下的条件数。范数下的条件数。第21页/共45页n n4.2.3 矩阵的特征值与特征向量n n对于对于n n阶方阵阶方阵A A,求数,求数 和向量和向量,使得等式,使得等式A A=成立,满足等式的数成立,满足等式的数 称为称为A A的的特征值特征值,而向量而向量 称为称为A A的的特征向量特征向量。n n在在MATLABMATLAB中,计算矩阵中,计算矩阵A A的特征值和特征向的特征值和特征向量的函数是量的函数是eig(eig(A A),常用的调用格式有如下,常用的调用格式有如下3 3种。种。n nE=eig(A)E=eig(A):求矩阵:求矩阵AA的全部特征值,构成向量的全部特征值,构成向量E E。n nV,D=eig(A)V,D=eig(A):求矩阵:求矩阵AA的全部特征值,构成对角阵的全部特征值,构成对角阵D D,并求,并求AA的特征向量构成的特征向量构成VV的列向量。的列向量。n nV,D=eig(A,nobalance)V,D=eig(A,nobalance):与第:与第2 2种格式类似,但第种格式类似,但第2 2种格式中先对种格式中先对AA作相似变换后求矩阵作相似变换后求矩阵AA的特征值和特的特征值和特征向量,而格式征向量,而格式3 3直接求矩阵直接求矩阵AA的特征值和特征向量。的特征值和特征向量。n n一个矩阵的特征向量有无穷多个,一个矩阵的特征向量有无穷多个,eigeig函数只找出其中的函数只找出其中的n n个,个,AA的其他特征向量,均可由这的其他特征向量,均可由这n n个特征向量的线性组合个特征向量的线性组合表示。表示。第22页/共45页n n例如:n nA=1,1,0.5;1,1,0.25;0.5,0.25,2;A=1,1,0.5;1,1,0.25;0.5,0.25,2;n nV,D=eig(A)V,D=eig(A)n nV=V=n n 0.7212 0.4443 0.5315 0.7212 0.4443 0.5315n n -0.6863 0.5621 0.4615 -0.6863 0.5621 0.4615n n -0.0937 -0.6976 0.7103 -0.0937 -0.6976 0.7103n nD=D=n n -0.0166 0 0 -0.0166 0 0n n 0 1.4801 0 0 1.4801 0n n 0 0 2.5365 0 0 2.5365第23页/共45页4.3 4.3 线性方程组求解线性方程组求解线性方程组求解线性方程组求解n n4.3.1 矩阵求逆及线性代数方程组求解n n1 1矩阵求逆矩阵求逆n n若方阵若方阵AA、B B满足等式:满足等式:A A B B=B AB A=I I(I I为单位阵为单位阵 ),称,称AA为为B B的逆矩阵的逆矩阵n n函数函数inv(A)inv(A)用于计算方阵的逆矩阵。用于计算方阵的逆矩阵。n nA=1-1 1;5-4 3;2 1 1;A=1-1 1;5-4 3;2 1 1;n nB=inv(A)B=inv(A)n nB=B=n n -1.4000 0.4000 0.2000 -1.4000 0.4000 0.2000n n 0.2000 -0.2000 0.4000 0.2000 -0.2000 0.4000n n 2.6000 -0.6000 0.2000 2.6000 -0.6000 0.2000n nA*BA*Bn nans=ans=n n 1.0000 0 0 1.0000 0 0n n -0.0000 1.0000 0 -0.0000 1.0000 0n n -0.0000 0 1.0000 -0.0000 0 1.0000第24页/共45页n n2 2利用矩阵求逆方法解线性方程组利用矩阵求逆方法解线性方程组n n线性方程组的矩阵表示形式为线性方程组的矩阵表示形式为n nAx=bAx=bn n在方程组两边各左乘在方程组两边各左乘AA-1-1,有,有n nAA-1-1 Ax=A Ax=A-1-1 b bn n得到得到n nx=Ax=A-1-1 b bn n【例例4.94.9】利用矩阵求逆方法解线性方程组利用矩阵求逆方法解线性方程组n nA=1,-2,3;3,-1,5;2,1,5;A=1,-2,3;3,-1,5;2,1,5;n nb=1;2;3;b=1;2;3;n nx=inv(A)*bx=inv(A)*bn nx=x=n n -0.3333 -0.3333n n 0.3333 0.3333n n 0.6667 0.6667第25页/共45页n n4.3.2 利用左除运算符求解线性方程组n n对于线性方程组对于线性方程组A Ax x=b b,可以利用,可以利用左除运算符左除运算符“”求解:求解:n nx x=AA b bn n【例4.10】用左除运算符求解下列相同系数矩阵的两个线性代数方程组的解。解法1:分别解线性方程组。A=1,-1,1;5,-4,3;2,1,1;b1=2;-3;1;b2=3;4;-5;x=Ab1y=Ab2解法2:将两个线性方程组连在一起求解。A=1,-1,1;5,-4,3;2,1,1;b=2,3;-3,4;1,-5;xy=Ab第26页/共45页4.4 4.4 矩矩矩矩 阵阵阵阵 分分分分 解解解解n n矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解有矩阵分解有LULU分解、分解、QRQR分解、分解、CholeskyCholesky分解以及奇异分解等。分解以及奇异分解等。n n4.4.1 4.4.1 矩阵的矩阵的LULU分解分解n n矩阵的矩阵的LULU分解又称分解又称GaussGauss消去分解或三角分解,就是将一个方阵表示为一个消去分解或三角分解,就是将一个方阵表示为一个行交换下三行交换下三角矩阵角矩阵和一个和一个上三角矩阵上三角矩阵的乘积形式。的乘积形式。n nMATLABMATLAB提供的提供的lu lu函数函数用于对矩阵进行用于对矩阵进行LULU分解,其调用格式如下。分解,其调用格式如下。n nL,U=lu(X)L,U=lu(X):产生一个上三角阵:产生一个上三角阵U U和一个变换形式的下三角阵和一个变换形式的下三角阵L L(行交换行交换),使之满足,使之满足X X=LULU。注意,这里的矩阵注意,这里的矩阵X X必须是方阵。必须是方阵。n nL,U,P=lu(X)L,U,P=lu(X):产生一个上三角阵:产生一个上三角阵U U和一个下三角阵和一个下三角阵L L以及一个置换矩阵以及一个置换矩阵P P,使之满足,使之满足PXPX=LULU。当然矩阵。当然矩阵X X同样必须是方阵。同样必须是方阵。n n当使用第当使用第1 1种格式时,矩阵种格式时,矩阵L L往往不是一个下三角矩阵,但可以通过行交换成为一个下三角阵。往往不是一个下三角矩阵,但可以通过行交换成为一个下三角阵。第27页/共45页n n利用第利用第2 2种格式对矩阵种格式对矩阵AA进行进行LULU分解:分解:n nL,U,P=lu(A)L,U,P=lu(A)第28页/共45页n nclearclearn nA=2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4;A=2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4;n nb=13,-9,6,0;b=13,-9,6,0;n nticticn nx2=Ab;x2=Ab;%用左除运算求解用左除运算求解n ntoctocn nticticn nx1=inv(A)*b;%x1=inv(A)*b;%用求逆运算求解用求逆运算求解n ntoctocn nticticn nL,U=lu(A);L,U=lu(A);%LU%LU分解分解n nx3=U(Lb);x3=U(Lb);%用用LULU分解求解分解求解n ntoctocn nx1=x1x1=x1n nx2=x2x2=x2n nx3=x3x3=x3其中tic和toc两个函数配合使用用于计算程序的执行时间,tic记录当前时间,toc记录或显示使用tic函数以来所花费的时间。运行结果说明,x1、x2、x3的值相同,通过LU分解求值所化运行时间最少。第29页/共45页n n4.4.2 矩阵的QR分解n n对矩阵对矩阵X X进行进行QRQR分解,就是把分解,就是把X X分解为一个正分解为一个正交矩阵交矩阵Q Q和一个上三角矩阵和一个上三角矩阵R R的乘积形式。的乘积形式。n nqrqr函数函数可用于对矩阵进行可用于对矩阵进行QRQR分解,其调用格式分解,其调用格式如下:如下:n nQ,R=qr(X)Q,R=qr(X):产生一个一个正交矩阵:产生一个一个正交矩阵Q Q和一个上三和一个上三角矩阵角矩阵R R,使之满足,使之满足X X=QRQR。n nQ,R,E=qr(X)Q,R,E=qr(X):产生一个一个正交矩阵:产生一个一个正交矩阵Q Q、一个上、一个上三角矩阵三角矩阵R R以及一个置换矩阵以及一个置换矩阵E E,使之满足,使之满足XEXE=QRQR。第30页/共45页n n设设n n对矩阵对矩阵A A进行进行QRQR分解。分解。n nA=2,1,1,4;1,2,-1,2;1,-1,3,3;A=2,1,1,4;1,2,-1,2;1,-1,3,3;n nQ,R=qr(A)Q,R=qr(A)n nQ=Q=n n -0.8165 0 -0.5774 -0.8165 0 -0.5774n n -0.4082 -0.7071 0.5774 -0.4082 -0.7071 0.5774n n -0.4082 0.7071 0.5774 -0.4082 0.7071 0.5774n nR=R=n n -2.4495 -1.2247 -1.6330 -5.3072 -2.4495 -1.2247 -1.6330 -5.3072n n 0 -2.1213 2.8284 0.7071 0 -2.1213 2.8284 0.7071n n 0 0 0.5774 0.5774 0 0 0.5774 0.5774n n为验证结果是否正确,输入命令为验证结果是否正确,输入命令n nQR=Q*RQR=Q*R第31页/共45页n n4.4.3 矩阵的Cholesky分解n n如果矩阵如果矩阵X X是对称正定的,则是对称正定的,则CholeskyCholesky分解将矩分解将矩阵阵X X分解成一个下三角矩阵和上三角矩阵的乘分解成一个下三角矩阵和上三角矩阵的乘积。设上三角矩阵为积。设上三角矩阵为R R,则下三角矩阵为其转,则下三角矩阵为其转置,即置,即X X=R R R R。MATLABMATLAB函数函数chol(X)chol(X)用于对矩用于对矩阵阵X X进行进行CholeskyCholesky分解,其调用格式如下。分解,其调用格式如下。n nR=chol(X)R=chol(X):产生一个上三角阵:产生一个上三角阵R R,使,使R R R R=X X。若。若X X为非对称正定,则输出一个出错信息。为非对称正定,则输出一个出错信息。n nR,p=chol(X)R,p=chol(X):这个命令格式将不输出出错信息。:这个命令格式将不输出出错信息。当当X X为对称正定的,则为对称正定的,则p p=0=0,R R与上述格式得到的结与上述格式得到的结果相同;否则果相同;否则p p为一个正整数。如果为一个正整数。如果X X为满秩矩阵,为满秩矩阵,则则R R为一个阶数为为一个阶数为q q=p p11的上三角阵,且满足的上三角阵,且满足R R R R=X X(1:(1:q q,1:,1:q q)。第32页/共45页n n设设n n对矩阵对矩阵A A进行进行CholeskyCholesky分解。分解。n nA=2,1,1;1,2,-1;1,-1,3;A=2,1,1;1,2,-1;1,-1,3;n nR=chol(A)R=chol(A)n nR=R=n n 1.4142 0.7071 0.7071 1.4142 0.7071 0.7071n n 0 1.2247 -1.2247 0 1.2247 -1.2247n n 0 0 1.0000 0 0 1.0000n n为验证结果是否正确,输入命令为验证结果是否正确,输入命令n nR*RR*Rn nans=ans=n n 2.0000 1.0000 1.0000 2.0000 1.0000 1.0000n n 1.0000 2.0000 -1.0000 1.0000 2.0000 -1.0000n n 1.0000 -1.0000 3.0000 1.0000 -1.0000 3.0000第33页/共45页4.5 4.5 超越函数运算超越函数运算超越函数运算超越函数运算n n1超越函数n nMATLABMATLAB还提供了一些直接作用于矩阵的超越还提供了一些直接作用于矩阵的超越函数,如矩阵平方根函数函数,如矩阵平方根函数sqrtmsqrtm、矩阵指数函数、矩阵指数函数expmexpm、矩阵对数函数、矩阵对数函数logmlogm等,这些函数名都在等,这些函数名都在上述内部函数名之后缀以上述内部函数名之后缀以mm,并规定输入参数,并规定输入参数A A必须是方阵。例如:必须是方阵。例如:n nA=4,2;3,6;A=4,2;3,6;n nB=sqrtm(A)B=sqrtm(A)n nB=B=n n 1.9171 0.4652 1.9171 0.4652n n 0.6978 2.3823 0.6978 2.3823n n2通用矩阵函数funmn nfunm(A,fun)funm(A,fun)对方阵对方阵A A计算由计算由funfun定义的函数的矩定义的函数的矩阵函数值。例如,当阵函数值。例如,当funfun取取expexp时,时,funm(A,exp)funm(A,exp)可以计算矩阵可以计算矩阵A A的指数,与的指数,与expm(A)expm(A)的计算结果的计算结果一样。一样。第34页/共45页n n例子n nA=2,-1;1,0;A=2,-1;1,0;n nfunm(A,exp)funm(A,exp)n nans=ans=n n 5.4366 -2.7183 5.4366 -2.7183n n 2.7183 0.0000 2.7183 0.0000n nexpm(A)expm(A)n nans=ans=n n 5.4366 -2.7183 5.4366 -2.7183n n 2.7183 -0.0000 2.7183 -0.0000n n注意:funm函数可以用于exp函数和log函数,但求矩阵的平方根只能用sqrt