当前位置:文档之家› 线性代数的基本运算

线性代数的基本运算

111第5章 线性代数的基本运算本章学习的主要目的:1 复习线性代数中有关行列式、矩阵、矩阵初等变换、向量的线性相关性、线性方程组的求解、相似矩阵及二次型的相关知识.2学会用MatLab 软件进行行列式的计算、矩阵的基本运算、矩阵初等变换、向量的线性相关性的判别、线性方程组的求解、二次型化标准形的运算.5.1 行列式5.1.1 n 阶行列式定义由2n 个元素),,2,1,(n j i a ij 组成的记号D=nnn n n n a a a a a a a a a 212222111211称为n 阶行列式.其值是所有取自不同行不同列的n 个元素的乘积n np 2p 21p 1a a a 的代数和,各项的符号由n 级排列n p p p 21决定,即112 D=∑-np p p n p p p 21nnp 2p 21p 1)21(a a a)1(τ,其中∑np p p 21表示对所有n 级排列求和,),,,(21n p p p τ是排列n p p p 21的逆序数.5.1.2 行列式的性质(1) 行列式与它的转置行列式相等. (2) 互换行列式的两行(列),行列式变号.(3) 若行列式有两行(列)完全相同,则此行列式为零. (4) 行列式的某一行(列)中所有的元素都乘以同一数k,等于用数k 乘此行列式.(5) 若行列式有两行(列)元素成比例,则此行列式为零. (6) 若行列式的某一列(行)的元素是两数的和,则此行列式等于对应两个行列式之和.即nnnn ni n n i i nn n n ni n n i i nn n n ni ni n n i i i i a a a a a a a a a a a a a a a a a a a a aa a a a a a a a a a a a a a a a a a21'21'22221'112112121222211121121'21'222221'111211+=+++(7) 若行列式的某一行(列)的各元素乘以同一数加到另一行(列)对应的元素上去,行列式不变.113(8) 行列式等于它的任一行(列)的各元素与其对应的代数余子式乘积之和,即),,2,1(,0,1j k n i k i ki D A a D nj ij =⎩⎨⎧≠===∑=,或),,2,1(,0,1i n j k j kj D A a D nik ij =⎩⎨⎧≠===∑=(9) 设A,B 是n 阶方阵,则TA A =,A A n k k =,BA AB =,(10)若A 是n 阶可逆矩阵,则0≠A ,AA 11=-(11) 设n 21,,,λλλ 是n 阶方阵A 的特征值,则i nA λ1i =∏=,(12) 设*A 是n 阶方阵A 的伴随矩阵,则2n *1≥=-n AA(13) 几种特殊行列式的计算:nn nna a a a a a 22112211000000=,nn nnnna a a a a a a a a 221122*********=nn nn n n a a a a a a a a a221121222111000=,112n 12)1(1222111211)1(000n n n n n na a a a a a a a a---=5.1.3 MatLab 计算行列式的命令 det(var) %计算方阵var 的行列式114 例1 计算行列式3833262290432231----的值在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 3 ans = -50例2 计算行列式dc b 100110011001a ---的值,其中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,d] det(A) 执行结果:115A =[ a, 1, 0, 0][ -1, b, 1, 0] [ 0, -1, c, 1] [ 0, 0, -1, d]ans =a*b*c*d+a*b+a*d+c*d+1 例3求方程0881441221111132=--x x x的根. (1) 先求行列式的值 在MatLab 命令窗口输入: syms xA=[1,1,1,1;1,-2,2,x;1,4,4,x*x;1,-8,8,x^3] y=det(A) 执行结果: A =[ 1, 1, 1, 1] [ 1, -2, 2, x] [ 1, 4, 4, x^2] [ 1, -8, 8, x^3]y =-12*x^3+48*x+12*x^2-48(2) 求3次方程的根.首先通过函数的图形确定根的大致范围,在MatLab命令窗口输入:grid onezplot(y)-12 x3+48 x+12 x2-48300020001000-1000-2000-6-4-20246图 1 观察图1,可知3个根大致在-2,0,4附近,下面求精确值, 在MatLab命令窗口输入:yf=char(y);g1=fzero(yf,-2)116117g2=fzero(yf,0) g3=fzero(yf,4) 执行结果: g1 = -2 g2 = 1.0000 g3 = 2.0000可知方程的3个根分别为-2,1,2. 5.1.4用MatLab 实现克拉默法则 (1)克拉默法则非齐次线性方程组方程组⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++nn nn n n n n n n b x a x a x a b x a x a x a b x a x a x a 22112222212111212111当其系数行列式0212222111211≠=nnn n n n a a a a a a a a a D 时,此方程组有唯一解,且可表示为DD x DD x DD x n n ===,,,2211其中),,2,1(n j D J =是把系数行列式D 中第j 列的元素用方程组118 右端的常数项代替后所得到的n 阶行列式,即nnj n nj n n n j j j a a b a a a a b a a D1,1,111,111,111+-+-=对于齐次线性方程组⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++000221122221211212111n nn n n nn n n x a x a x a x a x a x a x a x a x a 当其系数行列式0212222111211≠=nnn n n n a a a a a a a a a D时,此方程组有唯一零解;当D=0时,方程组有非零解. (2) 编写函数klm.m 实现用克拉默法则求解非齐次线性方程组.function x=klm(a,b) %参数a 代表方程组的系数矩阵,列矩阵b 代表方程组的常数列,%返回方程组的解[m,n]=size(a); if (m~=n)disp('克拉默法则不适用此方程组的求解!')119else d=det(a); if (d==0)disp('该方程组没有唯一解!') elsedisp('该方程组有唯一解!') for i=1:m e=a; e(:,i)=b; f=det(e); x(i)=f/d; end end end例4 用克拉默法则解下列方程组:12341234123412345242235232110x x x x x x x x x x x x x x x x +++=⎧⎪+-+=-⎪⎨---=-⎪⎪+++=⎩ 操作步骤:120 在MatLab 命令窗口输入:D=[1,1,1,1;1,2,-1,4;2,-3,-1,-5;3,1,2,11]; A=[5;-2;-2;0]; klm(D,A) 执行结果:该方程组有唯一解!ans = 1 2 3 -1 方程组的解为1,3,2,1x 4321-====x x x 例5 问a 取何值时,齐次方程组⎪⎩⎪⎨⎧=-+=-+=++-0)4(20)6(2022)5(3121321x a x x a x x x x a 有非零解? 根据齐次方程组有非零解,系数行列式为零,用MatLab 操作步骤如下:在MatLab 命令窗口输入: syms xA=[5-x,2,2;2,6-x,0;2,0,4-x];yy=det(A) ezplot(yy,[0,10])图20246810-5050grid on执行结果:行列式的值为:yy = 80-66*x+15*x^2-x^3作函数yy的图形,如图2观察图2,可知根大致在2,5,8附近,再输入命令:yf=char(yy);x1=fzero(yf,2)x2=fzero(yf,5)x3=fzero(yf,8)执行结果:x1 = 2x2 = 5x3 = 8即a取2,5,或8时,齐次方程组有非零解。

5.2 矩阵及其运算5.2.1 矩阵的定义121122 由n m ⨯个数),,2,1;,,2,1(a ij n j m i ==排成的m 行n 列的数表mnm m n n a a a a a a a a a112222111211称为m 行n 列矩阵,简称n m ⨯矩阵.记作⎪⎪⎪⎪⎪⎭⎫⎝⎛=mn m m n n a a a a a a a a a A 112222111211 5.2.2矩阵的运算设有两个n m ⨯矩阵)a (ij =A 和)b (ij =B ,则 (1)加法n m j i ij )b a (⨯+=+B AMatLab 对应求矩阵加法的操作符为”+” (2)数乘n m )ka (k ij ⨯=AMatLab 对应求矩阵数乘的操作符为”*” (3) 矩阵与矩阵相乘设矩阵)a (ij =A 是s m ⨯矩阵,)b (ij =B 是n s ⨯矩阵,则矩阵A 与矩阵B 的乘积是一个n m ⨯矩阵)c (ij =C ,其中),,2,1;,,2,1(,b ac s1k kj ik ij n j m i ===∑=把此乘积记作C=AB123MatLab 对应求矩阵乘积的操作符为”*” (4)矩阵的转置设矩阵)a (ij =A 是n m ⨯矩阵,把矩阵A 的行换成同序数的列得到一个m n ⨯矩阵,叫A 的转置矩阵,记作T A . 在MatLab 对应求矩阵转置的操作符为 “ ’ “ (5)方阵的行列式设矩阵)a (ij =A 是n n ⨯矩阵,由A 的元素构成的行列式(各元素的位置不变),称为方阵A 的行列式,记作A 或detA. MatLab 对应求方阵行列式的命令为: det (var) %var 代表待求行列式的方阵 (6)方阵的逆矩阵 设矩阵)a (ij =A 是nn ⨯矩阵,若有一个n 阶矩阵B,使AB=BA=E,则说矩阵A 可逆,矩阵B 称为A 的逆矩阵.记为1-=A B逆矩阵的判别定理:若0≠A ,则矩阵A 可逆,且*11A AA =-,其中*A 是矩阵A 的伴随矩阵,由行列式A 的各个元素的代数余子式ij A 所构成的,124 ⎪⎪⎪⎪⎪⎭⎫⎝⎛=nn n n n n A A A A A A A A A A 212221212111*. MatLab 对应求方阵逆的命令为:inv (var) %var 代表待求逆矩阵的方阵 下面按公式*11A AA =-,用MatLab 编写程序求矩阵的逆:function y=aij(A,i,j) %求方阵A 元素a ij 的代数余子式A ij, C=A; C(i,:)=[]; C(:,j)=[];y=(-1)^(i+j)*det(C);function y=axing(A) %求方阵A 伴随矩阵*A [m n]=size(A); for i=1:n for j=1:ny(i,j)=aij(A,j,i); end125end则方阵A 的逆等于axing(A)/det(A) 例6 设⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=111111111A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=150421321B ,问3AB-2A T B 是否可逆?若该矩阵可逆求它的逆.在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; dc=det(C); if dc==0disp('此矩阵不可逆!') elsedisp('此矩阵可逆!其逆矩阵为:') inv(C) end在MatLab 命令窗口输入 knf 执行结果:此矩阵可逆!其逆矩阵为:ans =-0.3857 0.5143 0.50000.0857 -0.1143 00.0714 0.0714 05.3 矩阵的初等变换5.3.1下面三种变换称为矩阵A的初等行(列)变换:(1)对调i,j两行(列);(2)以数0k 乘矩阵A的第i行(列)中所有元素;(3)把第i行(列)所有元素的k倍加到第j行(列)的元素上去;用MatLab实现以上初等行变换:(1)A([i,j],:)=A([j,i],:)(2)A(i,:)=k*A(i,:)(3)A(j,:)=k*A(i,:)+ A(j,:)5.3.2 用矩阵初等变换化矩阵为行最简形.行最简形的特点是:可画出一条阶梯线,线的下方全为0,126127每个台阶只有一行,台阶数即为非零行的行数,阶梯线的竖线后面的第一个元素为非零元,非零行的第一个非零元为1,且这些非零元所在的列的其他元素都为0. MatLab 对应化矩阵为行最简形的命令为: rref (var) %var 代表待化为行最简形的矩阵 例7 把矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-----=341122121221A 化为行最简形矩阵。

相关主题