Linear Algebra-乘法和逆矩阵-03

知识概要

前面介绍了向量与矩阵之间的乘法,这一节我们要介绍两个矩阵之间的乘法,并讨论逆矩阵存在的条件。最后介绍了求解逆矩阵的方法。

矩阵乘法

矩阵乘法最常见求解方式

首先了解下矩阵之间进行乘法时,我们是如何求解单个元素的呢?

以$C=A\times B$为例,矩阵 C 中第 i 行第 k 列的元素等于矩阵 A 的第 i 行元素与矩阵 B 的第 k 列对应元素乘积之和。

设矩阵 A 是一个 $3\times4$的矩阵,矩阵B是一个$4\times4$的矩阵,根据矩阵乘法规则,它们的乘积$C = AB$是一个 $3\times4$的矩阵。其计算公式为:

推广到一般:

需要注意的是矩阵的规格问题,从向量点乘的角度看,A 的列数必须要与 B 的行数相同

列组合与行组合方式

列组合

上一节我们学习到,矩阵与列向量的乘积,结果是一个列向量,该列向量可视为矩阵各列的线性组合。

那我们在计算矩阵间的乘法时,B 矩阵中的各列其实就是用来组合 A 矩阵的各列向量。其中等分别是 B 矩阵的列向量:

该方法关键在于将右侧矩阵 B 看做列向量的线性组合,将问题转化为矩阵与向量的乘法问题。表明了矩阵 C 就是矩阵 A 中各列向量的线性组合,而 B 其实是在告诉我们,要以什么样的方式组合 A 中的列向量。

行组合

同理,我们还学过行向量与矩阵的乘法,得到一个行向量。

因此这次就把矩阵 A 看做行向量的组合就行了,其中分别是 A 的行向量:

即矩阵 B 各行的线性组合组成了 C 的各行。

列乘以行

常规方法中,计算$A\times B=C$的矩阵乘法时,使用 A 的行向量乘上 B 的列向量得到 C 中各个位置的元素。

而我们这次介绍的方法,是用 A 的列向量乘以 B 的行向量,得到各个矩阵,再将矩阵相加,得到 C。

我们通过一个例子来说明:

【例】求解

列乘行方法:

注意这里每一次都是用列向量与行向量相乘得到一个矩阵,而每次得到的矩阵都是有特点的,比如 ,其中的每一列都与同向,每一行都与 同向。因此,该矩阵的列空间(矩阵列所有可能的线性组合)和行空间(矩阵行所有可能的线性组合)都是一条直线。

分块乘法

分块乘法就是宏观上的矩阵乘法,比如现在有一个 $50\times 50$的矩阵与$50\times 50$矩阵相乘,一个个进行运算很麻烦,尤其是如果矩阵在某一区域上有一定的性质(如某一矩阵分块内全部为 0 元素),那么我们可以将其分块,如:

其中的都是划分后的一块块矩阵,如:

blocked_matrix_mulply

,和矩阵乘法的计算步骤一样,只是这里的都是矩阵间的乘法而已。只要 A 和 B 分块相互匹配,就可以用这样的分块乘法求解。

逆矩阵

逆矩阵介绍

之前我们介绍过一些逆矩阵的定义,对于一个方阵 A,如果 A 可逆,就有$A^{-1}$,使得:$AA^{-1}=I=A^{-1}A$。

如果 A 是非方阵,左侧的$A^{-1}$与右侧的$A^{-1}$不可能相同,因为此时左右侧的$A^{-1}$形状一定不相同。

再以一个没有逆的矩阵为例:,矩阵中的两个列向量互为倍数,也就是说其中一个向量对他们的线性组合无意义,那么这个 A 不可能有逆,换句话说:若存在非零向量 x,使得 Ax=0,那么 A 就不可能有逆矩阵。

为什么呢?如果 A 有逆,且 x 是非零向量。则我们在$Ax=0$这个等式两边同时乘上$A^{-1}$,就有$A^{-1}Ax=Ix=0$,又因为$Ix=x$不是零向量,矛盾。因此此时 A 没有逆矩阵。

此时再回头看矩阵 ,由于两个列向量线性相关,一定有一个x,使得$Ax=0$,如,因此该矩阵不可逆。

逆矩阵求解

其实求逆矩阵就是解方程组的过程,举例说明:

【例】求解 的逆矩阵

从列向量的角度看,得到两个方程:

解这个方程就行了,但是这样做低阶矩阵还好,高阶矩阵计算量未免太大了。所以这里介绍一下高斯-若尔当方法。

高斯-若尔当方法

还是上面的例子,两个方程:

这个方法就是可以同时处理两个方程组,即使用增广矩阵联系两个方程。增广矩阵格式如下:

接下来进行行变换,将左侧的 $2\times 2$ 矩阵消为单位矩阵 I,此时右侧矩阵即为逆矩阵。

即逆矩阵为

接下来我们论证其合理性:

上面这个过程,对 进行消元处理使它变成单位矩阵I,就相当于左乘一堆的消元矩阵,设为E,就有,那么E肯定就是$A^{-1}$。再看右边,单位矩阵I经历了与同样的消元过程,最后的结果相当于$EI=A^{-1}$,那虚线右侧得到的结果就是$A^{-1}$。

学习收获

本节介绍了认识矩阵乘法的不同角度,并介绍了逆矩阵的相关知识以及如何求解逆矩阵。MIT 的课程少有繁琐的证明,更多的是理解和类比,多从向量、空间、线性组合的角度去认识矩阵之间的运算。

linear_algebra_multiply_and_inverse