线性代数是数学中的一个非常重要科目, 需要研究线性空间, 线性变换和线性方程组. 至于应用就太广泛了, 图像处理, 压缩, 信号处理, 统计分析, 机器学习, 网页排序......
01 向量的概念
现实中工作中, 我们会把几个数值放在一起, 当做一个整体来分析, 这就有了向量(Vector) : 一种有序的数值列表.
为了把向量和点区分开, 惯用的方法是把这对数竖着写, 然后用括号括起来, 比如下面的示例为 2 维向量, 3 维向量和 4 维向量:
注: 或者用方括号来表示向量
决定一个向量是它的长度和方向, 我们可以通过坐标系来更好的理解它. 在二维坐标系下用箭头绘制出来, 且箭头的起点位于原点, 终点就是数值分量对应的点. 这样每一个向量就对应唯一对数, 而坐标系中的一对数也唯一对应一个向量.
只要向量的大小和方向相同, 即视为相等的向量, 如下图所示在二维平面(Two-dimensional)下, 随便移动一个向量, 所留下轨迹上都是相同的向量:
对于三维空间而言, 向量就会有x, y, z三个分量, 我们用 x,y,z 轴来表示出来, 这样每个向量也会与一个有序三元数组(x,y,z)对应:
▌向量的加法
向量加法就是把对应项相加:
从图形来看我们可以平移第二个向量, 使它的起点与第一个向量的重点重合, 然后画一个向量, 它从第一个向量的起点出发, 指向第二个向量的终点. 这个向量就是它们的和; 或者观察动画按照每个向量的分量进行运动最终效果是一样的:
▌向量的数乘
另一个基础的向量运算就是一个数值(标量Scalar)乘以向量的每个分量, 就是将向量中的每个分量与标量相乘. 如选择数值 2, 把它与一个给定向量相乘, 意味着你把这个向量拉长为原向量的 2 倍:
观察下图如果标量为负, 则结果向量反向. 也就是数乘向量其实是对向量的拉伸, 压缩或反向的操作:
向量的加法和数乘非常重要, 将会贯穿线性代数, 我们第一次的内容就到此为止, 不过下面再补充几张动图来加深加法的理解:
▌向量加法三角形法则
其实与上面加法示例相同, 不过这里的向量起点并非原点:
▌平行四边形法则
▌向量的减法
向量的减法其实就是加法的一种特殊情况:
02「基底 / 线性组合 / 线性无关(相关)」
▌基底
在二维线性空间中, 只要用两个特殊的向量就可以来用定位(表示)出任意向量:
空间中的任何向量都是可以通过缩放这两个向量再相加表示出来. 现在想象, 譬如向量 (3,2) 就是沿着 i 的方向拉伸 3 倍, 再沿着 j 方向 拉伸 2 倍的向量相加结果.
这样特殊的向量称之为基(Basis, 或基底), 任何二维向量都可以由这两个向量的线性组合表示出来, 其中 a, b 为标量.
观察下面动图显示, 当 a, b 两个标量自由变化, 通过向量加法与向量数乘这两种基础运算, 就能获得所有二维中可能的向量:
基底的选取有各种各样的方式, 但不同的选取 可能会有 3 种情况, 观察下面动图中选取 i 和 j 作为基底出现:
也可以线性表示出空间中任意的二维向量;
如果两个向量恰好共线时候, 所产生的向量的终点被限制在一条过原点的直线上;
两个向量都是零向量, 其组合向量是零向量.
所有由向量 i 和 j 线性组合而获得所有可能的向量集合, 称之为两个向量张成的空间(Span).
用上面的图形来说明: 对大部分二维向量来说, 两个向量所张成的空间是所有二维向量的集合, 可以称之为基底; 但当共线时, 张成的空间就是一条直线, 不能构成二维线性空间的基底.
▌三维空间的基底
再来看看三维空间中的两个方向不同的向量(蓝色和橘黄色)所张成的空间就是两者所有的线性组合, 其实就张成了一个过原点的平面 .
如果在加上第三个向量, 那么线性组合为下面的形式:
对三个基底向量分别进行缩放, 然后把结果相加, 而这三个向量所有可能的线性组合构成了他们张成的空间:
▌线性相关
考虑 三维中第三个向量已经落在前两个向量所张成的平面之中, 那么就可以被这两个向量线性表示; 或者二维中两个向量共线, 那么可以由另一个线性表示出来. 现在观察二维两个向量共线的情况:
这种情况称之为线性相关(Linearly Dependent), 也就是说存在有向量对张成空间而言上多余的, 即便删除掉也不会对张成的空间有任何影响.
反之称为线性无关, 也就是没有任何向量可以由其他向量经过线性组合表示出来, 每个向量对所张成的空间都做出了"贡献".
03 「线性变换/矩阵及乘法」
线性变换是线性空间中的运动, 而矩阵就是用来描述这种变换的工具. 这样说还是没有直观印象, 所以还是直接看图解的动画吧.
矩阵不仅仅只是数值的表:
其实表示了在该矩阵的作用下, 线性空间是怎样的变化, 观察下图二维平面中水平和垂直方向的伸缩过程: