线性代数3-线性变换和矩阵
矩阵是一个二维数组,和向量包含的元素一样。 矩阵可以包含 m 行和 n 列。
如果矩阵包含 m 行和 n 列,则称之为 m x n 矩阵:
矩阵元素的下标从1开始。
要将一个矩阵与另一个矩阵相加,我们需要:
要将矩阵与标量相乘,我们不需要验证维度或指数。
将两个矩阵相乘时,我们需要考虑每个矩阵的维度,如果维度不能合理匹配,则无法相乘。最简单的乘法是两个具有相同维度 nxn 的 方形矩阵 相乘。
方形矩阵是行数和列数相同的矩阵。
下面是一个 mxm 方形矩阵。它有 m 行和 m 列。
A =
矩阵 A 可以与其他维度相同的矩阵 mxm 相乘。结果是一个维度相同的新方形矩阵。
注意在乘法结果中查找每个元素的规律。PxQ 中的每个元素 ij 是将矩阵 P 的行 i中的所有元素与矩阵 Q 的列 j 中的相应元素相乘的结果。
矩阵乘法不限于方形矩阵乘法。
这里的顺序很重要,因为矩阵乘法是不满足交换律的
如果 A 是一个 n × m 矩阵,B 是一个 m × p 矩阵,它们的矩阵积 AB 是一个 n × p 矩阵,其中 A 的行上的 m 个元素与 B 的列上的 m 个元素相乘,得出矩阵积 AB。如果用矩阵表示两个线性变换,则矩阵积表示两个变换的合成结果。
换句话说,如果 P 是一个维度为 t x m 的矩阵,Q 是一个维度为 m x v 的矩阵,那么:
一个矩阵倾斜了 。
A =
A T =
为了更好的说明线性变换,这里将问题简化,仅考虑2维数组。
我们可以将线性变换理解成为一个函数,输入变量是一个向量,线性变换对其进行处理,并将处理后的向量作为结果输出。这里用 变换 而不是 函数 ,是因为 变换 一词能更加直观的体现输入与输出的关系。这种变换,最好是用运动来理解,也就是说可以将变换的过程想象为输入向量 运动到 输出向量的过程。
如果将向量看作是一个个的箭头,那么可视化的结果将非常拥挤,一种简单明了的方式是将向量表示成点,每个点对应箭头所在的位置。由此,将任意可能的输入向量移动到相应的输出向量的变换过程,可以表示为空间中各点移动到另一个点所处位置的情景。在二维条件下,可以将将变换过程想象为各个点在无限网格上做运动:
--->
为了同时说明运动的起点和终点,我们将原始网格保存在背景里:
线性代数中涉及到的变换都很特殊,可以成为 线性 变换,即必须满足三个特点:
有时候,我们需要将向量输入计算机以便于演示和计算,但是该如何用数字表示向量呢。通常,只需要知道向量的 基向量 , 和 所在的位置就行了。例如,对于向量
,可以在网格内表示为:
现在,我们对这三个点(即向量)进行变换,并观察他们的落点,注意到这里变换后的网格满足前面的三个特性,变换后的向量依然是:
-1 * 变换后的 + 2 * 变换后的
也就是说,向量从一开始是 和 某种线性组合,变换后依然是变换后的 和 的相同线性组合。因此,只需知道变换后 和 的落点,就能推导出 会运动到哪里。
具体到我们的例子:
变换后落在[1,-2]处,而 落在了[3,0]处,因此原向量变换为 -1 * [1,-2] + 2 * [3,0],即变换后的 落在了[5,2]。
将上面的过程一般化,对于任意向量[x,y],对其进行相同线性变换后的落点都可以确定为:
x + y =
也就是说,任意一个二维线性变换都可以用4个数字描述,即向量 和 变换后的坐标。通常,我们将这两个变换之后的向量组合为一个矩阵。这里,这个矩阵就是:
进一步,得出适用于所有情况的公式:
= x + y =
极端情况下,当线性变换的两个基向量线性相关的时候,该线性变换会把整个二维空间压缩成这两个向量所在的那条直线,即这两个线性相关向量的一维张成空间。
上一节介绍了
方程 2
接下来,用python演示这一过程。
参考:
函数 matmul