线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)

上一讲当中我们复习了行列式的内容,行列式只是开胃小菜,线性代数的大头还是矩阵。


矩阵的定义很简单,就是若干个数按照顺序排列在一起的数表。比如m * n个数,排成一个m * n的数表,就称为一个m * n的矩阵。


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(1)


矩阵运算的相关性质不多,主要的有这么几点:


  • 矩阵的加法有结合律和交换律
  • 矩阵的乘法没有交换律
  • m*n的矩阵乘上n*k的矩阵的结果是一个m*k的矩阵


很多人会觉得矩阵乘法比较复杂,不仅是计算复杂,而且经常会记不清运算的方法。会觉得复杂,可能只是因为我们将它当做了数学公式来生硬的记忆,而没有理解其中的原理。


我们不妨假设A和B分别是一个m*n和n*k的矩阵:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(2)


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(3)

那么,


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(4)


其中,


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(5)


Arowi指的是A矩阵中第i行的行向量,同样Bcolj指的是B矩阵中第j列的列向量。


我们单从公式上来看不太容易理解,但我们可以转变一下思路。将B不要当做一个完整的矩阵,而当做是k个列向量的集合,代表一种线性变换。将一个n维的向量线性变换到k维空间的变换。


那么A和B矩阵相乘的结果,其实也就意味着A矩阵当中m个n维向量分别进行线性变换之后组合成的新矩阵。向量的数量没有变,还是m个,只不过维度从n变成了k,所以最终的结果是一个m*k的矩阵。


这点搞明白了之后,就到了接下来的重头戏——逆矩阵


我们先来看一下逆矩阵的定义,假设A是一个n阶的方阵,如果存在一个矩阵B,使得A⋅B的结果是单位矩阵I,那么就称B是A的逆矩阵。


计算逆矩阵需要用到之前介绍过的代数余子式,如果不清楚的同学可以回顾一下之前关于行列式的相关内容。


线性代数精华1——从行列式开始


我们列举出所有的代数余子式,将这些余子式组合成一个矩阵,这样的矩阵称为伴随矩阵。定义如下:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(6)


通过上面的定义,我们可以看出来,伴随矩阵也是一个n阶的方阵。关于伴随矩阵,有一个定理:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(7)


其中I是n阶的单位矩阵,也即是正对角线全为1,其他位置均为0的方阵。


我们来试着证明一下这个定理:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(8)


显然A A*也是一个n阶的矩阵,令结果为B。我们写出B矩阵当中的每一项Bij

线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(9)

当i=j时,


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(10)


在上一篇文章当中,我们介绍过,矩阵中的某一行与它对应的代数余子式的乘积为行列式的值:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(11)


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(12)


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(13)


这点其实没什么需要证明的,我们把式子展开就可以得到了。为了方便观察,我们用三阶行列式举例。


我们令


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(14)


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(15)


我们以B12为例:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(16)


接着,我们把代数余子式展开:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(17)

根据我们之前关于代数余子式的定义,这个式子其实是以下这个矩阵行列式根据第一行展开的结果:

线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(18)


再根据行列式的性质,如果一个n阶的行列式当中存在某两行或者某两列相同,那么行列式的值等于0。


同样展开其他的Bij,我们可以证明:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(19)


所以B=|A|I,使用同样的方法,也可以证明A∗A=|A|I


我们费这么大力气证明伴随矩阵有什么用呢?其实是为了求逆矩阵做准备。有了伴随矩阵的这个性质,我们求逆矩阵就方便了。


在求解之前,我们先来看一下逆矩阵的定义。


假设存在方阵B,使得AB=BA=I,那么就称作B是A的逆矩阵。


在我们介绍逆矩阵的计算方法之前,需要先明确,逆矩阵不等于矩阵转置。矩阵转置的操作是将一个矩阵行和列互换,在线性代数当中,矩阵A的转置记作AT,而A的逆矩阵记作A−1,看起来比较相似,很容易搞混。


我们之前证明了AA∗=|A|I,当矩阵A的行列式|A|不等于0时,那么显然有:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(20)


根据我们之前逆矩阵的定义:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(21)


如果|A|=0怎么办?


行列式等于0的矩阵称为奇异矩阵,奇异矩阵没有逆矩阵。所以一个矩阵有逆矩阵的前提就是非奇异矩阵。


以上就是逆矩阵的推导过程和计算方法,当然在实际的应用当中,我们并不需要如此麻烦。因为Python的numpy库当中已经为我们封装好了现成的计算工具,我们只需要直接调用即可,使用方法和之前的计算行列式基本一样:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(22)

通过调用np.linalg.inv方法来得到逆矩阵:


线性代数中逆矩阵概念(线性代数精华2逆矩阵的推导过程)(23)


需要注意的是,如果a是一个奇异矩阵,那么计算逆矩阵时会报错。所以我们在此之前,需要先计算矩阵的行列式,判断是否是奇异矩阵。不清楚行列式计算方法的同学,可以回顾一下上一篇文章。


如果觉得文章有所帮助,请点个转发或者关注哦~


参考资料
线性代数第五版(上海交大出版社)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页