《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)位置上的元素可以表示为:
其实也可以看作是矩阵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}\)。
因为单位阵尺寸由情况而定,所以通常把下标n去掉,记作 \(\textbf{I}\)。
【定理2.1】 矩阵有以下性质:
- 矩阵加法满足交换律和结合律;
- 系数加法乘矩阵、系数乘矩阵加法,均满足分配率;
【定理2.2】 还具有以下性质:
- 系数乘矩阵先后不影响结果;
- 矩阵连乘,先后不影响结果;
- \((\textbf{F}\textbf{G})^{T}=\textbf{G}^{T}\textbf{F}^{T}\)。
2 线性方程组
矩阵提供了一种有效并且简便的线性方程组表示法,例如线性方程组:
可以用以下矩阵形式表示:
在未知向量<x,y,z>前面的矩阵叫做系数矩阵,在等号右边的列向量叫做常数向量。常数向量不为0的线性方程组叫做非齐次方程组,常数向量为0叫做齐次方程组。
把系数矩阵和常数向量并置一起(称为增广矩阵),执行基本行变换,就可以得到线性方程组的解。
【定义2.3】 所谓基本行变换就是对一个矩阵执行以下三种变换之一:
- 两行相互交换;
- 一行和不为0的系数相乘;
- 一行与一个不为0的系数乘后加到另一行上。
方程(2.11)为例,写出增广矩阵:
对线性方程组的增广矩阵进行的行变换不会影响线性方程组的解,只是使线性方程组更加容易计算(可以同步理解成,一般求方程组解的步骤,使用方程组互相带入化简,使得方程组最后较容易解出值)。
当用行变换求解一个线性方程组时,目标是把系数矩阵变换为它的最简形式。
【定义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。
一个最简形式矩阵例子:
【算法2.6】 把一个线性方程组的 \(n \times (n+1)\) 增广矩阵M变换为最简形式,以下每一步的M在逐渐更新,而不是保持原始状态:
- 下标i=1;
- 下标j=1,从第1列到第n列开始循环;
- 找到一个满足行号 \(k \geq i\),并且 \(\textbf{M}_{kj} \neq 0\) 的行,如果不存在,跳到步骤8;
- 如果 \(k \neq i\),交换第k行和第i行;
- 使矩阵M的元素(i, j)变为1:将第i行乘以 \(1 / \textbf{M}_{ij}\);
- 把第j列中除第i行之外的元素变为0:对于每一行r,\(1 \leq r \leq n\) 且 \(r \neq i\),将第i行乘 \(-\textbf{M}_{rj}\)加到第r行上;
- i加1;
- 如果\(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}^{-1})^{T}\)是 \(\textbf{M}^{T}\)的逆矩阵。
类似,如果假设\(\textbf{M}^{T}\)是可逆的,则\((\textbf{M}{T})^{-1}\)存在:
而且
因此,\([(\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\)的矩阵。
对整个矩阵执行基本行变换操作,直到其左边的\(n \times n\)矩阵变为单位阵,这时右边的\(n \times n\)部分就是M的逆矩阵,如果左边无法化为单位矩阵,则该矩阵不可逆。
【定理2.14】 假设(n \times n\)矩阵 \(M^{‘}\)是(n \times n\)矩阵M进行基本变换后得到的矩阵,则有 \(M^{‘}=EM\),其中E是对单位阵进行相同的基本变换的最终矩阵。
把单位阵经过行变换后得到的矩阵称为初等矩阵,如果为了把矩阵M变为单位阵而必须经过k次基本行变换,那么:
其中矩阵 \(\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}\),行列式使用垂直线取代矩阵两侧的括号。
\(n \times n\)矩阵M的行列式的值由一个递推公式给出,用符号 \(M^{|i, j|}\)表示原始矩阵M中第i行和第j列删除后行程的 \((n-1) \times (n-1)\)矩阵,用这种方法,行列式值可用以下方法计算:
其中k是满足条件 \(1 \leq k \leq n\)的任意常数。
二阶矩阵的行列式公式:
三阶矩阵的行列式公式:
【定理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的元素为:
那么 \(\textbf{G}=\textbf{F}^{-1}\)。
通过定理2.20可以推出图形学中经常用的几个逆矩阵计算公式主要是2阶和3阶的。
2阶方阵逆矩阵公式:
3阶方阵逆矩阵公式:
5 特征值与特征向量
对于可逆方阵,必然存在一个向量,当该向量与可逆方阵相乘时,向量只会发生大小变换而方向不变,即,对于n阶方阵M,存在着非0的n维向量 \(\textbf{V}_{1}, \textbf{V}_{2}, \cdots, \textbf{V}_{n}\)满足:
其中比例系数 \(\lambda_{i}\) 称为矩阵M的特征值,而向量 \(\textbf{V}_{i}\)是对应特征值的特征向量。
对式(2.65)进行变换可得到矩阵的特征值:
对于非0向量 \(\textbf{V}_{i}\),如果上式成立,矩阵 \(\textbf{M}-\lambda_{i}\textbf{I}\)一定是奇异矩阵(不可逆),否则就可以对其求逆,得到:
这个非0向量矛盾,所以矩阵 \(\textbf{M}-\lambda_{i}\textbf{I}\)的行列式为0,因此可以通过:
计算出矩阵的特征值解,由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:
可以将矩阵M对角化,而且 \(\textbf{A}^{-1}\textbf{M}\textbf{A}\) 的主对角元素是矩阵M的特征值,即:
相反,如果存在一个可逆矩阵A使得 \(\textbf{A}^{-1}\textbf{M}\textbf{A}\) 是一个对角阵,则矩阵A的列必然是矩阵M的特征向量,而 \(\textbf{A}^{-1}\textbf{M}\textbf{A}\) 的对角线元素则是矩阵M的特征值。
《3D图形的数学》第2章笔记 矩阵