《3D图形的数学》第2章笔记 矩阵

在三维变换中,矩阵运算是最常用的表达方式。

1 矩阵的性质

一个 \(n \times m\) 的矩阵M就是一个有n行和m列的数组,如果 \(n = m\) 则矩阵M是方阵,把矩阵M第j列的第i行元素(或者第i行第j列)记作 \(M_{ij}\)。

矩阵M的转置,记作 \(\textbf{M}^{T}\),是一个\(m \times n\)矩阵,其中 \(M_{ij}^{T} = M_{ji}\)。

矩阵的数乘,或者叫标量乘积,和向量类似,是乘以矩阵的每个元素。

矩阵的加法,两个相同大小的矩阵,对应行列的元素相加。

矩阵的乘法,如果矩阵F的行数和矩阵G的列数相等,则矩阵F和G可以相乘,假设F是\(n \times m\)的矩阵,G是\(m \times p\)的矩阵,FG就是\(n \times p\)的矩阵,FG在(i, j)位置上的元素可以表示为:

$$ (\textbf{F}\textbf{G})_{ij} = \sum_{k=1}^{m}F_{ik}G_{kj} = \textbf{F}_{i*} \cdot \textbf{G}_{*j} \tag{2.5} $$

其实也可以看作是矩阵F的第i行和矩阵G的第j列元素之间的点积。

单位阵是\(n \times n\)的矩阵,记作\(\textbf{I}_{n}\),对于\(n \times n\)的矩阵M,有 \( \textbf{M} \textbf{I}_{n}\) = \(\textbf{I}_{n} \textbf{M}\) = \(\textbf{M}\)。

$$ \textbf{I}_{n} = \left[ \begin{matrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{matrix} \right] \tag{2.6} $$

因为单位阵尺寸由情况而定,所以通常把下标n去掉,记作 \(\textbf{I}\)。

【定理2.1】 矩阵有以下性质:

  • 矩阵加法满足交换律和结合律;
  • 系数加法乘矩阵、系数乘矩阵加法,均满足分配率;

【定理2.2】 还具有以下性质:

  • 系数乘矩阵先后不影响结果;
  • 矩阵连乘,先后不影响结果;
  • \((\textbf{F}\textbf{G})^{T}=\textbf{G}^{T}\textbf{F}^{T}\)。

2 线性方程组

矩阵提供了一种有效并且简便的线性方程组表示法,例如线性方程组:

$$ \begin{aligned} 3x + 2y - 3z &= 5 \\ 4x - 3y + 6z &= 1 \\ x - z &= 3 \end{aligned} \tag{2.10} $$

可以用以下矩阵形式表示:

$$ \left[ \begin{matrix} 3 & 2 & -3 \\ 4 & -3 & 6 \\ 1 & 0 & -1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \\ z \end{matrix} \right] = \left[ \begin{matrix} 5 \\ 1 \\ 3 \end{matrix} \right] \tag{2.11} $$

在未知向量<x,y,z>前面的矩阵叫做系数矩阵,在等号右边的列向量叫做常数向量。常数向量不为0的线性方程组叫做非齐次方程组,常数向量为0叫做齐次方程组

把系数矩阵和常数向量并置一起(称为增广矩阵),执行基本行变换,就可以得到线性方程组的解。

【定义2.3】 所谓基本行变换就是对一个矩阵执行以下三种变换之一:

  • 两行相互交换;
  • 一行和不为0的系数相乘;
  • 一行与一个不为0的系数乘后加到另一行上。

方程(2.11)为例,写出增广矩阵:

$$ \left[ \begin{array}{ccc|c} 3 & 2 & -3 & 5 \\ 4 & -3 & 6 & 1 \\ 1 & 0 & -1 & 3 \end{array} \right] \tag{2.12} $$

对线性方程组的增广矩阵进行的行变换不会影响线性方程组的解,只是使线性方程组更加容易计算(可以同步理解成,一般求方程组解的步骤,使用方程组互相带入化简,使得方程组最后较容易解出值)。

当用行变换求解一个线性方程组时,目标是把系数矩阵变换为它的最简形式

【定义2.4】 当且仅当一个矩阵满足一下条件,称为最简形式:

  • 每一个非0行,最左边的非0元素,即前导元素,必须为1;
  • 每一个非0行均在全0行前面,或者说,全0行在矩阵底部;
  • 如果一行前导元素在第j列,则其他行第j列的元素均为0;
  • 对任意两个非0行 \(i_{2}\) 和 \(i_{1}\),如果满足\(i_{2} > i_{1}\),并且相应的前导元素分别位于\(j_{2}\)和\(j_{1}\)列,则必然存在\(j_{2} > j_{1}\)。

或者简单来说,对于最简形式的矩阵,前导元素是向下向右的趋势的,并且,包含前导元素的列只有一个1,其他元素都为0。

一个最简形式矩阵例子:

$$ \left[ \begin{matrix} 1 & 0 & -3 & 0 \\ 0 & 1 & 2 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \end{matrix} \right] \tag{2.14} $$

【算法2.6】 把一个线性方程组的 \(n \times (n+1)\) 增广矩阵M变换为最简形式,以下每一步的M在逐渐更新,而不是保持原始状态:

  1. 下标i=1;
  2. 下标j=1,从第1列到第n列开始循环;
  3. 找到一个满足行号 \(k \geq i\),并且 \(\textbf{M}_{kj} \neq 0\) 的行,如果不存在,跳到步骤8;
  4. 如果 \(k \neq i\),交换第k行和第i行;
  5. 使矩阵M的元素(i, j)变为1:将第i行乘以 \(1 / \textbf{M}_{ij}\);
  6. 把第j列中除第i行之外的元素变为0:对于每一行r,\(1 \leq r \leq n\) 且 \(r \neq i\),将第i行乘 \(-\textbf{M}_{rj}\)加到第r行上;
  7. i加1;
  8. 如果\(j \leq n\),j加1,跳到步骤3。

简单来说,就是每次找到第j列上的前导元素在哪一行,然后把这一行放在对应的位置上,让前导元素变1,再清除第j列上的其它元素,直到再找不到有前导元素的行,算法停止。

对于化简到最简形式后,如何判断方程组解的情况,有以下规律:

  • 如果系数矩阵的最简形式是一个单位阵,方程组有唯一解
  • 如果有一行或多行全为0,方程组要么无解,要么有无穷多解;
  • 如果某一行系数矩阵为0而常数向量不为0,则方程组无解

3 逆矩阵

对一个\(n \times n\)的矩阵M而言,如果存在一个矩阵\(M^{-1}\),使得 \(\textbf{M}\textbf{M}^{-1}=\textbf{M}^{-1}\textbf{M}=\textbf{I}\),则称矩阵M是可逆的,矩阵\(M^{-1}\)叫做M的逆矩阵。

并不是每个矩阵都可逆,没有逆矩阵的矩阵叫做奇异矩阵,例如任何一行或一列为0的矩阵就是奇异矩阵。

【定理2.9】 有一行或一列全为0的矩阵是不可逆的。

【定理2.10】 一个矩阵M是可逆的,当且仅当\(M^{T}\)是可逆的。

证明:

假设M是可逆的,则\(M^{-1}\)存在,所以有:

$$ \textbf{M}^{T}(\textbf{M}^{-1})^{T} = (\textbf{M}^{-1}\textbf{M})^{T} = \textbf{I}^{T} = \textbf{I} \tag{2.29} $$

并且

$$ (\textbf{M}^{-1})^{T}\textbf{M}^{T} = (\textbf{M}\textbf{M}^{-1})^{T} = \textbf{I}^{T} = \textbf{I} \tag{2.30} $$

因此,\((\textbf{M}^{-1})^{T}\)是 \(\textbf{M}^{T}\)的逆矩阵。

类似,如果假设\(\textbf{M}^{T}\)是可逆的,则\((\textbf{M}{T})^{-1}\)存在:

$$ \textbf{M}[(\textbf{M}^{T})^{-1}]^{T} = [(\textbf{M}^{T})^{-1}\textbf{M}^{T})]^{T} = \textbf{I}^{T} = \textbf{I} \tag{2.31} $$

而且

$$ [(\textbf{M}^{T})^{-1}]^{T}\textbf{M} = [(\textbf{M}^{T}(\textbf{M}^{T})^{-1})]^{T} = \textbf{I}^{T} = \textbf{I} \tag{2.32} $$

因此,\([(\textbf{M}^{T})^{-1}]^{T}\)是M的逆矩阵。

【定理2.11】 如果F和G都是\(n \times n\)的可逆矩阵,那么FG也是可逆的,并且 \((\textbf{F}\textbf{G})^{-1}\) = \(\textbf{G}^{-1}\textbf{F}^{-1}\)。

求矩阵最简形式的方法(算法2.6)也可以用来计算矩阵逆矩阵,为了计算\(n \times n\)矩阵的逆矩阵,在矩阵的右边并接一个单位阵,以形成一个\(n \times 2n\)的矩阵。

$$ \left[ \begin{array}{cccc|cccc} M_{11} & M_{12} & \cdots & M_{1n} & 1 & 0 & \cdots & 0 \\ M_{21} & M_{22} & \cdots & M_{2n} & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots \\ M_{n1} & M_{n2} & \cdots & M_{nn} & 0 & 0 & \cdots & 1 \end{array} \right] \tag{2.34} $$

对整个矩阵执行基本行变换操作,直到其左边的\(n \times n\)矩阵变为单位阵,这时右边的\(n \times n\)部分就是M的逆矩阵,如果左边无法化为单位矩阵,则该矩阵不可逆。

【定理2.14】 假设(n \times n\)矩阵 \(M^{‘}\)是(n \times n\)矩阵M进行基本变换后得到的矩阵,则有 \(M^{‘}=EM\),其中E是对单位阵进行相同的基本变换的最终矩阵。

单位阵经过行变换后得到的矩阵称为初等矩阵,如果为了把矩阵M变为单位阵而必须经过k次基本行变换,那么:

$$ \textbf{I} = \textbf{E}_{k}\textbf{E}_{k-1} \cdots \textbf{E}_{1}\textbf{M} \tag{2.47} $$

其中矩阵 \(\textbf{E}_{1}, \textbf{E}_{2}, \cdots, \textbf{E}_{k}\)是单位阵对应的k次行变换的初等矩阵,也就是说,矩阵 \(\textbf{E}_{k}\textbf{E}_{k-1} \cdots \textbf{E}_{1}\)之间的积即为M的逆矩阵。

【定理2.15】 当且仅当矩阵M的行是一个线性无关向量集时,(n \times n\)矩阵M是可逆的。

4 行列式

方阵的行列式得到的是一个标量,矩阵M的行列式记作\(det \textbf{M}\),行列式使用垂直线取代矩阵两侧的括号。

$$ det \textbf{M} = \left| \begin{matrix} M_{11} & M_{12} & M_{13} \\ M_{21} & M_{22} & M_{23} \\ M_{31} & M_{32} & M_{33} \end{matrix} \right| \tag{2.50} $$

\(n \times n\)矩阵M的行列式的值由一个递推公式给出,用符号 \(M^{|i, j|}\)表示原始矩阵M中第i行和第j列删除后行程的 \((n-1) \times (n-1)\)矩阵,用这种方法,行列式值可用以下方法计算:

$$ det \textbf{M} = \sum_{i=1}^{n}(-1)^{i+k}M_{ik} det \textbf{M}^{|i,k|} \tag{2.53} $$
$$ det \textbf{M} = \sum_{i=1}^{n}(-1)^{k+j}M_{kj} det \textbf{M}^{|k,j|} \tag{2.54} $$

其中k是满足条件 \(1 \leq k \leq n\)的任意常数。

二阶矩阵的行列式公式:

$$ \left| \begin{matrix} a & b \\ c & d \end{matrix} \right| = ad - bc \tag{2.55} $$

三阶矩阵的行列式公式:

$$ \begin{aligned} \left| \begin{matrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{matrix} \right| = a_{11}det\textbf{M}^{|1,1|} - a_{12}det\textbf{M}^{|1,2|} + a_{13}det\textbf{M}^{|1,3|} \\ = a_{11}(a_{22}a_{33}-a_{23}a_{32}) - a_{12}(a_{21}a_{33}-a_{23}a_{31}) + a_{13}(a_{21}a_{32}-a_{22}a_{31}) \end{aligned} \tag{2.56} $$

【定理2.16】 执行基本变换对一个矩阵的行列式有以下性质:

  • 两行交换,行列式取反;
  • 矩阵一行乘比例系数a则行列式变为原来的a倍;
  • 把一行的若干倍加到另一行对行列式没有影响。

【推论2.17】 如果矩阵有相同行,则行列式为0。

【定理2.18】 \(n \times n\)矩阵M当且仅当 \(det \textbf{M} \neq 0\)时是可逆的。

【定理2.19】 对任意两个 \(n \times n\)的矩阵F和G,有 \(det\textbf{F}\textbf{G}=det\textbf{F}det\textbf{G}\)。

Tips:初等矩阵乘积的行列式等于行列式的乘积。

【定理2.20】 假设F是 \(n \times n\)矩阵,如果另一 \(n \times n\)矩阵G的元素为:

$$ G_{ij} = (-1)^{i + j} \frac{det \textbf{F}^{|j, i|}}{det \textbf{F}} \tag{2.62} $$

那么 \(\textbf{G}=\textbf{F}^{-1}\)。

通过定理2.20可以推出图形学中经常用的几个逆矩阵计算公式主要是2阶和3阶的。

2阶方阵逆矩阵公式:

$$ \textbf{A}^{-1} = \frac{1}{det \textbf{A}} \left[ \begin{matrix} A_{22} & -A_{12}\\ -A_{21} & A_{11} \end{matrix} \right] \tag{2.63} $$

3阶方阵逆矩阵公式:

$$ \textbf{B}^{-1} = \frac{1}{det \textbf{B}} \left[ \begin{matrix} B_{22}B_{33}-B_{23}B_{32} & B_{13}B_{32}-B_{12}B_{33} & B_{12}B_{23}-B_{13}B_{22} \\ B_{23}B_{31}-B_{21}B_{33} & B_{11}B_{33}-B_{13}B_{31} & B_{13}B_{21}-B_{11}B_{23} \\ B_{21}B_{32}-B_{22}B_{31} & B_{12}B_{31}-B_{11}B_{32} & B_{11}B_{22}-B_{12}B_{21} \end{matrix} \right] $$

5 特征值与特征向量

对于可逆方阵必然存在一个向量,当该向量与可逆方阵相乘时,向量只会发生大小变换而方向不变,即,对于n阶方阵M,存在着非0的n维向量 \(\textbf{V}_{1}, \textbf{V}_{2}, \cdots, \textbf{V}_{n}\)满足:

$$ \textbf{M}\textbf{V}_{i} = \lambda_{i}\textbf{V}_{i} \tag{2.65} $$

其中比例系数 \(\lambda_{i}\) 称为矩阵M的特征值,而向量 \(\textbf{V}_{i}\)是对应特征值的特征向量。

对式(2.65)进行变换可得到矩阵的特征值:

$$ (\textbf{M}-\lambda_{i}\textbf{I})\textbf{V}_{i} = \textbf{0} \tag{2.66} $$

对于非0向量 \(\textbf{V}_{i}\),如果上式成立,矩阵 \(\textbf{M}-\lambda_{i}\textbf{I}\)一定是奇异矩阵(不可逆),否则就可以对其求逆,得到:

$$ \textbf{V}_{i} = (\textbf{M}-\lambda_{i}\textbf{I})^{-1}\textbf{0} = \textbf{0} \tag{2.67} $$

这个非0向量矛盾,所以矩阵 \(\textbf{M}-\lambda_{i}\textbf{I}\)的行列式为0,因此可以通过:

$$ det(\textbf{M}-\lambda\textbf{I}) = 0 \tag{2.68} $$

计算出矩阵的特征值解,由2.68式得出的关于 \(\lambda\)的n阶多项式叫做矩阵M的特征多项式,多项式的根就是矩阵M的特征值。

一旦矩阵的特征值求得,就可以代入式(2.66),计算出相应的特征向量,因为矩阵 \(\textbf{M}-\lambda_{i}\textbf{I}\) 是奇异的,所以简化形式至少有一行全为0,所以有无穷多解(比如特征向量的系数倍数向量也是特征向量),因此特征向量可以表示成任意常数的形式,如果有必要也可以取特征向量的长度为1。

通常,如果矩阵特征值是复数,则相应的特征向量也含有复数元素;确保有实数特征值以及相应的实数特征向量的矩阵是对称矩阵

【定义2.23】 一个n阶方阵,当且仅当 对任意i和j均有 \(M_{ij}=M_{ji}\) 时是对称矩阵,也就是说如果矩阵元素关于主对角线对称,则该矩阵就成为对称矩阵

【定理2.24】 矩阵元素为实数的对称矩阵的特征值也是实数。

【定理2.25】 对应于对称矩阵M的不同特征值的特征向量正交的。

6 对角化

对角矩阵(对称矩阵的特例),只在主对角线上有非0元素的矩阵。

给定方阵M,如果能找到一个矩阵A使得 \(\textbf{A}^{-1}\textbf{M}\textbf{A}\) 是对角矩阵,那么就说矩阵A将矩阵M对角化了。

【定理2.26】 假设M是特征值为 \(\lambda_{1}, \lambda_{2}, \cdots, \lambda_{n}\)的n阶方阵,且与特征值对应的特征向量 \(\textbf{V}_{1}, \textbf{V}_{2}, \cdots, \textbf{V}_{n}\) 是一个线性无关集,则矩阵A:

$$ A = [ \textbf{V}_{1} \textbf{V}_{2} \cdots \textbf{V}_{n} ] \tag{2.82} $$

可以将矩阵M对角化,而且 \(\textbf{A}^{-1}\textbf{M}\textbf{A}\) 的主对角元素是矩阵M的特征值,即:

$$ \textbf{A}^{-1}\textbf{M}\textbf{A} = \left[ \begin{matrix} \lambda_{1} & 0 & \cdots & 0 \\ 0 & \lambda_{2} & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots\\ 0 & 0 & \cdots & \lambda_{n} \end{matrix} \right] \tag{2.83} $$

相反,如果存在一个可逆矩阵A使得 \(\textbf{A}^{-1}\textbf{M}\textbf{A}\) 是一个对角阵,则矩阵A的列必然是矩阵M的特征向量,而 \(\textbf{A}^{-1}\textbf{M}\textbf{A}\) 的对角线元素则是矩阵M的特征值。

《3D图形的数学》第2章笔记 矩阵

https://yumi-cn.github.io/2020/12/01/3dmath-c2/

作者

Yumiko

发布于

2020-12-01

更新于

2020-12-01

许可协议

评论