单位矩阵与逆矩阵
1687字,阅读需时6分钟

在我们学过的数字中,1是一个比较特别的数字,用数字1乘以任何数还是这个数。例如:

1 X 0 = 0

1 X 1 = 1

……

1 X n = n

那么,在矩阵运算中有没有类似于数字1的矩阵呢,任何n阶矩阵与该矩阵相乘还是原矩阵。答案是肯定的,这就是单位矩阵。

单位矩阵是一个n阶矩阵,该矩阵的主对角线(从矩阵的左上角到右下角这一斜线上的n 个元素的位置,叫做n 阶矩阵的主对角线)元素都为1,其余元素都为0。单位矩阵用大写字母I表示。

一个2阶单位矩阵

image.png                                            

一个3阶单位矩阵

 image.png

下面我们来验证单位矩阵与A矩阵相乘,结果还是A矩阵。

image.png

考虑到一般性,我们把矩阵A的元素设定为字母,表示任何实数。从运算过程可以看出,当单位矩阵的第1行(也称为行向量)乘以A矩阵的第1列(也称为列向量)时,将行向量和列向量的相关项相乘后相加。行向量的0会取消掉与其相乘的列向量的元素,只保留与1相乘的列向量的元素。依次类推,计算结果就是保留原来的矩阵。

前面说过矩阵的乘法是不满足交换律的,下面我们来看用n阶单位矩阵与n阶矩阵的乘积是否满足乘法交换律,我们依然采用上面2阶矩阵的例子。计算规则同样适用于3阶或n阶矩阵。

image.png

由此看出

image.png

可以推断出,当两个n阶矩阵中有一个是数量矩阵时(数量矩阵是指主对角线上为同一非0数值,其它元素都是0),此时矩阵乘法满足交换律。

如果一个n阶矩阵A与n阶矩阵B相乘的结果是n阶单位矩阵,则这个n阶B矩阵称为A矩阵的逆矩阵。即:

image.png

A的逆矩阵被记为:

image.png

下面我们来求2阶A矩阵的逆矩阵。

image.png

计算逆矩阵是一个非常复杂的过程,特别是计算3阶以上的逆矩阵。本课主要的目的是了解逆矩阵,计算3阶或更高阶的逆矩阵可以交给NumPy来完成。

要计算A矩阵的逆矩阵,首先要求出A矩阵的行列式,A矩阵是二阶矩阵,二阶矩阵的行列式可以用对角线法则计算得出,从左上角到右下角上元素相乘,取正号,右上角和左下角上元素相乘,取负号,两个乘积的代数和就是二阶行列式的值。

2阶A矩阵的行列式 = ad – cb

矩阵A的行列式也可以记为:|A|

行列式在线性代数中是一个重要的数学工具,关于行列式的概念、计算及意义可以参考相关的线性代数课程。

二阶A矩阵逆矩阵的计算公式为:

image.png

公式右侧的矩阵在矩阵A的基础上进行了调整,主对角线的元素位置互换,次对角线(从右上角到左下角)元素取相反数。

根据上面计算二阶矩阵逆矩阵的公式,我们来求下面B矩阵的逆矩阵:

image.png

image.png

B矩阵的行列式计算结果为-7,也就是-1/7乘以B变换后的矩阵,标量与矩阵相乘的规则是标量乘以矩阵的每个元素。B矩阵的逆矩阵为:

image.png

下面我们来验证B矩阵与B的逆矩阵相乘的结果是否是单位矩阵。

image.png

验证结果是正确的。

下面我们使用NumPy库来求B矩阵的逆矩阵并验证。

import numpy as np
#定义矩阵B
B = np.array([[3,-4],[2,-5]])
 
#定义求逆矩阵函数
def matrixInverse(A):
    #NumPy的matmul完成矩阵乘法运算
    C = np.linalg.inv(A)
    return C
 
#定义矩阵乘法运算函数
def matrixMul(A, B):
    #NumPy的matmul完成矩阵乘法运算
    C = np.matmul(A,B)
    return C
if __name__ == '__main__':
    #求B的逆矩阵
    C = matrixInverse(B)
    print(C)
   
    #验证B的逆矩阵
    print(matrixMul(B,C))
我要评论
全部评论
郎宏林
授课老师
授课老师简介
项目经理,系统分析和架构师,从事多年中文信息处理技术。熟悉项目管理、擅长项目需求分析和设计、精通Java、C#、Python等编程语言。
下载APP

手机、电脑同步学

用微信或手机浏览器扫描二维码,即可下载APP。

  • 备案号:鲁ICP备15001146号
  • @1997-2018 潍坊米粒花网络技术有限公司版权所有