Lihs.me

WIP:《程序员的数学 3:线性代数》读书笔记(零)

2021-05-03

标签:math basic-math book-note

点击展开目录

如果有兴趣建议先看下文末的「其他参考资料」。

第 0 章——动机

原书将综述一章安排在本章之前,对于喜欢深度遍历学习的同学十分不友好!虽然综述部分也有提及,常回来看看综述。建议更优先度读第 0 章,体验会更好点!另外:综述就是天坑,里面的内容需要往后读才能理解在说什么,如果不懂综述在说什么,请忽略或带着疑问向后阅读!

身处三维空间,为了处理现实世界的很多问题,需要一种合适的方式来描述「空间」。

比如:如何将三维空间的动画显示在二维的屏幕中?

因此最初的线性代数诞生了!

除了研究空间变为数据,线性代数还可以将这一过程逆转——将数据变为直观的图像,使得可以通过空间来理解数据。

随后,线性代数得到了很多发展,它不仅仅再是单独描述空间的工具。而变为了描述数据变换关系的一个更抽象的工具。甚至可以用来对任意的 n 维空间来进行计算。

此外,所谓的感应器以及人类的感官都是有敏感度的。比如 14ms 与 15ms 的延迟区别,普通人就很难感知到。联想到现代的计算机图形学,也可以发现,底层只有三角形。所谓的球体,只不过是用众多的微型三角形拼凑近似而来的。

这意味着:曲线如果在足够小的范围内研究,也可以将其这一小部分视为直线。谈论到直线,那可就是线性代数擅长的部分了!

很多情况下,这种“不完美”的解决方法反而能切实地满足需求,解决问题。再次论证了「完美主义害死人」!

前置(可选)

本书涵盖了一部分动画演示,但书中提到的工具很难用,强烈推荐使用笔者实现的网页版:

matrix-animation

这个工具的源码托管在 GitHub

如果真的想了解一下书中的工具也可以试试:

macOS 用户可以直接使用自带的 Ruby。绘制程序可使用 Homebrew 安装 brew install gnuplot

TODO: Windows 用户安装。

代码资源:https://www.ituring.com.cn/book/1239

综述

目标:了解秩、行列式、特征值、对角化等概念

m×nm \times n 的矩阵 AA 表示的是 nn 维空间到 mm 维空间的映射

除特殊说明,所使用坐标系均为


└ →

这可能与一些编程相关使用的坐标系不同,编程中常用的坐标系为

┌ →

对角矩阵

左上到右下外的所有元素都为 0

普通的

A=(1.5000.5)A = \begin{pmatrix} 1.5 & 0 \\ 0 & 0.5 \end{pmatrix}
ruby mat_anim.rb -s=0 | gnuplot
  • 水平方向扩大到 1.5 倍,竖直方向缩小到 0.5 倍
  • 整体面积扩大率为 1.5×0.5=0.751.5 \times 0.5 = 0.75 倍,即 detA=0.75\operatorname{det} A = 0.75
  • 因此行列式 = 对角元素的乘积❓

存在零

A=(0000.5)A = \begin{pmatrix} 0 & 0 \\ 0 & 0.5 \end{pmatrix}
  • 水平方向变为原来的 0 倍 → 压缩扁平化
  • detA=0\operatorname{det} A = 0

存在负数

A=(1.5000.5)A = \begin{pmatrix} 1.5 & 0 \\ 0 & -0.5 \end{pmatrix}
  • 水平方向扩大到 1.5 倍,竖直方向缩小到 -0.5 倍 → 上下颠倒
  • detA=0.75<0\operatorname{det} A = -0.75 \lt 0

特征值、特征向量、对角化

非对角一般矩阵

A=(10.30.70.6)A = \begin{pmatrix} 1 & -0.3 \\ -0.7 & 0.6 \end{pmatrix}
  • 倾斜,但不扭曲,直线依然是直线,平行的依然平行
  • AA 的第 1 列 (10.7)\big(\begin{smallmatrix} 1 \\ -0.7 \end{smallmatrix}\big)(10)\big(\begin{smallmatrix} 1 \\ 0 \end{smallmatrix}\big) 的像,其第 2 列 (0.30.6)\big(\begin{smallmatrix} -0.3 \\ 0.6 \end{smallmatrix}\big)(01)\big(\begin{smallmatrix} 0 \\ 1 \end{smallmatrix}\big) 的像。也就是说 (1,0)(1, 0) 这个点会变换到 (1,0.7)(1, -0.7)(0,1)(0, 1) 会变换到 (0.3,0.6)(-0.3, 0.6)
  • 借助两个像的变化,就可以大致想象出整个空间的变换了

特征向量

⚠️⚠️ todo ⚠️⚠️

有向线段变为 (10.7)\big(\begin{smallmatrix} 1 \\ -0.7 \end{smallmatrix}\big), (10.7)\big(\begin{smallmatrix} 1 \\ -0.7 \end{smallmatrix}\big)

A=(10.30.70.6)A = \begin{pmatrix} 1 & -0.3 \\ -0.7 & 0.6 \end{pmatrix}
  • 矩阵和上次一样,但这次原图上有向线段方向发生了改变,使得变换前后有向线段方向没有变,仅长度发生了改变,这便是这个矩阵的特征向量
  • 伸缩率(长度变化的倍数)便是特征值,1.3 与 0.3。

对角化

⚠️⚠️ todo ⚠️⚠️

坐标系变为

A=(10.30.70.6)A = \begin{pmatrix} 1 & -0.3 \\ -0.7 & 0.6 \end{pmatrix}
  • 矩阵依然不变,将坐标系的方向调整为特征向量的方向。此时,变化的倾斜效果“消失”了,看上去变换行为与对角矩阵时一样(只有沿着格子线的伸缩变换)。这便是对角化
  • detA=0.39\operatorname{det} A = 0.39,即特征值的积(1.3×0.3=0.391.3 \times 0.3 = 0.39

秩、可逆性

空间被压缩为扁平

A=(0.80.60.40.3)A = \begin{pmatrix} 0.8 & -0.6 \\ 0.4 & 0.3 \end{pmatrix}
  • 变换后的形状被称为 AA像(Image)ImA\operatorname{Im} A
  • 的维度被称为秩(Rank)

    • 本例中发生了扁平化,像是直线,所以是 1(rankA=1\operatorname{rank} A = 1)。这时 AA 被称作奇异矩阵
    • 若没有扁平化,则有 rankA=2\operatorname{rank} A = 2。这时 AA 被称作非奇异矩阵(可逆矩阵)
  • 由于发生了扁平化,detA=0\operatorname{det} A = 0

奇异就是不一般,非奇异就是一般的(行列式不为0、可逆)。 因为广义上看可逆矩阵远远比不可逆的多,数学上经常说可逆矩阵是奇异的。 -- @lina

行列式

将前面提到的矩阵 (10.30.70.6)\big(\begin{smallmatrix} 1 & -0.3 \\ -0.7 & 0.6 \end{smallmatrix}\big) 第 1 列与第 2 列交换:

A=(0.310.60.7)A = \begin{pmatrix} -0.3 & 1 \\ 0.6 & -0.7 \end{pmatrix}

其他参考资料

最好准备其他参考书,比如高校教材《线性代数》。因为涉及到计算

《【超智能体02】7分钟带你入门线性代数+微积分》


感谢阅读