程序员眼里的线性代数
程序员眼里的线性代数
- 看到第四课中的矩阵乘法,又去学了一星期的线性代数,要补的东西好多
- 主要精力集中在两个课程中:
总结一下从程序员角度理解的体会:
抽象
- 线性代数是一个接口(Interface)
- 任何满足
向量这个接口的实现类都可以使用线性代数工具,当前已知的实现类有:空间几何、GPU使用的Tensor张量、函数、方程组等。 - 线性代数的发展方式和软件开发抽象思路一致
-
- 先在
解方程这个方向开发了一套系统,并不断添加Feature
- 先在
-
- 经过一段时间的迭代,发现
解方程和空间几何这里有一定的重复性,可以使用解方程的思路处理空间几何
- 经过一段时间的迭代,发现
-
- 于是抽取出一些Interface,数学上叫做
公理,只要满足这些公理的对象,都可以使用线性代数工具,向前兼容了解方程这个Feature,同时抽象化了具体实现
- 于是抽取出一些Interface,数学上叫做
-
- 在GPU制作时,特意兼容了
向量这个接口,使得线性代数可以在GPU中被使用
- 在GPU制作时,特意兼容了
从空间几何这个实现类入手
- 从3Blue1Brown的系列视频中,从空间几何这个人人都可以接触到的实现类入手,让大家知道线性代数的操作在空间几何内到底代表了什么
| 线性代数操作 | 空间几何实现 |
|---|---|
| 向量(x,y) | 基向量i-hat, j-hat的组合 (i-hat * x, j-hat * y) |
| 向量加 | 两向量首尾相连,终点就是结果 |
| 矩阵-解释1 | 对向量进行的一个变换 |
| 矩阵-解释2 | 对基向量的重新选择 |
| 线性组合 | 向量i,j的乘以常数后的组合 |
| 基向量 | 作为参考系的向量 |
| 行列式 | 向量张成的平行四边形的面积(2维)或平行六面体的体积(3维)或更高维度维度体积 |
| 特征向量 | 在某个矩阵变换中,仅沿原来的线扩大或缩小的向量 |
| 特征值 | 在某个矩阵变换中,仅沿原来的线扩大或缩小的向量,这个向量扩大或缩小的倍数 |