理解矩阵
线性代数的矩阵可以看做一个系统,一个 input 被矩阵进行转换,从而产生出一个 output,就好像函数,线性代数研究的就是矩阵系统,矩阵是线性代数中的一等公民,就好像函数是函数式编程中的一等公民,因此需要从更高层面看矩阵,而非关注矩阵中的具体某个数字。
既然是把矩阵当成一个系统来研究,那就需要从最简单的矩阵研究起,也就是 Identity 矩阵(简称 $I$ ),这个矩阵的作用就是对 input 什么都不做,直接变成 output。 就好像函数中 Identity function ,f(x) = x
。
两个矩阵相乘 $AB$,从工程上的观点来讲,就是把 input 先输入到 $B$,出来的结果再输入到 $A$,从而得到最后的结果,就像函数式编程中的函数一样: $g \cdot f$ 。
所以矩阵中存在 逆矩阵( inverse ),也就是 $AB = I$ , 也就是 input 先进入 $B$,再进入 $A$,得到的结果还是 input。 在工程上,这个很有用,相当于输入被某个系统作用后,可以再被某个系统还原回来。工程上如果能通过研究一个系统 $A$,得到它的 逆系统 $B$,那就相当给力了,覆水不再难收,时光可以回流,比如可以用来做回滚,也就是如果发布了东西出现了问题,没关系,把这个结果再输入另外一个系统,就能还原。所以线性代数需要研究 invert 矩阵。
矩阵相乘满足结合律 $A(BC) = (AB)C$ 。满足分配率 $A(B+C) = AB + AC$。但不满足交换律 $ABC = CBA$ 。要知道交换律在工程上是很难的,如果某些操作满足交换律,就说明操作的顺序可以任意更改,没有因果关系,时序任意,随意并发。因此在工程上的操作能满足交换律是很难得的,但往往很难如工程师的愿,比如矩阵操作,就不满足交换律。
同时还可以进一步研究矩阵的一些线性相关性质。比如矩阵中的各个列( column ),是否是线性相关的,如果是线性相关的,说明矩阵中有些信息是冗余的,就好像在方程组中的,有些方程和另外一些方程的信息量是一样的。这样有存在列线性相关(dependent)的矩阵,称为 singular 。 相反,非线性相关(independent)的称为 nonsingular 矩阵。 我们会说 nonsingular 矩阵是『好矩阵』,因为矩阵中的每个列都是非线性相关的,没有冗余信息。
同时还有一些矩阵,比如 上三角矩阵(对角线下面的都是 0,0 组成了一个正三角,简称 U),下三角矩阵(对角线上面都是 0,0 组成了一个倒三角,简称 L)。
对于一个线性系统 $A$($A$ 是矩阵), 对于一个输入 $x$, 输出 $y$, 那么就可以表达成 $Ax = y$ 。 对于这样的一个系统 $A$, 我们可以研究它,通过高斯消去法,把 $A$ 分解成 $A = LU$ 的形式。相当于一个系统可以被分解成两个系统的连续作用, 这样就方便了工程上对系统的理解。类似于编程,把复杂的东西拆解成一个个模块,方便理解、推理和维护。