最近想看一看计算机图形学的知识,但是看到课程要求里面的前置知识有线性代数,就重新看了一些,目前是看了行列式,矩阵,向量和方程组的性质。
这篇博客主要目的不是挨个总结矩阵的性质,而是梳理我在复习过程中一直有的一个疑问,就是,这几个东西为什么会放在一起讲,他们之间有什么关系,并且稍微结合一下渲染原理中的一些理念,矩阵是如何应用到其中的。
行列式,矩阵,向量和方程组之间的关系的一些理解
- 行列式是一个值,他是一个数,是标量,而矩阵则是一个表格。
- 行列式的值可以看作是矩阵的一个特性,通过行列式的值的计算,可以判断一些矩阵的性质。
- 矩阵是一个m*n的表格,但是如果把每一列看成列向量,那么整个矩阵可以看作是一个行向量,或者是向量组。
- 矩阵和向量都可以是方程组的一种表达方式,通过将方程组转化为矩阵或者向量的表示方式,可以有很多性质帮助我们简化计算。
矩阵与渲染管线的关系
在游戏运行过程中,我们需要将模型中的点变为屏幕上的像素点,这期间涉及到将点的坐标从模型坐标系转化到世界坐标系,再转化到摄像机的坐标系中等等一系列转化,坐标空间的转化,其实就是坐标的转化,(x1, y1, z1)变成(x2, y2, z2),这个转化就是方程组三个三元一次方程组成的方程组。
也就是说,我们可以把坐标转换的方程组变成矩阵的相乘。
这样做的好处一个是矩阵表示起来更加方便,其次是我们有很多手段可以简化矩阵的相乘,同时有时候我们需要在模型空间之间相互转化,如果用方程组,我们就要重新计算出一个方程组,但是如果用矩阵,那么直接用逆矩阵就可以了,而如果你是正交矩阵,那么甚至可以直接用转置矩阵。
行列式,矩阵,向量,方程组一些特性以及之间的关系
行列式
行列式是一个数,它是不同行不同列元素乘积的代数和。
有一点需要注意的是,行列式的行数和列数是相同的,都为n,那么这个行列式就叫做n阶行列式。
对于三阶及以下的行列式,我们可以直接用对角线法求出行列式的值,对于三阶以上的行列式,我们就需要套用公式了
∣∣∣∣∣∣∣∣∣a11a21...an1a12a22...an2............a1na2n...ann∣∣∣∣∣∣∣∣∣=r=1∑n(−1)r(j1j2...jn)a1j1a2j2...anjn
其中r(j1j2..jn)
表示j1j2..jn
的逆序数(一个大的数在一个小的数前面,就称这两个数构成一个逆序,一个排列中的逆序总数就叫做这个排列的逆序数),逆序数为偶数的叫做偶排列,逆序数为奇数的叫做奇排列。
行列式的性质
- 经过转置行列式的值不变
- 两行(或两列)互换位置,行列式的值为0。
行列式值是否为0是一个很重要的性质,与方程组是否有解,向量组是否线性无关等问题紧密联系
- 某行或者某列有公因子k,可以把k提出行列式记号外,即用数k乘以行列式等于用k乘以它的某一行。
- 推论1:某行或者某列值为0,那么行列式值为0
- 推论2:两行(或两列)的元素对应成比例,行列式的值为0
- 某行或者某列可以是两个元素的和,那么可以拆成两个行列式相加
∣∣∣∣∣∣∣a1+b1c1d1a2+b2c2d2a3+b3c3d3∣∣∣∣∣∣∣=∣∣∣∣∣∣∣a1c1d1a2c2d2a3c3d3∣∣∣∣∣∣∣+∣∣∣∣∣∣∣b1c1d1b2c2d2b3c3d3∣∣∣∣∣∣∣
- 某行(或列)的k倍加到另一行(或列),行列式的值不变
∣∣∣∣∣∣∣a1b1c1a2b2c2a3b3c3∣∣∣∣∣∣∣=∣∣∣∣∣∣∣a1b1+ka1c1a2b2+ka2c2a3b3+ka3c3∣∣∣∣∣∣∣
行列式的按行(或列)展开公式 (拉普拉斯展开)
在n阶行列式中划去a_ij
所在的第i行和第j列所有的元素,剩下的n-1阶行列式,叫做a_ij
的余子式,记为M_ij
称(-1)^(i+j)M_ij
为a_ij
的代数余子式,记为A_ij
,即:
Aij=(−1)i+jMij
定理1:n阶行列式等于它的任何一行元素与其对应的代数余子式的乘积之和
∣∣∣A∣∣∣=ai1Ai1+ai2Ai2+...+aikAik=k=1∑naikAik,i=1,2,3,...,n
∣∣∣A∣∣∣=a1iA1i+a2iA2i+...+akiAki=k=1∑nakiAki,i=1,2,3,...,n
第一个成为行列式的按行展开式,第二个称为按列展开式。
定理2:行列式的任意一行与另一行的元素的代数余子式的和为0
k=1∑naikAjk=0,i=j
还有几种特殊情况:
上(下)三角行列式的值为对角线的乘积
副对角线的行列式的值则是
(−1)2n(n−1)a1na2,n−1...aan1
如果A和B分别是m和n阶矩阵,则
∣∣∣∣∣A0∗B∣∣∣∣∣=∣∣∣∣∣A∗0B∣∣∣∣∣=∣∣∣A∣∣∣∗∣∣∣B∣∣∣,∣∣∣∣∣∗BA0∣∣∣∣∣=∣∣∣∣∣0BA∗∣∣∣∣∣=(−1)mn∣∣∣A∣∣∣∗∣∣∣B∣∣∣
范德蒙行列式
∣∣∣∣∣∣∣∣∣∣∣1x1x12...x1n−11x2x22...x2n−1...............1xnxn2...xnn−1∣∣∣∣∣∣∣∣∣∣∣=1≤j≤i≤n∏(xi−xj)
克拉默法则
若n个方程n个未知量组成的非齐次线性方程组的系数行列式值不为0,那么方程组有唯一解,且
xi=∣∣∣A∣∣∣∣∣∣Ai∣∣∣,i=1,2,3,...,n
其中Ai是|A|中第i列元素替换成方程组右端常数项所构成的行列式
推论:n个方程n个未知量组成的齐次线性方程组,系数行列式|A| != 0的充要条件是方程组有唯一零解(因为方程组右端的常数全是0,所以|Ai|就是0,那么所有xi就是0)。
反之,如果有非零解,那么|A| = 0.
矩阵
向量
方程组