一、逆矩阵的注释
假设 AAA 是一个方阵,其逆矩阵 A−1A^{-1}A−1 与它的大小相同,A−1A=IA^{-1}A=IA−1A=I。AAA 与 A−1A^{-1}A−1 会做相反的事情。它们的乘积是单位矩阵 —— 对向量无影响,所以 A−1Ax=xA^{-1}A\boldsymbol x=\boldsymbol xA−1Ax=x,但是 A−1A^{-1}A−1 也可能不存在。
矩阵最常见的就是乘一个向量 x\boldsymbol xx,Ax=bA\boldsymbol x =\boldsymbol bAx=b 两边同时乘 A−1A^{-1}A−1 得到 A−1Ax=A−1bA^{-1}A\boldsymbol x=A^{-1}\boldsymbol bA−1Ax=A−1b,所以 x=A−1b\boldsymbol x=A^{-1}\boldsymbol bx=A−1b。A−1AA^{-1}AA−1A 的乘积就像一个乘一个数再除一个数。如果一个数非零,则必然存在倒数,矩阵会更复杂一些。A−1A^{-1}A−1 称为 AAA 的逆矩阵。
定义如果存在一个矩阵 A−1 “逆反” A,则矩阵 A 可逆:两边逆反A−1A=I 且 AA−1=I(2.5.1)\pmb{定义}\kern 8pt如果存在一个矩阵\,A^{-1}\,“逆反”\,A,则矩阵\,A\,可逆:\\\pmb{两边逆反}\kern 10ptA^{-1}A=I\,且\,AA^{-1}=I\kern 15pt(2.5.1)定义如果存在一个矩阵A−1“逆反”A,则矩阵A可逆:两边逆反A−1A=I且AA−1=I(2.5.1)
并不是所有矩阵都有逆矩阵。方阵 AAA 第一个需要讨论的问题是:AAA 是否可逆?这里先不计算 A−1A^{-1}A−1,大部分情况下,并不需要计算逆矩阵,下面是逆矩阵的 6 点注释:
Note 1: 矩阵可逆当且仅当消元法可以得到 nnn 个主元(允许行交换)。消元法求解 Ax=bA\boldsymbol x=\boldsymbol bAx=b 时不需要明确使用 A−1A^{-1}A−1。
Note 2: 矩阵 AAA 不可能存在两个不同的逆矩阵。假设 BA=IBA=IBA=I 且 AC=IAC=IAC=I,由结合律可得 B=CB=CB=C:B(AC)=(BA)C得BI=IC或B=C(2.5.2)B(AC)=(BA)C\kern 4pt得\kern 4ptBI=IC\kern 4pt或\kern 4ptB=C\kern 15pt(2.5.2)B(AC)=(BA)C得BI=IC或B=C(2.5.2)上式证明了左逆矩阵 BBB(从左边乘)和右逆矩阵 CCC(从右边乘)是相等的。
Note 3: 若矩阵 AAA 可逆,Ax=bA\boldsymbol x=\boldsymbol bAx=b 有唯一解 x=A−1b\boldsymbol x=A^{-1}\boldsymbol bx=A−1b:
A−1 乘 Ax=b得x=A−1Ax=A−1bA^{-1}\,乘\,A\boldsymbol x=\boldsymbol b\kern 5pt得\kern 5pt\boldsymbol x=A^{-1}A\boldsymbol x=A^{-1}\boldsymbol bA−1乘Ax=b得x=A−1Ax=A−1b
Note 4:(重要)若有一个非零向量 x\boldsymbol xx 使得 Ax=0A\boldsymbol x=\boldsymbol 0Ax=0,则 AAA 不可逆。没有这样的矩阵可以将 0\boldsymbol 00 变成 x\boldsymbol xx。
若 A 可逆,则 Ax=0 仅存在零解 x=A−10=0若\,A\,可逆,则\,A\boldsymbol x=\boldsymbol 0\,仅存在零解\,\boldsymbol x=A^{-1}\boldsymbol 0=\boldsymbol 0若A可逆,则Ax=0仅存在零解x=A−10=0
Note 5: 若 2×22\times22×2 的矩阵 AAA 可逆,当且仅当 ad−bc≠0ad-bc\neq0ad−bc=0:2×2 逆矩阵:[abcd]−1=1ad−bc[d−b−ca](2.5.3)2\times2\,逆矩阵:\begin{bmatrix}a&b\\c&d\end{bmatrix}^{-1}=\frac{1}{ad-bc}\begin{bmatrix}\kern 7ptd&-b\\-c&\kern 7pta\end{bmatrix}\kern 15pt(2.5.3)2×2逆矩阵:[acbd]−1=ad−bc1[d−c−ba](2.5.3)ad−bcad-bcad−bc 是 AAA 的行列式,若矩阵的行列式不为零,则矩阵可逆。
Note 6: 若对角线矩阵的对角线元素都不为零,则对角线矩阵可逆:
【例1】2×22\times22×2 的矩阵 A=[1212]A=\begin{bmatrix}1&2\\1&2\end{bmatrix}A=[1122] 不可逆。因为 ad−bc=2−2=0ad-bc=2-2=0ad−bc=2−2=0,所以 Note 5 的测试失败。当 x=(2,−1)\boldsymbol x=(2,-1)x=(2,−1) 时 Ax=0A\boldsymbol x=\boldsymbol 0Ax=0,所以 Note 3 的测试失败。没有两个主元,所以 Note 1 的测试失败。
消元法会使得矩阵 AAA 的第二行变成零行。
二、AB 乘积的逆矩阵
两个非零数 aaa 和 bbb,它们都有倒数,但它们的和不一定有倒数。例如 a=3a=3a=3,b=−3b=-3b=−3,则 aaa 的倒数是 13\displaystyle\frac{1}{3}31,bbb 的倒数是 −13-\displaystyle\frac{1}{3}−31,它们的和 a+b=0a+b=0a+b=0,000 没有倒数。但是它们的乘积 ab=−9ab=-9ab=−9 是有倒数的,其倒数是 13×(−13)=−19\displaystyle\frac{1}{3}\times(-\frac{1}{3})=-\frac{1}{9}31×(−31)=−91。
对于两个矩阵 AAA 和 BBB 和上面的情况类似,它们的和不一定可逆,但是如果这两个矩阵均可逆,那么它们的乘积 ABABAB 也可逆。只是 A−1A^{-1}A−1 与 B−1B^{-1}B−1 需要反序相乘:
如果 A 和 B 均可逆,则 AB 也可逆。AB 的逆矩阵是:(AB)−1=B−1A−1(2.5.4)如果\,A\,和\,B\,均可逆,则\,AB\,也可逆。AB\,的逆矩阵是:\\(AB)^{-1}=B^{-1}A^{-1}\kern 18pt(2.5.4)如果A和B均可逆,则AB也可逆。AB的逆矩阵是:(AB)−1=B−1A−1(2.5.4)
为什么需要反序相乘呢?我们计算 ABABAB 乘 B−1A−1B^{-1}A^{-1}B−1A−1,中间会有 BB−1=IBB^{-1}=IBB−1=I:AB 的逆矩阵(AB)(B−1A−1)=AIA−1=AA−1=IAB\,的逆矩阵\kern 20pt(AB)(B^{-1}A^{-1})=AIA^{-1}=AA^{-1}=IAB的逆矩阵(AB)(B−1A−1)=AIA−1=AA−1=I去掉括号,先求 BB−1BB^{-1}BB−1。同样的 B−1A−1B^{-1}A^{-1}B−1A−1 乘 ABABAB 等于 III。
B−1A−1B^{-1}A^{-1}B−1A−1 说明了一个基本的数学法则,逆矩阵就是逆序。例如先穿袜子再穿鞋子,逆序就是先脱鞋子再脱袜子。三个及三个以上的矩阵同样遵循这样的反序:
反序(ABC)−1=C−1B−1A−1(2.5.5)\pmb{反序}\kern 10pt(ABC)^{-1}=C^{-1}B^{-1}A^{-1}\kern 20pt(2.5.5)反序(ABC)−1=C−1B−1A−1(2.5.5)
【例2】消元矩阵的逆矩阵。如果 EEE 从行 222 减去 555 倍的行 111,那么 E−1E^{-1}E−1 就会将 555 倍的行 111 加到行 222:E 减去E−1 加上E=[100−510001],E−1=[100510001]\begin{matrix}E\,减去\\E^{-1}\,加上\end{matrix}\kern 10ptE=\begin{bmatrix}\kern 7pt1&0&0\\-5&1&0\\\kern 7pt0&0&1\end{bmatrix},\kern 10ptE^{-1}=\begin{bmatrix}1&0&0\\5&1&0\\0&0&1\end{bmatrix}E减去E−1加上E=1−50010001,E−1=150010001EE−1EE^{-1}EE−1 将得到单位矩阵 III。E−1EE^{-1}EE−1E 也会得到 III,它是先加上再减去的 555 倍的行 111。如果 AC=IAC=IAC=I,则 CA=ICA=ICA=I。
对于方阵来说,一侧的逆矩阵也是另一侧的逆矩阵。
【例3】假设 FFF 从行 333 减去 444 倍的行 222,则 F−1F^{-1}F−1 会将其加回去:F=[1000100−41],F−1=[100010041]F=\begin{bmatrix}1&\kern 7pt0&0\\0&\kern 7pt1&0\\0&-4&1\end{bmatrix},\kern 10ptF^{-1}=\begin{bmatrix}1&0&0\\0&1&0\\0&4&1\end{bmatrix}F=10001−4001,F−1=100014001现在用 FFF 乘上例 2 中的 EEE,求出 FEFEFE,同时求出 E−1F−1E^{-1}F^{-1}E−1F−1。注意 FEFEFE 与 E−1F−1E^{-1}F^{-1}E−1F−1 的顺序!FE=[100−51020−40],E−1F−1=[100510041](2.5.6)FE=\begin{bmatrix}\kern 7pt1&\kern 7pt0&0\\-5&\kern 7pt1&0\\\pmb{20}&-4&0\end{bmatrix},\kern 10ptE^{-1}F^{-1}=\begin{bmatrix}1&0&0\\5&1&0\\0&4&1\end{bmatrix}\kern 15pt(2.5.6)FE=1−52001−4000,E−1F−1=150014001(2.5.6)逆矩阵 E−1F−1E^{-1}F^{-1}E−1F−1 是一个美丽又正确的矩阵,EFEFEF 含有 202020,但是它的逆矩阵却没有。EEE 从行 222 减去 555 倍的行 111,然后 FFF 从行 333 中减去 444 倍新的行 222 (此时的行 222 已经被行 111 改变了)。所以 FEFEFE 会使得行 333 受到行 111 的影响。
而按照 E−1F−1E^{-1}F^{-1}E−1F−1 的顺序,上述影响并没有出现。F−1F^{-1}F−1 将 444 倍的行 222 加到行 333,然后 E−1E^{-1}E−1 又将 555 倍的行 111 加到行 222 上,此过程中行 333 没有再被改变,所以就不再含有 202020。所以 E−1F−1E^{-1}F^{-1}E−1F−1 不会使行 333 受到行 111 的影响。
这也就是为什么会有 A=LUA=LUA=LU,它可以从三角矩阵 UUU 回到 AAA,其乘数将会完美的出现在下三角矩阵 LLL 中。
消元的顺序是先 E 后 F,逆序是先 F−1 后 E−1E−1F−1 比较快,乘数 5,4 落在对角线元素 1 的下方消元的顺序是先\,E\,后\,F,逆序是先\,F^{-1}\,后\,E^{-1}\\E^{-1}F^{-1}\,比较快,乘数\,5,4\,落在对角线元素\,1\,的下方消元的顺序是先E后F,逆序是先F−1后E−1E−1F−1比较快,乘数5,4落在对角线元素1的下方
三、高斯-若尔当(Gauss-Jordan)消元法
方程 Ax=bA\boldsymbol x=\boldsymbol bAx=b 的解是 x=A−1b\boldsymbol x=A^{-1}\boldsymbol bx=A−1b。使用消元法可以直接求出 x\boldsymbol xx,消元法也可以求出 A−1A^{-1}A−1。高斯 - 若尔当的思想就是求解 AA−1=IAA^{-1}=IAA−1=I,找到 A−1A^{-1}A−1 的每一列。
AAA 乘 A−1A^{-1}A−1 的第一列(称为 x1\boldsymbol x_1x1),得到 III 的第一列(称为 e1\boldsymbol e_1e1),假设 AAA 的 3×33\times 33×3 的方阵,则方程是 Ax1=e1=(1,0,0)A\boldsymbol x_1=\boldsymbol e_1=(1,0,0)Ax1=e1=(1,0,0),同样的还有两个方程。AAA 乘上 A−1A^{-1}A−1 的每一列 x1,x2,x3\boldsymbol x_1,\boldsymbol x_2,\boldsymbol x_3x1,x2,x3 得到 III 的列:
A−1 的三列AA−1=A[x1x2x3]=[e1e2e3]=I(2.5.7)A^{-1}\,的三列\kern 10ptAA^{-1}=A\begin{bmatrix}\boldsymbol x_1&\boldsymbol x_2&\boldsymbol x_3\end{bmatrix}=\begin{bmatrix}\boldsymbol e_1&\boldsymbol e_2&\boldsymbol e_3\end{bmatrix}=I\kern 18pt(2.5.7)A−1的三列AA−1=A[x1x2x3]=[e1e2e3]=I(2.5.7)
要得到 AAA 的逆矩阵,我们需要求解三个方程:Ax1=e1=(1,0,0)、Ax2=e2=(0,1,0)、Ax3=e3=(0,0,1)A\boldsymbol x_1=\boldsymbol e_1=(1,0,0) 、A\boldsymbol x_2=\boldsymbol e_2=(0,1,0)、A\boldsymbol x_3=\boldsymbol e_3=(0,0,1)Ax1=e1=(1,0,0)、Ax2=e2=(0,1,0)、Ax3=e3=(0,0,1)。高斯 - 若尔当消元法就是用这个方法求逆矩阵 A−1A^{-1}A−1。
高斯 - 若尔当消元法是通过同时求解 nnn 个方程来计算 A−1A^{-1}A−1。一般来说增广矩阵 [Ab]\begin{bmatrix}A&\boldsymbol b\end{bmatrix}[Ab] 会多一列 b\boldsymbol bb。当 AAA 是 3×33\times33×3 的矩阵时,会在右侧多 333 列 e1,e2,e3\boldsymbol e_1,\boldsymbol e_2,\boldsymbol e_3e1,e2,e3,它们是 III 的列,因此增广矩阵就是分块矩阵 [AI]\begin{bmatrix}A&I\end{bmatrix}[AI]。下面以矩阵 KKK 为例,它的对角线元素都是 222,222 旁边全是 −1-1−1,其它元素均为 000:[Ke1e2e3]=[2−10100−12−10100−12001]开始对K进行高斯−若尔当消元→[2−10100032−112100−12001](12row1+row2)→[2−10100032−11210004313231](23row2+row3)\begin{bmatrix}K&\boldsymbol e_1&\boldsymbol e_2&\boldsymbol e_3\end{bmatrix}=\begin{bmatrix}\kern 7pt\pmb 2&\pmb{-1}&\kern 7pt\pmb0&1&0&0\\\pmb{-1}&\kern 7pt\pmb2&\pmb{-1}&0&1&0\\\kern 7pt\pmb0&\pmb{-1}&\kern 7pt\pmb2&0&0&1\end{bmatrix}\kern 10pt开始对K进行高斯-若尔当消元\\\kern 13pt\rightarrow\begin{bmatrix}2&-1&\kern 7pt0&1&0&0\\\pmb0&\kern 7pt\displaystyle\pmb{\frac{3}{2}}&\pmb{-1}&\displaystyle\pmb{\frac{1}{2}}&\pmb1&\pmb0\\0&-1&\kern 7pt2&0&0&1\end{bmatrix}\kern 10pt(\frac{1}{2}row1+row2)\\\kern 19pt\rightarrow\begin{bmatrix}2&-1&\kern 7pt0&1&0&0\\0&\kern 7pt\displaystyle\frac{3}{2}&-1&\displaystyle\frac{1}{2}&1&0\\[1.ex]\pmb0&\kern 7pt\pmb0&\kern 7pt\displaystyle\pmb{\frac{4}{3}}&\displaystyle\pmb{\frac{1}{3}}&\displaystyle\pmb{\frac{2}{3}}&\pmb1\end{bmatrix}\kern 10pt(\frac{2}{3}row2+row3)[Ke1e2e3]=2−10−12−10−12100010001开始对K进行高斯−若尔当消元→200−123−10−121210010001(21row1+row2)→200−12300−134121310132001(32row2+row3)到这一步只完成了求 K−1K^{-1}K−1 的一半,矩阵的前 333 列是 UUU(上三角),主元 2,32,432,\displaystyle\frac{3}{2},\frac{4}{3}2,23,34 在对角线上。高斯在这里会利用回代,而若尔当会继续执行消元!他会一直进行到简化阶梯形式 R=IR=IR=I。通过下面的行继续进行消元,使得主元上方都是零。(第三主元上都为零)→[2−101000320343234004313231](34row3+row2)(第三主元上都为零)\rightarrow\begin{bmatrix}2&-1&0&1&0&0\\[1.ex]\pmb0&\kern 7pt\displaystyle\pmb{\frac{3}{2}}&\pmb0&\displaystyle\pmb{\frac{3}{4}}&\displaystyle\pmb{\frac{3}{2}}&\displaystyle\pmb{\frac{3}{4}}\\[2.ex]0&\kern 7pt0&\displaystyle\frac{4}{3}&\displaystyle\frac{1}{3}&\displaystyle\frac{2}{3}&1\end{bmatrix}\kern 10pt(\frac{3}{4}row3+row2)(第三主元上都为零)→200−1230003414331023320431(43row3+row2)(第二主元上都为零)→[200321120320343234004313231](23row2+row1)(第二主元上都为零)\rightarrow\begin{bmatrix}\pmb2&\pmb0&\pmb0&\displaystyle\pmb{\frac{3}{2}}&\pmb1&\displaystyle\pmb{\frac{1}{2}}\\[1.5ex]0&\displaystyle\frac{3}{2}&0&\displaystyle\frac{3}{4}&\displaystyle\frac{3}{2}&\displaystyle\frac{3}{4}\\[1.5ex]0&0&\displaystyle\frac{4}{3}&\displaystyle\frac{1}{3}&\displaystyle\frac{2}{3}&1\end{bmatrix}\kern 10pt(\frac{2}{3}row2+row1)(第二主元上都为零)→200023000342343311233221431(32row2+row1)高斯 - 若尔当的最后一步是将每行除以改行的主元,使新的主元全部为 111。
因为 KKK 是可逆的,所以矩阵 [IK−1]\begin{bmatrix}I&K^{-1}\end{bmatrix}[IK−1] 的左半部分是 III,右半部分就是 K−1K^{-1}K−1:(除以 2)(除以32)(除以43)[10034121401012112001141234]=[Ix1x2x3]=[IK−1]\begin{matrix}(除以\,2)\\[1.5ex](除以\displaystyle\frac{3}{2})\\[1.5ex](除以\displaystyle\frac{4}{3})\end{matrix}\kern 8pt\begin{bmatrix}\pmb1&0&0&\displaystyle\pmb{\frac{3}{4}}&\displaystyle\pmb{\frac{1}{2}}&\displaystyle\pmb{\frac{1}{4}}\\[1.5ex]0&\pmb1&0&\displaystyle\pmb{\frac{1}{2}}&\pmb1&\displaystyle\pmb{\frac{1}{2}}\\[1.5ex]0&0&\pmb1&\displaystyle\pmb{\frac{1}{4}}&\displaystyle\pmb{\frac{1}{2}}&\displaystyle\pmb{\frac{3}{4}}\end{bmatrix}=\begin{bmatrix}I&\boldsymbol x_1&\boldsymbol x_2&\boldsymbol x_3\end{bmatrix}=\begin{bmatrix}I&K^{-1}\end{bmatrix}(除以2)(除以23)(除以34)10001000143214121121412143=[Ix1x2x3]=[IK−1]从 3×63\times63×6 的矩阵 [KI]\begin{bmatrix}K&I\end{bmatrix}[KI] 开始,以 [IK−1]\begin{bmatrix}I&K^{-1}\end{bmatrix}[IK−1] 结束。对于任意的可逆矩阵 AAA,应用高斯 - 若尔当消元法:
Gauss-JordanA−1乘[AI]得到[IA−1]\textrm{Gauss-Jordan}\kern15ptA^{-1}乘\begin{bmatrix}A&I\end{bmatrix}得到\begin{bmatrix}I&A^{-1}\end{bmatrix}Gauss-JordanA−1乘[AI]得到[IA−1]
消元步骤在将 AAA 变为 III 过程中会得到逆矩阵。对于大型矩阵,我们可能并不想要 A−1A^{-1}A−1,但是对于小型矩阵,得到逆矩阵可能会很重要。下面是关于 K−1K^{-1}K−1 的三条观察结果:
- KKK 是关于主对角线对称,K−1K^{-1}K−1 也是对称的。
- KKK 是三对角(tridiagonal)矩阵(只有 333 个非零对角线),但是 K−1K^{-1}K−1 是一个没有 000 的稠密(dense)矩阵。这也是另一个不常计算逆矩阵的原因。带状(band)矩阵通常都是稠密矩阵。
- 主元的乘积是 2(32)(43)=42(\displaystyle\frac{3}{2})(\frac{4}{3})=42(23)(34)=4。444 就是 KKK 的行列式。 K−1与K的行列式做除数有关K−1=14[321242123](2.5.8)K^{-1}与K的行列式做除数有关\kern 15ptK^{-1}=\frac{1}{4}\begin{bmatrix}3&2&1\\2&4&2\\1&2&3\end{bmatrix}\kern 14pt(2.5.8)K−1与K的行列式做除数有关K−1=41321242123(2.5.8)这就是可逆矩阵的行列式不为零的原因:因为要除以行列式。
【例4】使用高斯 - 若尔当消元法求 A−1A^{-1}A−1,A=[2347]A=\begin{bmatrix}2&3\\4&7\end{bmatrix}A=[2437]。
解:[AI]=[23104701]→[231001−21](这是[UL−1])\begin{bmatrix}A&I\end{bmatrix}=\begin{bmatrix}\pmb2&\pmb3&1&0\\\pmb4&\pmb7&0&1\end{bmatrix}\rightarrow\begin{bmatrix}2&3&\kern 7pt1&0\\\pmb0&\pmb1&\pmb{-2}&\pmb1\end{bmatrix}\kern 38pt(这是\begin{bmatrix}U&L^{-1}\end{bmatrix})[AI]=[24371001]→[20311−201](这是[UL−1])→[207−301−21]→[1072−3201−21](这是[IA−1])\kern 32pt\rightarrow\begin{bmatrix}\pmb2&\pmb0&\kern 7pt\pmb7&\pmb{-3}\\0&1&-2&1\end{bmatrix}\rightarrow\begin{bmatrix}1&0&\kern 7pt\displaystyle\pmb{\frac{7}{2}}&\displaystyle\pmb{-\frac{3}{2}}\\0&1&\pmb{-2}&\kern 7pt\pmb1\end{bmatrix}\kern 10pt(这是\begin{bmatrix}I&A^{-1}\end{bmatrix})→[20017−2−31]→[100127−2−231](这是[IA−1])【例5】如果 AAA 是可逆的上三角矩阵,那么 A−1A^{-1}A−1 也是。从 AA−1=IAA^{-1}=IAA−1=I 开始。
- AAA 乘 A−1A^{-1}A−1 的第 jjj 列等于 III 的第 jjj 列,该列后面有 n−jn-jn−j 个零。
- 使用回代可以得到 A−1A^{-1}A−1 的第 jjj 列后面有 n−jn-jn−j 个零。
- 将这些列 [∗⋯∗⋯∗]T\begin{bmatrix}*\cdots*\cdots*\end{bmatrix}^T[∗⋯∗⋯∗]T 都放进 A−1A^{-1}A−1 中,就可得到 A−1A^{-1}A−1 是也是一个上三角矩阵。
A−1=[1−1001−1001]−1=[111011001]列 j=1 和 2 后面有3−j=2 和 1个 0A^{-1}=\begin{bmatrix}1&-1&\kern 7pt0\\\pmb0&\kern 7pt1&-1\\\pmb0&\kern 7pt\pmb0&\kern 7pt1\end{bmatrix}^{-1}=\begin{bmatrix}1&1&1\\\pmb0&1&1\\\pmb0&\pmb0&1\end{bmatrix}\kern 5pt\begin{matrix}列\,j=1\,和\,2\,后面有\\3-j=2\,和\,1个\,0\end{matrix}A−1=100−1100−11−1=100110111列j=1和2后面有3−j=2和1个0在 MATLAB 中使用 X = inv(A) 求 AAA 的逆矩阵,该函数是利用 rref(reduced row echelon form)将矩阵简化为行阶梯形式
I = eye(n); % 定义 n×n 的单位矩阵
R = rref([A I]); % 对增广矩阵 [A I] 执行消元法
X = R(:, n+1:n+n); % 取出 R 后面的 n 列 X 就是 A 的逆矩阵
这里的 AAA 必须可逆,否则消元法不能将 AAA 变成 III(RRR 的左半部分)。
从高斯 - 若尔当消元法可以看出,要计算一个 A−1A^{-1}A−1 需要大量的计算,若有 nnn 列,则需要 nnn 个方程,但是每个方程都有左侧的 AAA 相关(这是工作量最大的地方),A−1A^{-1}A−1 整体需要 n3n^3n3 次乘法和减法,求解一个 Ax=bA\boldsymbol x=\boldsymbol bAx=b 需要 n3/3n^3/3n3/3 次乘法和加法。
不用 A−1A^{-1}A−1 去求解 Ax=bA\boldsymbol x=\boldsymbol bAx=b,我们用一个列 b\boldsymbol bb 去求一个列 x\boldsymbol xx。
四、奇异与可逆的对比
什么样的矩阵可逆?若 AAA 存在一整组主元(允许行交换),则 A−1A^{-1}A−1 存在。 我们可以使用高斯 - 若尔当消元法来证明:
- 有 nnn 个主元时,消元法求解所有的方程 Axi=eiA\boldsymbol x_i=\boldsymbol e_iAxi=ei,列 xi\boldsymbol x_ixi 进入 A−1A^{-1}A−1,则 AA−1=IAA^{-1}=IAA−1=I 并且 A−1A^{-1}A−1 至少是右逆矩阵。
- 消元法是用一系列矩阵 E′sE'sE′s,P′sP'sP′s 和 D−1D^{-1}D−1 的乘法:左逆矩阵 CCA=(D−1⋯E⋯P⋯E)A=I(2.5.9)左逆矩阵\,C\kern 15ptCA=(D^{-1}\cdots E\cdots P\cdots E)A=I\kern 10pt(2.5.9)左逆矩阵CCA=(D−1⋯E⋯P⋯E)A=I(2.5.9)
D−1D^{-1}D−1 是除以主元,矩阵 EEE 使得主元上方和下方的元素变为 000,PPP 是在需要时进行行交换。式(9)中这些矩阵的乘积就是 AAA 的左逆矩阵。使用 nnn 个主元得到 A−1A=IA^{-1}A=IA−1A=I。
由 Note2 知:左逆矩阵等于右逆矩阵,所以有一整组主元的方阵两边都存在逆矩阵,且相等。
下面证明若 AC=IAC=IAC=I,则 AAA 一定有 nnn 个主元。
- 如果 AAA 没有 nnn 个主元,则消元法会得到一个零行。
- 这些消元步骤可以用可逆矩阵 MMM 实现,所以 MAMAMA 也有一个零行。
- 因为 AC=IAC=IAC=I,所以 MAC=MMAC=MMAC=M,MAMAMA 的零行乘 CCC 也会得到一个零行。
- 可逆矩阵 MMM 不可能存在零行!所以若 AC=IAC=IAC=I,则 AAA 一定有 nnn 个主元。CCC 就是 A−1A^{-1}A−1。
消元法提供了方阵可逆的完整测试。当 AAA 有 nnn 个主元时,A−1A^{-1}A−1 一定存在(可通过高斯 - 若尔当消元法找到):
如果 AC=I,则 CA=I 且 C=A−1(2.5.10)如果\, AC=I,则\,CA=I\,且\,C=A^{-1}\kern 15pt(2.5.10)如果AC=I,则CA=I且C=A−1(2.5.10)
【例6】如果 LLL 是下三角矩阵且对角线元素都是 111,则 L−1L^{-1}L−1 也是。
使用高斯 - 若尔当消元法从 E32,E31,E21E_{32},E_{31},E_{21}E32,E31,E21 创建 L−1L^{-1}L−1。[100100310010451001]=[LI]→[100100010−310051−401]逆矩阵仍是三角形→[100100010−31000111−51]=[IL−1]\kern 50pt\begin{bmatrix}\pmb1&\pmb0&\pmb0&1&0&0\\\pmb3&\pmb1&\pmb0&0&1&0\\\pmb4&\pmb5&\pmb1&0&0&1\end{bmatrix}=\begin{bmatrix}L&I\end{bmatrix}\\\rightarrow\begin{bmatrix}1&0&0&\kern 7pt1&0&0\\0&1&0&-3&1&0\\0&5&1&-4&0&1\end{bmatrix}\\\begin{matrix}逆矩阵\\仍是三角形\end{matrix}\kern 10pt\rightarrow\begin{bmatrix}1&0&0&\kern 7pt\pmb1&\kern 7pt\pmb0&\pmb0\\0&1&0&\pmb{-3}&\kern 7pt\pmb1&\pmb0\\0&0&1&\kern 4pt\pmb{11}&\pmb{-5}&\pmb1\end{bmatrix}=\begin{bmatrix}I&L^{-1}\end{bmatrix}134015001100010001=[LI]→1000150011−3−4010001逆矩阵仍是三角形→1000100011−31101−5001=[IL−1]
五、分辨逆矩阵
正常情况下,若要判断一个矩阵是否可逆,需要做很多工作。通常是使用消元法去找它是否存在一整组的非零主元。但是有些矩阵可以很快速的判断出它是否可逆,例如它是一个严格对角线优势(diagonally dominant)矩阵。
严格对角线优势矩阵是可逆的。这种矩阵的对角线元素 aiia_{ii}aii 的绝对值比该行其它所有元素绝对值的和还要大,对于每一行都有:∣aii∣>∑j≠i∣aij∣,即 ∣aii∣=∣ai1∣+⋯+(跳过∣aii∣)+⋯∣ain∣(2.5.11)|a_{ii}|>\sum_{j\neq i}|a_{ij}|,即\,|a_{ii}|=|a_{i1}|+\cdots+(跳过|a_{ii}|)+\cdots |a_{in}|\kern 10pt(2.5.11)∣aii∣>j=i∑∣aij∣,即∣aii∣=∣ai1∣+⋯+(跳过∣aii∣)+⋯∣ain∣(2.5.11)下面三个矩阵 AAA 是严格对角线优势矩阵 (3>2)(3>2)(3>2),BBB 不是(但仍然可逆),CCC 是奇异矩阵。A=[311131113],B=[211121113],C=[111111113]A=\begin{bmatrix}3&1&1\\1&3&1\\1&1&3\end{bmatrix},\kern 10ptB=\begin{bmatrix}2&1&1\\1&2&1\\1&1&3\end{bmatrix},\kern 10ptC=\begin{bmatrix}1&1&1\\1&1&1\\1&1&3\end{bmatrix}A=311131113,B=211121113,C=111111113原因: 对于任意的非零向量 x\boldsymbol xx,假设它最大的分量是 ∣xi∣|x_i|∣xi∣。那么不可能有 Ax=0A\boldsymbol x=\boldsymbol 0Ax=0。此时选择 AAA 的行 iii,则若要 AxA\boldsymbol xAx 的行 iii 为 000,则有:ai1x1+⋯aiixi+⋯+ainxn=0a_{i1}x_1+\cdots a_{ii}x_i+\cdots+a_{in}x_n=0ai1x1+⋯aiixi+⋯+ainxn=0而上述不可能为零。因为 ∣aiixi∣|a_{ii}x_i|∣aiixi∣ 比其他所有的和还要大。所有的∣xj∣<∣xi∣∑j≠i∣aijxj∣≤∑j≠i∣aij∣∣xj∣<∣aii∣∣xi∣因为aii占优势所有的|x_j|<|x_i|\kern 10pt\sum_{j\neq i}|a_{ij}x_j|\leq\sum_{j\neq i}|a_{ij}||x_j|<|a_{ii}||x_i|\kern 10pt因为a_{ii}占优势所有的∣xj∣<∣xi∣j=i∑∣aijxj∣≤j=i∑∣aij∣∣xj∣<∣aii∣∣xi∣因为aii占优势因此只有当 x=0\boldsymbol x=\boldsymbol 0x=0 时 Ax=0A\boldsymbol x=\boldsymbol 0Ax=0 才成立,所有 AAA 可逆。需要注意的是,若不是对角线优势矩阵也不一定不可逆,例如 BBB 不是对角线优势矩阵,它仍然可逆。
六、主要内容总结
- 逆矩阵有 AA−1=IAA^{-1}=IAA−1=I 且 A−1A=IA^{-1}A=IA−1A=I。
- AAA 可逆当且仅当它有 nnn 个主元(允许行交换)。
- (重要)。如果存在非零向量 x\boldsymbol xx 使得 Ax=0A\boldsymbol x=\boldsymbol 0Ax=0,则 AAA 不可逆。
- ABABAB 的逆矩阵是反序乘积 B−1A−1B^{-1}A^{-1}B−1A−1,(ABC)−1=C−1B−1A−1(ABC)^{-1}=C^{-1}B^{-1}A^{-1}(ABC)−1=C−1B−1A−1。
- 高斯 - 若尔当消元法求解 AA−1=IAA^{-1}=IAA−1=I 可以得到 A−1A^{-1}A−1 的 nnn 个列。增广矩阵 [AI]\begin{bmatrix}A&I\end{bmatrix}[AI] 使用行简化得到 [IA−1]\begin{bmatrix}I&A^{-1}\end{bmatrix}[IA−1]。
- 严格对角线优势矩阵是可逆的。每个 ∣aii∣|a_{ii}|∣aii∣ 在它所在的行站主导地位。
七、例题
【例7】三角形差分矩阵 AAA 的逆矩阵是三角形求和矩阵 SSS:[AI]=[100100−1100100−11001]→[1001000101100−11001]→[100100010110001111]=[IA−1]=[I求和矩阵]\begin{bmatrix}A&I\end{bmatrix}=\left[\begin{array}{ccc|c}\kern 7pt1&\kern 7pt0&0&1&0&0\\-1&\kern 7pt1&0&0&1&0\\\kern 7pt0&-1&1&0&0&1\end{array}\right]\rightarrow\left[\begin{array}{ccc|c}1&\kern 7pt0&0&1&0&0\\0&\kern 7pt1&0&1&1&0\\0&-1&1&0&0&1\end{array}\right]\kern 18pt\\\rightarrow\left[\begin{array}{ccc|c}1&0&0&1&0&0\\0&1&0&1&1&0\\0&0&1&1&1&1\end{array}\right]=\begin{bmatrix}I&A^{-1}\end{bmatrix}=\begin{bmatrix}I&求和矩阵\end{bmatrix}[AI]=1−1001−1001100010001→10001−1001110010001→100010001111011001=[IA−1]=[I求和矩阵]如果将 a13a_{13}a13 改为 −1-1−1,则 AAA 所有的行加起来都是 000,方程 Ax=0A\boldsymbol x=\boldsymbol 0Ax=0 将会存在非零解 (1,1,1)(1,1,1)(1,1,1),所以新的矩阵 AAA 将不可逆。
【例8】下列矩阵有 333 个可逆,333 个不可逆。如果可逆,找出其逆矩阵,若不可逆,说明原因(零行列式,主元太少,Ax=0A\boldsymbol x=\boldsymbol 0Ax=0 有非零解)。下列矩阵按顺序为 A,B,C,D,S,EA,B,C,D,S,EA,B,C,D,S,E。
[4386][4387][6660][6666][100110111][111110111]\begin{bmatrix}4&3\\8&6\end{bmatrix}\kern 10pt\begin{bmatrix}4&3\\8&7\end{bmatrix}\kern 10pt\begin{bmatrix}6&6\\6&0\end{bmatrix}\kern 10pt\begin{bmatrix}6&6\\6&6\end{bmatrix}\kern 10pt\begin{bmatrix}1&0&0\\1&1&0\\1&1&1\end{bmatrix}\kern 10pt\begin{bmatrix}1&1&1\\1&1&0\\1&1&1\end{bmatrix}[4836][4837][6660][6666]111011001111111101
解: B−1=14[7−3−84]C−1=136[066−6]S−1=[100−1101−11]B^{-1}=\frac{1}{4}\begin{bmatrix}7&-3\\-8&4\end{bmatrix}\kern 10ptC^{-1}=\frac{1}{36}\begin{bmatrix}0&6\\6&-6\end{bmatrix}\kern 10ptS^{-1}=\begin{bmatrix}\kern 7pt1&\kern 7pt0&0\\-1&\kern 7pt1&0\\\kern 7pt1&-1&1\end{bmatrix}B−1=41[7−8−34]C−1=361[066−6]S−1=1−1101−1001AAA 不可逆,因为其行列式为 4⋅6−3⋅8=24−24=04\cdot6-3\cdot8=24-24=04⋅6−3⋅8=24−24=0。DDD 不可逆,因为它仅有一个主元;行 222 减去行 111 变成了零行。EEE 有两个相等的列,或者说 Ex=0E\boldsymbol x=\boldsymbol 0Ex=0 有非零解 (−1,1,0)(-1,1,0)(−1,1,0)。
不可逆的矩阵均可使用这三个原因。
【例9】使用高斯 - 若尔当消元法求三角帕斯卡(Pascal)矩阵。帕斯卡三角–每个元素加上其左侧元素等于它下面的元素。矩阵 LLL 的元素是二项式系数。下一行将会是 1,4,6,4,11,4,6,4,11,4,6,4,1。三角帕斯卡矩阵L=[1000110012101331]=abs(pascal(4,1))三角帕斯卡矩阵\kern 10ptL=\begin{bmatrix}\pmb1&0&0&0\\\pmb1&\pmb1&0&0\\\pmb1&\pmb2&\pmb1&0\\\pmb1&\pmb3&\pmb3&\pmb1\end{bmatrix}=\textrm{abs(pascal(4,1))}三角帕斯卡矩阵L=1111012300130001=abs(pascal(4,1))解: 高斯 - 若尔当消元法从 [LI]\begin{bmatrix}L&I\end{bmatrix}[LI] 开始,通过减去行 111 使得第一主元下方都为 000[LI]=[10001000110001001210001013310001]→[100010000100−11000210−10100331−1001]\begin{bmatrix}L&I\end{bmatrix}=\left[\begin{array}{cccc|}\pmb1&0&0&0&1&0&0&0\\\pmb1&\pmb1&0&0&0&1&0&0\\\pmb1&\pmb2&\pmb1&0&0&0&1&0\\\pmb1&\pmb3&\pmb3&\pmb1&0&0&0&1\end{array}\right]\rightarrow\left[\begin{array}{cccc|}1&0&0&0&\kern 7pt1&0&0&0\\\pmb0&1&0&0&\pmb{-1}&1&0&0\\\pmb0&2&1&0&\pmb{-1}&0&1&0\\\pmb0&3&3&1&\pmb{-1}&0&0&1\end{array}\right][LI]=11110123001300011000010000100001→10000123001300011−1−1−1010000100001下一步会使第二主元下方都变为 000,乘数是 222 和 333。然后使第三主元下方变为 000,乘数是 333→[100010000100−110000101−21000312−301]→[100010000100−110000101−2100001−13−31]=[IL−1]\rightarrow\left[\begin{array}{cccc|}1&0&0&0&\kern 7pt1&\kern 7pt0&0&0\\0&1&0&0&-1&\kern 7pt1&0&0\\0&\pmb0&1&0&\kern 7pt\pmb1&\pmb{-2}&1&0\\0&\pmb0&3&1&\kern 7pt\pmb2&\pmb{-3}&0&1\end{array}\right]\rightarrow\left[\begin{array}{cccc|}1&0&0&0&\kern 7pt\pmb1&\kern 7pt0&\kern 7pt0&0\\0&1&0&0&\pmb{-1}&\kern 7pt\pmb1&\kern 7pt0&0\\0&0&1&0&\kern 7pt\pmb1&\pmb{-2}&\kern 7pt\pmb1&0\\0&0&\pmb0&1&\pmb{-1}&\kern 7pt\pmb3&\pmb{-3}&\pmb1\end{array}\right]=\begin{bmatrix}I&L^{-1}\end{bmatrix}→10000100001300011−11201−2−300100001→10000100001000011−11−101−23001−30001=[IL−1]由于所有的主元都是 111,所有没有必要再让每行除以主元得到 III。逆矩阵 L−1L^{-1}L−1 和 LLL 很像,只是奇对角线处是负号。
同样可以扩展到 n×nn\times nn×n 的帕斯卡矩阵,L−1L^{-1}L−1 的对角线交替符号。
【例10】希尔伯特(Hibert)矩阵 Hij=1i+j−1H_{ij}=\displaystyle\frac{1}{i+j-1}Hij=i+j−11。使用 MATLAB 求准确的 6×66\times66×6 的逆矩阵 invhilb(6),然后计算 inv(hilb(6))。这两个结果为什么不同?
解:
invhilb(6) % 得到准确的 6×6 的希尔伯特逆矩阵
inv(hilb(6)) % 计算 hilb(6) 的逆矩阵
MATLAB 的运行结果如下图:
这两个结果不同是因为 hilb(6) 并不是准确的 Hilbert 矩阵,它的小数部分有四舍五入,所以 inv(hilb(6)) 也不是准确的逆矩阵。
【例11】(a)在 MATLAB 中用 inv( P ) 求 4×44\times44×4 的对称矩阵 P = pascal(4);
(b)创建帕斯卡下三角矩阵 L = abs(pascal(4,1)) 并验证 P=LLTP=LL^{T}P=LLT。
解:
P = pascal(4) % 创建一个 4×4 的帕斯卡矩阵 P
inv(P) % 求 P 的逆矩阵
L = abs(pascal(4,1)) % 创建 4×4 帕斯卡矩阵的下三角矩阵 L
L * L' % 计算 L * L'
运行结果如下:
由运行结果可知,P=LLTP = LL^TP=LLT。
【例12】在 MATLAB 中,如果 A = ones(4),b = rand(4,1),如何求解 Ax=bA\boldsymbol x = \boldsymbol bAx=b?如果 b=\boldsymbol b=b= ones(4,1) 呢?结果是什么?
解:
A = ones(4); % 创建 4×4 的全 1 矩阵
b = rand(4,1); % 生成 1 个 4×1 的随机向量,分量都在 0~1 之间
A\b % 求解 Ax = b
b = ones(4,1); % 生成 4×1 的全 1 向量
A\b % 求解 Ax = b
运行结果如下:
对于 A\b 来说,若 A 不可逆,无论 b\boldsymbol bb 为多少,即是否有解,均会出现上图所示的警告。