用MATLAB线性代数的基本运算27页_第1页
用MATLAB线性代数的基本运算27页_第2页
用MATLAB线性代数的基本运算27页_第3页
用MATLAB线性代数的基本运算27页_第4页
用MATLAB线性代数的基本运算27页_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章 线性代数的基本运算本章学习的主要目的:1 复习线性代数中有关行列式、矩阵、矩阵初等变换、向量的线性相关性、线性方程组的求解、相似矩阵及二次型的相关知识.2学会用MatLab软件进行行列式的计算、矩阵的基本运算、矩阵初等变换、向量的线性相关性的判别、线性方程组的求解、二次型化标准形的运算.5.1 行列式5.1.1 n阶行列式定义由个元素组成的记号D= 称为n阶行列式.其值是所有取自不同行不同列的n个元素的乘积的代数和,各项的符号由n级排列决定,即D=,其中表示对所有n级排列求和, 是排列的逆序数.5.1.2 行列式的性质(1) 行列式与它的转置行列式相等.(2) 互换行列式的两行(列),

2、行列式变号.(3) 若行列式有两行(列)完全相同,则此行列式为零.(4) 行列式的某一行(列)中所有的元素都乘以同一数k,等于用数k乘此行列式.(5) 若行列式有两行(列)元素成比例,则此行列式为零.(6) 若行列式的某一列(行)的元素是两数的和,则此行列式等于对应两个行列式之和.即(7) 若行列式的某一行(列)的各元素乘以同一数加到另一行(列)对应的元素上去,行列式不变.(8) 行列式等于它的任一行(列)的各元素与其对应的代数余子式乘积之和,即,或 (9) 设A,B是n阶方阵,则 ,(10)若A是n阶可逆矩阵,则,(11) 设是n阶方阵A的特征值,则,(12) 设是n阶方阵A的伴随矩阵,则(

3、13) 几种特殊行列式的计算: , ,5.1.3 MatLab计算行列式的命令det(var) %计算方阵var的行列式例1 计算行列式的值在MatLab命令窗口输入:A=1,-3,2,2;-3,4,0,9;2,-2,6,2;3,-3,8,3 det(A)执行结果:A = 1 -3 2 2 -3 4 0 9 2 -2 6 2 3 -3 8 3ans = -50例2 计算行列式的值,其中a,b,c,d是参数.在MatLab命令窗口输入:syms a b c dA=a,1,0,0;-1,b,1,0;0,-1,c,1;0,0,-1,ddet(A)执行结果:A = a, 1, 0, 0 -1, b,

4、1, 0 0, -1, c, 1 0, 0, -1, dans =a*b*c*d+a*b+a*d+c*d+1例3 求方程的根.(1) 先求行列式的值在MatLab命令窗口输入:syms xA=1,1,1,1;1,-2,2,x;1,4,4,x*x;1,-8,8,x3y=det(A)执行结果:A = 1, 1, 1, 1 1, -2, 2, x 1, 4, 4, x2 1, -8, 8, x3y =-12*x3+48*x+12*x2-48(2) 求3次方程的根.首先通过函数的图形确定根的大致范围,在MatLab命令窗口输入:grid onezplot(y)图 1观察图1,可知3个根大致在-2,0,

5、4附近,下面求精确值,在MatLab命令窗口输入:yf=char(y);g1=fzero(yf,-2)g2=fzero(yf,0)g3=fzero(yf,4)执行结果:g1 = -2g2 = 1.0000g3 = 2.0000可知方程的3个根分别为-2,1,2.5.1.4用MatLab实现克拉默法则(1)克拉默法则非齐次线性方程组方程组 当其系数行列式时,此方程组有唯一解,且可表示为其中是把系数行列式中第j列的元素用方程组右端的常数项代替后所得到的n阶行列式,即对于齐次线性方程组当其系数行列式时,此方程组有唯一零解;当D=0时,方程组有非零解.(2) 编写函数klm.m实现用克拉默法则求解非齐

6、次线性方程组.function x=klm(a,b) %参数a代表方程组的系数矩阵,列矩阵b代表方程组的常数列,%返回方程组的解m,n=size(a);if (m=n) disp(克拉默法则不适用此方程组的求解!)else d=det(a); if (d=0) disp(该方程组没有唯一解!) else disp(该方程组有唯一解!) for i=1:m e=a; e(:,i)=b; f=det(e); x(i)=f/d; end endend例4 用克拉默法则解下列方程组:操作步骤:在MatLab命令窗口输入:D=1,1,1,1;1,2,-1,4;2,-3,-1,-5;3,1,2,11;A=

7、5;-2;-2;0;klm(D,A)执行结果:该方程组有唯一解!ans = 1 2 3 -1方程组的解为例5 问a取何值时,齐次方程组有非零解?根据齐次方程组有非零解,系数行列式为零,用MatLab操作步骤如下:图2在MatLab命令窗口输入:syms x A=5-x,2,2;2,6-x,0;2,0,4-x;yy=det(A) ezplot(yy,0,10) grid on执行结果:行列式的值为:yy = 80-66*x+15*x2-x3作函数yy的图形,如图2观察图2,可知根大致在2,5,8附近,再输入命令:yf=char(yy);x1=fzero(yf,2)x2=fzero(yf,5)x3

8、=fzero(yf,8)执行结果:x1 = 2x2 = 5x3 = 8即a取2,5,或8时,齐次方程组有非零解。5.2 矩阵及其运算5.2.1 矩阵的定义由个数排成的m行n列的数表称为m行n列矩阵,简称矩阵.记作5.2.2矩阵的运算设有两个矩阵和,则(1)加法 MatLab对应求矩阵加法的操作符为”+”(2)数乘 MatLab对应求矩阵数乘的操作符为”*”(3) 矩阵与矩阵相乘设矩阵是矩阵, 是矩阵,则矩阵A与矩阵B的乘积是一个矩阵,其中把此乘积记作C=ABMatLab对应求矩阵乘积的操作符为”*”(4)矩阵的转置 设矩阵是矩阵,把矩阵A的行换成同序数的列得到一个矩阵,叫A的转置矩阵,记作.在

9、MatLab对应求矩阵转置的操作符为 “ “(5)方阵的行列式 设矩阵是矩阵,由A的元素构成的行列式(各元素的位置不变),称为方阵A的行列式,记作或detA.MatLab对应求方阵行列式的命令为:det(var) %var代表待求行列式的方阵(6)方阵的逆矩阵 设矩阵是矩阵,若有一个n阶矩阵B,使AB=BA=E,则说矩阵A可逆,矩阵B称为A的逆矩阵.记为逆矩阵的判别定理: 若,则矩阵A可逆,且,其中是矩阵A的伴随矩阵,由行列式的各个元素的代数余子式所构成的,.MatLab对应求方阵逆的命令为:inv(var) %var代表待求逆矩阵的方阵下面按公式,用MatLab编写程序求矩阵的逆:funct

10、ion y=aij(A,i,j) %求方阵A元素aij的代数余子式Aij,C=A;C(i,:)=;C(:,j)=;y=(-1)(i+j)*det(C);function y=axing(A) %求方阵A伴随矩阵m n=size(A);for i=1:n for j=1:n y(i,j)=aij(A,j,i); endend则方阵A的逆等于axing(A)/det(A)例6 设,问3AB-2ATB是否可逆?若该矩阵可逆求它的逆.在MatLab创建m文件knf.m完成该问题的操作:A=1,1,1;1,1,-1;1,-1,1;B=1,2,3;-1,-2,4;0,5,1;C=3*A*B-2*A*B;d

11、c=det(C);if dc=0 disp(此矩阵不可逆!)else disp(此矩阵可逆!其逆矩阵为:) inv(C)end在MatLab命令窗口输入knf执行结果:此矩阵可逆!其逆矩阵为:ans = -0.3857 0.5143 0.5000 0.0857 -0.1143 00.0714 0.0714 05.3 矩阵的初等变换5.3.1下面三种变换称为矩阵A的初等行(列)变换:(1) 对调i,j两行(列);(2) 以数乘矩阵A的第i行(列)中所有元素;(3) 把第i行(列)所有元素的k倍加到第j行(列)的元素上去;用MatLab实现以上初等行变换:(1) A(i,j,:)=A(j,i,:)

12、(2) A(i,:)=k*A(i,:)(3) A(j,:)=k*A(i,:)+ A(j,:)5.3.2 用矩阵初等变换化矩阵为行最简形. 行最简形的特点是:可画出一条阶梯线,线的下方全为0,每个台阶只有一行,台阶数即为非零行的行数,阶梯线的竖线后面的第一个元素为非零元,非零行的第一个非零元为1,且这些非零元所在的列的其他元素都为0.MatLab对应化矩阵为行最简形的命令为:rref(var) %var代表待化为行最简形的矩阵例7 把矩阵化为行最简形矩阵。在MatLab命令窗口输入:A=1,2,2,1;2,1,-2,-2;1,-1,-4,-3;format rat 以分数的形式显示结果rref(

13、A)执行结果: ans = 1 0 -2 -5/3 0 1 2 4/3 0 0 0 0 5.3.3 初等变换的应用(1 ) 求矩阵A的逆矩阵:把分块矩阵(A,E)经过初等行变换化成(E,B),矩阵B就是所求矩阵A的逆矩阵.例8 用初等变换求矩阵的逆矩阵.在MatLab创建ni.m函数文件,完成用初等变换求矩阵的逆。function y=ni(a)da=det(a);if da=0 disp(此矩阵不可逆!)else disp(此矩阵可逆!其逆矩阵为:) m n=size(a); e=eye(n); d=rref(a e); y=d(:,(n+1):2*n); end在MatLab命令窗口输入:

14、A=1,-3,2,2;-3,4,0,9;2,-2,6,2;3,-3,8,3;ni(A)执行结果: 此矩阵可逆!其逆矩阵为:ans = -0.5200 -0.0400 -4.0400 3.1600 -0.4800 0.0400 -0.9600 0.8400 0 0 1.5000 -1.0000 0.0400 0.0800 -0.9200 0.6800(2 ) 求矩阵的秩:在矩阵A中,任取k行k列,位于这些行列交叉处的个元素,不改变它们在A中所处的位置次序而得到的k阶行列式称为矩阵A的k阶子式。设在矩阵A中有一个不等于0的r阶子式D,且所有的r1阶子式全等于0,那么D称为矩阵A的最高阶非零子式,数

15、r称为矩阵的秩,记作R(A).有关矩阵A的秩的性质:(a)矩阵A有一个r阶子式不为零,则;矩阵A所有r阶子式都等于零,则。(b)(c)(d)若,则(e)若P,Q可逆,则(f)(g)(h)(i)若,则求矩阵A秩的方法:方法1:把矩阵A经过初等行变换化成行阶梯形,非零的行数就是矩阵的秩.方法2:MatLab对应求矩阵秩的命令为:rank(var) var为待求秩的矩阵变量。例9 设,求矩阵A的秩,并求A的一个最高阶非零子式。在MatLab命令窗口输入:A=3,2,0,5,0;3,-2,3,6,-1;2,0,1,5,-3;1,6,-4,-1,4;rank(A)rref(A)执行结果: ans = 3

16、 ans = 1 0 1/2 0 7/2 0 1 -3/4 0 -1/4 0 0 0 1 -2 观察A的最简形,有3行非零,也可知矩阵A的秩为3,且最高阶子式可选第1,2,3行第1,2,4列构成的子式。命令为:zishi=A(1:3,1 2 4)zishi = 3 2 5 3 -2 6 2 0 5 det(zishi)ans = -16 %验证该子式不为零 (3 ) 求线性方程组的解定理1:n元非齐次线性方程组AXb(i)无解的充分必要条件是;(ii)有唯一解的充分必要条件是;(iii)有无限多解的充分必要条件是;定理2:n元齐次线性方程组AX0(i)有唯一解的充分必要条件是;(ii)有无限多

17、解的充分必要条件是;求解线性方程组的步骤是:(i)对于非齐次线性方程组,把它的增广矩阵化成行阶梯形,从B的行阶梯形可同时看出R(A)和R(B),若,则方程组无解。(ii)若,则说明方程组有解,进一步把B化成行最简形,而对于齐次线性方程组,则把系数矩阵A化成行最简形。(iii)设,把行最简形中r个非零行的非零首元所对应的未知数取作非自由未知数,其余nr个未知数取作自由未知数,并令自由未知数分别等于,由B的行最简形,即可写出含nr个参数的通解。MatLab对应求解方程组的方法为:(i)当系数矩阵A为方阵,且方程组有唯一解时,AXb对应的解为, 对应的MatLab命令为:X=inv(A)*b 或X=

18、Ab或Y =rref(A,b),X=Y(:,n+1)(ii)对于方程,在MatLab创建函数jfch.m完成上面求解步骤。function y=jfch(a,b)m n=size(a);c=a b;d=rref(c);ra=rank(a);rc=rank(c);if (ra=rc) if (ra=n) y=d(:,n+1); else d(m+1,:)=1:n+1;for i=1,ra if (d(i,i)=0) j=i+1; while(d(i,j)=0) j=j+1; end d(:,i,j)=d(:,j, i); end end x=-d(1:ra,ra+1:n),d(1:ra,n+1)

19、; x=x;eye(n-ra,n-ra+1); y=x; for i=1:n y(d(m+1,i),:)=x(i,:); end disp(the special solution is :) ss=y(:,n-ra+1) disp(the basic solution is :) bs=y(:,1:n-ra) endelse disp(there is no solution)end例10 分别用三种方法:逆,除法,初等变换(增广矩阵)求齐次和非齐次线性方程组的解。 (1) (2)(1) 对于方程组(1),先判别系数行列式的值,输入命令:A=1,-4,2;0,2,-1;-1,2,-1;det

20、(A)执行结果:ans = 0说明方程组的系数矩阵不可逆,该方程组有无穷多解,调用函数jfch求解,输入命令:B=zeros(3,1);jfch(A,B)执行结果:ra = 2the special solution is :ss = 0 0 0the basic solution is :bs = 0 0.5000 1.0000ans = 0 0 0.5000 0 1.0000 0从结果可知系数矩阵的秩为2,方程组的通解为(2) 对于方程组(2),先判别系数行列式的值,输入命令:A=1,1,3,-1;0,1,-1,1;1,1,2,2,;1,-1,1,-1;det(A)执行结果:ans = 1

21、0说明方程组的系数矩阵可逆,则输入命令:B=-2;1;4;0;方法1: X=inv(A)*B执行结果:X = 1.0000 -1.0000 0.0000 2.0000方法2: X=AB执行结果:X = 1 -1 0 2方法3: Y=rref(A ,B);X=Y(:,5)执行结果:X = 1 -1 0 2例11求下列非齐次方程组的通解。 (3) (4) (5)(1) 对于方程组(3),输入命令:A=1,-1,-1,1;1,-1,1,-3;1,-1,-2,3;B=0;1;-1/2 ; jfch(A,B)执行结果:ra = 2the special solution is :ss = 0.5000

22、0.5000 0 0the basic solution is :bs = 0 -1 1 01 2 0 1ans = 0 1.0000 0.5000 -1.0000 2.0000 0.5000 1.0000 0 0 0 1.0000 0从结果可知系数矩阵的秩为2,方程组有无穷多解,通解为:(2) 对于方程组(4),输入命令:A=2,1,-5,1;1,-3,0,-6;0,2,-1,2;1,4,-7,6;B=8;9;-5;0;jfch(A,B)执行结果:ans = 3 -4 -1 1从结果知方程组有唯一解:(3)对于方程组(5),输入命令:A=4,2,-1;3,-1,2;11,3,0;B=2;10

23、;8;jfch(A,B)执行结果:there is no solution说明该方程组无解.5.4 向量组的线性相关性5.4.1 定义 给定向量组,如果存在不全为零的数,使,则称向量组A是线性相关的,否则称它是线性无关. 设有向量组A,如果在A中能选出r个向量,满足(i) 向量组线性无关;(ii) 向量组A中任意r+1个向量(如果A中有r+1个向量的话)都线性相关.那么称向量组A0是向量组A的一个最大线性无关向量组,最大无关组所含向量的个数r称为向量组A的秩,记作RA.5.4.2 判别定理向量组线性相关的充分必要条件是它所构成的矩阵的秩小于向量个数m,向量组线性无关的充分必要条件是R(A)=m

24、.5.4.3 求向量组的最大线性无关向量组的方法把向量做成列构成矩阵,对该矩阵实施初等行变换变为行最简形,从而获得最大无关组,可以把不属于最大无关组的列向量用最大无关组表示.例12 判别下列向量组是线性相关还是线性无关?在MatLab命令窗口输入:A=-1,2,1;3,1,4;1,0,1;rank(A)执行结果:ans = 2结果说明矩阵A的秩比3小,所以向量组线性相关.例13 设矩阵,求矩阵A的列向量组的一个最大无关组,并把不属于最大无关组的列向量组用最大无关组线性表示.在MatLab命令窗口输入:A=2,-1,-1,1,2;1,1,-2,1,4;4,-6,2,-2,4;3,6,-9,7,9

25、;rref(A)执行结果:ans = 1 0 -1 0 4 0 1 -1 0 3 0 0 0 1 -3 0 0 0 0 0结果说明向量组的秩为3,列向量组的最大无关组含3个向量,取矩阵A的第1,2,4列作为列向量组的一个最大无关组,其余向量用最大无关组线性表示为:, 5.5 相似矩阵及二次型5.5.1 方阵的特征值与特征向量(1)定义 设A是n阶矩阵,如果数和n维非零列向量x使关系式成立,那么,这样的数称为方阵A的特征值,非零向量x称为A的对应于特征值的特征向量.(2) 特征值的性质设n阶矩阵的特征值为,(i);(ii)(iii)是的特征值(iv)当A可逆时, 是A-1的特征值.(v) 相似矩

26、阵就有相同的特征值.(3)定理1 : 对应不同特征值的特征向量线性无关.定理2 : n阶矩阵A与对角矩阵相似的充要条件是A有n个线性无关的特征向量.定理3: 设A是n阶对称阵,则必有正交阵P,使,其中是以A的n个特征值为对角元的对角阵.(4) MatLab求矩阵特征值与特征向量的命令:d= eig(A) %返回由矩阵A的特征值组成的列向量. V,D=eig(A) %返回特征值矩阵D和特征向量矩阵V.特征值矩阵D是以A的特征值为对角线的元素生成的对角阵,矩阵A的第k个特征值的特征向量是矩阵V的第k列向量,即满足AV=VD. 对于实对称矩阵,返回的特征向量矩阵是正交矩阵.(5) 用MatLab实现

27、矩阵对角化的判别.根据定理2,方阵A可对角化的条件是对于方阵A的每个特征值,其几何重数等于代数重数,首先在MatLab创建函数文件kdjh.m,实现矩阵可对角化的判别,function y=kdjh(A)y=1; c =size(A); %获得方阵A的阶数if c(1)=c(2) %判断是否为方阵 y=0; returnende=eig(A); %求矩阵的特征值向量n=length(A); while 1 if isempty(e) return; end d=e(1); f=sum(abs(e-d)10*eps); %求特征值d的代数重数. g=n-rank(A-d*eye(n); %求A-dE的零空间的秩,即对应特征值的几何重数. if f=g y=0;return; end e(find(abs(e-d)0,则称f为正定二次型,并称对称阵A是正定的, 如果对任何,都有f(x)0)=size(a) %判别特征值是否全为正 y=1;else y=-1; for i=1:size(a) b=a(1:i,1:i); i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论