2.7 逆矩阵
矩阵代数没定义除法运算,但是它定义了一种乘法的逆(inverse)运算。下面的列表总结了有关逆运算的要点:
1.只有正方形矩阵能做逆运算;所以,当我们说求逆矩阵时是假设我们正在处理的是一个正方形矩阵。
2.一个n×n矩阵M的逆矩阵仍然是一个n×n矩阵,记作M-1。
3.不是所有的正方形矩阵都有逆矩阵。有逆矩阵的正方形矩阵称为可逆(invertible)矩阵,没有逆矩阵的称为单调(singular)矩阵。
4.如果存在逆矩阵,则该逆矩阵是唯一的。
5.将一个矩阵与它的逆矩阵相乘,其结果必定为单位矩阵:MM-1=M-1M=I。注意,矩阵与它的逆矩阵的相乘次序可以互换,这是矩阵乘法中的一个特例。
逆矩阵在求解矩阵方程时非常有用。例如,我们给出矩阵方程pʹ=pM,已知pʹ和M的值,求解p。假设M是可逆矩阵(即,M-1存在),那么我们可以按照如下步骤求解:
pʹ=pM | |
pʹM-1=pMM-1 | 等式两边同时乘以M-1。 |
pʹM-1= pI | 由逆矩阵的定义可知M-1M=I。 |
pʹM-1=p | 由单位矩阵的定义可知pI=p。 |
下面的这个方程可以用来求逆矩阵,本书不会给出证明过程,但是读者可以在任何一本大学线性代数的书籍中找到证明过程,这个方程是用伴随矩阵和行列式的形式给出的:
\({{\bf{A}}^{ - 1}} = \frac{{{{\bf{A}}^*}}}{{\det {\bf{A}}}}\) (公式2.6)
例2.10
找到一个求2×2矩阵\({\bf{A}} = \left[ {\begin{array}{*{20}{c}}{{A_{11}}}&{{A_{12}}}\\{{A_{21}}}&{{A_{22}}}\end{array}} \right]\)的逆矩阵的通用公式,并使用这个公式求出\({\bf{M}} = \left[ {\begin{array}{*{20}{c}}3&0\\{ - 1}&2\end{array}} \right]\)的逆矩阵。我们已经知道:
\[\det {\bf{A}} = {A_{11}}{A_{22}} - {A_{12}}{A_{21}}\]
\[{{\bf{C}}_A} = \left[ {\begin{array}{*{20}{c}}{{{( - 1)}^{1 + 1}}\det {{\overline {\bf{A}} }_{11}}}&{{{( - 1)}^{1 + 2}}\det {{\overline {\bf{A}} }_{12}}}\\{{{( - 1)}^{2 + 1}}\det {{\overline {\bf{A}} }_{21}}}&{{{( - 1)}^{2 + 2}}\det {{\overline {\bf{A}} }_{22}}}\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}{{A_{22}}}&{ - {A_{21}}}\\{ - {A_{12}}}&{{A_{11}}}\end{array}} \right]\]
所以,
\[{{\bf{A}}^{ - 1}} = \frac{{{{\bf{A}}^*}}}{{\det {\bf{A}}}} = \frac{{{\bf{C}}_A^T}}{{\det {\bf{A}}}} = \frac{1}{{{A_{11}}{A_{22}} - {A_{12}}{A_{21}}}}\left[ {\begin{array}{*{20}{c}}{{A_{22}}}&{ - {A_{12}}}\\{ - {A_{21}}}&{{A_{11}}}\end{array}} \right]\]
现在用这个公式求\({\bf{M}} = \left[ {\begin{array}{*{20}{c}}3&0\\{ - 1}&2\end{array}} \right]\)的逆矩阵:
\[{{\bf{M}}^{ - 1}} = \frac{1}{{3 \cdot 2 - 0 \cdot ( - 1)}}\left[ {\begin{array}{*{20}{c}}2&0\\1&3\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}{1/3}&0\\{1/6}&{1/2}\end{array}} \right]\]
我们只需检验MM-1=M-1M=I就可以证明结果是否正确:
\[\left[ {\begin{array}{*{20}{c}}3&0\\{ - 1}&2\end{array}} \right]\left[ {\begin{array}{*{20}{c}}{1/3}&0\\{1/6}&{1/2}\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}1&0\\0&1\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}{1/3}&0\\{1/6}&{1/2}\end{array}} \right]\left[ {\begin{array}{*{20}{c}}3&0\\{ - 1}&2\end{array}} \right]\]
注意:对于小矩阵(4×4矩阵或更小)来说,使用伴随矩阵的方法更有效率。对于更大的矩阵来说,我们可以使用诸如高斯消元法(http://zh.wikipedia.org/wiki/%E9%AB%98%E6%96%AF%E6%B6%88%E5%8E%BB%E6%B3%95)之类的其他方法求逆矩阵。但是,在3D计算机图形中,我们要处理的矩阵具有特定的形式,因此可以事先确定求逆矩阵的方程,这样我们就无需浪费CPU资源去求一般矩阵的逆矩阵了。这样,在代码中我们往往很少用到公式2.6。
在本节结束之前,我们要介绍一个与逆矩阵相乘时非常有用的代数特性:
(AB)-1=B-1A-1
这个特性假设A和B都是可逆的,它们都是维数相同的正方形矩阵。要证明B-1A-1是AB的逆矩阵,我们只需要证明(AB)(B-1A-1)=I和(B-1A-1)(AB)=I。推导过程如下:
(AB)(B-1A-1)=A(BB-1)A-1=AIA-1=AA-1=I
(B-1A-1)(AB)=B-1(A-1A)B=B-1IB=B-1B=I
文件下载(已下载 657 次)发布时间:2014/9/23 下午8:36:56 阅读次数:4931