计算机图形学-矩阵运算

490 阅读8分钟

什么是矩阵

矩阵(Matrix)是一个数学概念,通常指的是一个由数字、符号或表达式排列成的矩形阵列。在数学中,矩阵是一个二维数组,可以表示为:

image.png

其中,𝑎𝑖𝑗 是矩阵中的元素,𝑚 是矩阵的行数,𝑛是矩阵的列数。如果矩阵的行数和列数相等,即 𝑚=𝑛,这样的矩阵称为方阵。

矩阵操作是线性代数中的基本运算,包括但不限于以下几种:

1.  矩阵加法(Matrix Addition):两个同型的矩阵对应元素相加。

2.  矩阵减法(Matrix Subtraction):两个同型的矩阵对应元素相减。

3.  矩阵乘法(Matrix Multiplication ):两个矩阵的乘积,第一个矩阵的行与第二个矩阵的列对应元素相乘后求和。

4.  矩阵转置(Matrix Transposition):矩阵的行和列互换,得到新矩阵。

5.  矩阵的逆( Inverse of a Matrix):对于方阵,如果存在一个矩阵B,使得 𝐴×𝐵=𝐼(I是单位矩阵),则B是A的逆矩阵。

6.  矩阵的行列式(Determinant of a Matrix):方阵的一个特殊值,可以提供关于矩阵的一些重要信息,如是否可逆。

7.  矩阵的特征值和特征向量(Matrix Addition):特征值是方阵 𝐴 的一个标量 𝜆,使得存在非零向量 𝑣满足 𝐴×𝑣=𝜆×𝑣。

8.  矩阵的迹(Trace of a Matrix):方阵主对角线上元素的和。

9.  矩阵的秩(Matrix Addition):矩阵中线性独立行或列的最大数目。

矩阵在数学、物理学、工程学、计算机科学等领域有着广泛的应用,如解决线性方程组、变换和投影、数据压缩等。

这篇文章中,我们只讲解在GeoToolkit中用到的矩阵运算:矩阵加法、矩阵减法、矩阵乘法、矩阵转置、矩阵的逆和矩阵的行列式。

矩阵的运算

矩阵加法(Matrix Addition)

矩阵的加法是指两个同型矩阵(即行数和列数相同的矩阵)对应元素相加的操作。结果矩阵的元素是两个原矩阵对应元素和的集合。以下是矩阵加法的详细解释和示例。

矩阵加法的定义:

设有两个同型的矩阵 𝐴 和 𝐵,它们的大小为 𝑚×𝑛,矩阵 𝐴 和 𝐵 的加法表示为 𝐶=𝐴+𝐵,其运算规则为:

𝐶𝑖𝑗=𝐴𝑖𝑗+𝐵𝑖𝑗

其中,𝐶𝑖𝑗 是结果矩阵 𝐶 中第 𝑖 行第 𝑗 列的元素,𝐴𝑖𝑗 和 𝐵𝑖𝑗 分别是矩阵 𝐴 和 𝐵 中第 𝑖 行第 𝑗 列的元素。

示例:

假设有两个 2x3 的矩阵 𝐴 和 𝐵:

image.png

矩阵 𝐴 加上矩阵 𝐵 的结果是:

image.png

在这个例子中,我们可以看到:

● 第一列的结果是 1+(−1)=0 和 4+2=6。

● 第二列的结果是 2+1=3 和 5−1=4。

● 第三列的结果是 3−1=2 和 6+1=7。

注意事项:

● 矩阵加法要求参与运算的矩阵必须是同型的,即它们必须具有相同的行数和列数。

● 矩阵加法满足交换律,即 𝐴+𝐵=𝐵+𝐴。

● 结果矩阵的类型与参与运算的矩阵相同。

矩阵减法(Matrix Subtraction)

矩阵的减法是指两个同型矩阵(即行数和列数相同的矩阵)对应元素相减的操作。结果矩阵的元素是两个原矩阵对应元素差值的集合。以下是矩阵减法的详细解释和示例。

矩阵减法的定义:

设有两个同型的矩阵 𝐴 和 𝐵,它们的大小为 𝑚×𝑛,矩阵 𝐴 和 𝐵 的减法表示为 𝐶=𝐴−𝐵,其运算规则为:

𝐶𝑖𝑗=𝐴𝑖𝑗−𝐵𝑖𝑗

其中,𝐶𝑖𝑗 是结果矩阵 𝐶 中第 𝑖 行第 𝑗 列的元素,𝐴𝑖𝑗 和 𝐵𝑖𝑗 分别是矩阵 𝐴 和 𝐵 中第 𝑖 行第 𝑗 列的元素。

示例:

假设有两个 2x3 的矩阵 𝐴 和 𝐵:

image.png

矩阵 𝐴A 减去矩阵 𝐵B 的结果是:

image.png

在这个例子中,我们可以看到:

● 第一列的结果是 1−(−1)=2 和 4−2=2。

● 第二列的结果是 2−1=1 和 5+1=6。

● 第三列的结果是 3−0=3 和 6−1=5。

注意事项:

● 矩阵减法要求参与运算的矩阵必须是同型的,即它们必须具有相同的行数和列数。

● 矩阵减法不满足交换律,即 𝐴−𝐵≠𝐵−𝐴。

● 结果矩阵的类型与参与运算的矩阵相同。

矩阵乘法(Matrix Multiplication )

矩阵乘法是一种特殊的运算,它不同于一般的加法和减法,其规则更为复杂。矩阵乘法要求第一个矩阵的列数与第二个矩阵的行数相同。以下是矩阵乘法的详细解释和示例。

矩阵乘法的定义:

设有两个矩阵 𝐴 和 𝐵,矩阵 𝐴 是 𝑚×𝑛 的矩阵,矩阵 𝐵 是 𝑛×𝑝 的矩阵。矩阵 𝐴 和 𝐵 的乘积 𝐶 是一个 𝑚×𝑝 的矩阵,表示为 𝐶=𝐴×𝐵,其中每个元素 𝐶𝑖𝑗 由以下公式给出:

image.png

或者更简洁地表示为:

image.png

示例:

假设有两个矩阵 𝐴 和 𝐵:

image.png

矩阵 𝐴A 是一个 2×2 矩阵,矩阵 𝐵 也是一个 2×2 矩阵,它们的乘积 𝐶 将是一个 2×2 矩阵。我们按照矩阵乘法的规则计算 𝐶:

image.png

在这个例子中,我们可以看到:

● 矩阵 𝐶C 的第一个元素 𝐶11 是由 𝐴 的第一行与 𝐵 的第一列对应元素相乘后求和得到的,即 2×5+4×6。

● 矩阵 𝐶C 的第二个元素 𝐶12 是由 𝐴 的第一行与 𝐵 的第二列对应元素相乘后求和得到的,即 2×7+4×8。

● 以此类推,计算出矩阵 𝐶C 的其他元素。

注意事项:

● 矩阵乘法不满足交换律,即 𝐴×𝐵≠𝐵×𝐴。

● 矩阵乘法满足结合律,即 (𝐴×𝐵)×𝐶=𝐴×(𝐵×𝐶)。

● 矩阵乘法的元素计算涉及到求和和乘法,需要严格按照定义进行。

矩阵转置(Matrix Transposition)

矩阵的转置是一个重要的线性代数概念,它涉及将矩阵的行和列互换。给定一个矩阵,其转置矩阵是通过将原始矩阵的第 𝑖行第 𝑗 列的元素变为转置矩阵的第 𝑗 行第 𝑖 列的元素得到的。

矩阵转置的定义:

设有一个矩阵 𝐴,其大小为 𝑚×𝑛(即有 𝑚 行和 𝑛 列),矩阵 𝐴 的转置,表示为 𝐴𝑇,是一个 𝑛×𝑚 的矩阵,定义为:

image.png

这意味着转置操作将矩阵 𝐴 的第 𝑖 行变成了 𝐴𝑇 的第 𝑗 列。

示例:

假设有一个 3x2 的矩阵 𝐴:

image.png

矩阵 𝐴 的转置 𝐴𝑇 将是一个 2x3 的矩阵,计算如下:

image.png

在这个例子中:

● 原始矩阵 𝐴A 的第一行 [1,2] 变成了转置矩阵 𝐴𝑇 的第一列。

● 原始矩阵 𝐴A 的第二行 [3,4] 变成了转置矩阵 𝐴𝑇 的第二列。

● 原始矩阵 𝐴A 的第三行 [5,6]变成了转置矩阵 𝐴𝑇 的第三列。

注意事项:

● 转置操作不会改变矩阵元素的值,只改变它们的位置。

● 对于方阵(行数和列数相等的矩阵),转置操作可以视为一个反射操作穿过矩阵的主对角线。

● 转置操作可以连续进行两次得到原始矩阵,即

image.png

● 转置操作对于矩阵的形状有直接影响:如果矩阵 𝐴 是 𝑚×𝑛,那么 𝐴𝑇 将是 𝑛×𝑚。

矩阵的行列式(Determinant of a Matrix)

矩阵的行列式是一个与方阵相关联的标量值,它包含了方阵的一些重要特性和度量。行列式可以提供关于矩阵可逆性、体积缩放因子、线性变换方向以及二次型等信息。

行列式的定义:

对于一个 𝑛×𝑛 的方阵 𝐴,行列式记作 det⁡(𝐴) 或 ∣𝐴∣。

对于 2x2 矩阵:

image.png

行列式计算公式为:

det⁡(𝐴)=𝑎𝑑−𝑏𝑐

对于 3x3 矩阵:

image.png

行列式的计算稍微复杂一些,公式为:

det⁡(𝐴)=𝑎(𝑒𝑖−𝑓ℎ)−𝑏(𝑑𝑖−𝑓𝑔)+𝑐(𝑑ℎ−𝑒𝑔)

对于更大的方阵,行列式的计算可以通过拉普拉斯展开(Laplace expansion)来完成,但通常涉及更复杂的计算,一般使用计算机来辅助计算。

示例:

1.  2x2 矩阵的行列式:

假设有一个 2x2 矩阵:

image.png

计算行列式:

det⁡(𝐴)=(4)(2)−(3)(6)=8−18=−10

  1. 3x3 矩阵的行列式:

假设有一个 3x3 矩阵:

image.png

计算行列式:

det⁡(𝐵)=1(1⋅0−4⋅6)−2(0⋅0−4⋅5)+3(1⋅6−1⋅5

det⁡(𝐵)=1(−24)−2(−20)+3(1)=−24+40+3=19

注意事项:

● 行列式只适用于方阵,对于非方阵不存在行列式。

● 行列式的值可以是正数、负数或零。如果行列式为零,则矩阵是奇异的,没有逆矩阵。

● 行列式的绝对值可以表示矩阵变换的体积缩放因子。如果行列式为正,变换保留了体积和定向;如果为负,变换反转了定向。

PS: 方阵:如果一个矩阵的行数与列数相同,即它是一个 𝑛×𝑛 的矩阵,其中 𝑛 是一个正整数,那么这个矩阵就被称为方阵。

矩阵的逆( Inverse of a Matrix)

矩阵的逆运算是线性代数中的一个重要概念,它允许我们解决某些类型的线性方程组,并进行各种变换的“撤销”。然而,并非所有矩阵都有逆矩阵。只有方阵(即行数和列数相等的矩阵)才可能有逆矩阵,而且只有当矩阵的行列式(determinant)不为零时,矩阵才是可逆的。

矩阵逆的定义:

设有一个 𝑛×𝑛 的方阵 𝐴A,如果存在另一个 𝑛×𝑛 的矩阵 𝐴−1,使得:

image.png

2x2 矩阵的逆:

对于一个 2x2 矩阵:

image.png

其逆矩阵 𝐴−1 可以通过以下公式求得,前提是 𝑎𝑑−𝑏𝑐≠0(即行列式不为零):

image.png

3x3 矩阵的逆:

对于一个 3x3 矩阵:

image.png

求逆涉及到计算行列式和伴随矩阵(adjugate matrix),其逆矩阵 𝐴−1 是:

image.png

其中 det⁡(𝐴) 是矩阵 𝐴 的行列式,adj(𝐴) 是 𝐴 的伴随矩阵,伴随矩阵中的每个元素都是原矩阵中对应元素的代数余子式(cofactor)的转置。