Day 4 Ax=λx

7 minute read

Published:

特征值与特征向量

对于一个方阵 $\mathbf A$ 表示的线性变换,能不能找到一组新的基,让这个线性变换看起来最简单?

什么叫最简单?每一维互不干扰。对于这组基中的每一个向量 $\vec x$,我希望这个线性变换对这个方向只是拉伸,即存在一个数 $\lambda$ 使得:

\[\boxed{ \mathbf A \vec x = \lambda \vec x }\]

我们称 $\lambda$ 为特征值 (eigenvalue),$\vec x$ 为特征向量 (eigenvector)

我们把 $n$ 个基向量 $\vec x_i$ 写全:

\[\begin{cases} \mathbf A \vec x_1 = \lambda_1 \vec x_1 \\ \vdots \\ \mathbf A \vec x_n = \lambda_n \vec x_n \\ \end{cases}\]

这可以用矩阵表述:

\[\mathbf A \begin{bmatrix} \vec x_1 & \cdots & \vec x_n \end{bmatrix} = \begin{bmatrix} \vec x_1 & \cdots & \vec x_n \end{bmatrix} \begin{bmatrix} \lambda_1 \\ & \ddots \\ & & \lambda_n \\ \end{bmatrix}\]

简记为

\[\mathbf A \mathbf X = \mathbf X \mathbf \Lambda\]

由于 $\vec x$ 线性无关,因此 $\mathbf X$ 可逆。把它除到右边,我们就得到了

\[\mathbf A = \mathbf X \mathbf \Lambda \mathbf X^{-1}\]

根据其它教材的习惯,一般把 $\mathbf X$ 记为 $\mathbf P$:

\[\boxed{ \mathbf A = \mathbf P \mathbf \Lambda \mathbf P^{-1} }\]

使用条件是:$\mathbf A$ 具有 $n$ 个线性无关的特征向量。

行列式与特征值的关系

每个特征值是它自己那一维上的缩放倍数,而行列式是总体积的缩放倍数,应该是每一维相乘。

\[\boxed{ \det \mathbf A = \prod_{i=1}^n \lambda_i }\]

特征值怎么求?

\[\begin{aligned} \mathbf A \vec x &= \lambda \vec x \\ (\mathbf A - \lambda \mathbf I) \vec x &= \vec 0 \\ \det (\mathbf A - \lambda \mathbf I) &= 0 \\ \end{aligned}\]

$\det (\mathbf A - \lambda \mathbf I)$ 是一个关于 $\lambda$ 的 $n$ 次多项式(称为该矩阵的特征多项式),所以会得到 $n$ 个根。

解出 $\lambda$ 后即可 Gauss 消元求出对应的 $\vec x$。

但是注意:

  • $\lambda$ 可能有复根!
    • 这应该对应着复的特征向量。
    • 举个例子:对于旋转矩阵,$\mathbb R^2$ 上不存在任何一个方向只被拉伸。这只有在 $\mathbb C^2$ 才能实现。
  • $\lambda$ 可能有重根!
    • $\det(\mathbf A - \lambda \mathbf I) = 0$ 的重根的出现次数被称为代数重数
      • e.g. 假设这个方程是 $(\lambda-1)^2 (\lambda-3)^3 = 0$,$\lambda = 1$ 的代数重数是 $2$,$\lambda = 3$ 的代数重数是 $3$。
    • 这一块内容会放到其它章节中接着聊,会遇到 Jordan 块等知识。
    • 总之现在需要知道的就是,当所有特征值均不相等时,一切都没问题

相似变换

若矩阵 $\mathbf A, \mathbf B$ 满足:存在矩阵 $\mathbf P$ 使得

\[\mathbf A = \mathbf P \mathbf B \mathbf P^{-1}\]

则称 $\mathbf A, \mathbf B$ 相似相似矩阵是同一个线性变换在不同的基下的表示

相似矩阵拥有相同的特征值。

矩阵的幂

Fibonacci 数列定义为:

\[F_n = \begin{cases} 0 & n = 0 \\ 1 & n = 1 \\ F_{n-1} + F_{n-2} & n \ge 2 \end{cases}\]

求出 $F_n$ 的通项公式。

Fibonacci 数列是一个线性递推,熟知线性递推可以构造为矩阵乘法:

\[\begin{bmatrix} F_n \\ F_{n-1} \end{bmatrix} = \begin{bmatrix} 1 & 1 \\ 1 & 0 \\ \end{bmatrix} \begin{bmatrix} F_{n-1} \\ F_{n-2} \end{bmatrix}\]

从边界条件开始递推,则可以写成这样:

\[\begin{bmatrix} F_n \\ F_{n-1} \end{bmatrix} = \begin{bmatrix} 1 & 1 \\ 1 & 0 \\ \end{bmatrix}^{n-1} \begin{bmatrix} 1 \\ 0 \end{bmatrix}\]

也就是说,现在我们希望求解一个形如 $\mathbf A^n$ 的问题。

设 $\mathbf A = \mathbf P \mathbf \Lambda \mathbf P^{-1}$ 进行相似对角化,则

\[\begin{aligned} & \mathbf A^n \\ =& (\mathbf P \mathbf \Lambda \mathbf P^{-1})^n \\ =& \mathbf P \mathbf \Lambda (\mathbf P^{-1} \mathbf P) \mathbf \Lambda \cdots \mathbf \Lambda \mathbf P^{-1} \\ =& \mathbf P \mathbf \Lambda^n \mathbf P^{-1} \end{aligned}\]

而只有对角线上有值的矩阵的 $n$ 次幂是好求的,只要把每个元素都求 $n$ 次方即可:

\[\mathbf \Lambda^n = \begin{bmatrix} \lambda_1^n \\ & \ddots \\ & & \lambda_n^n \\ \end{bmatrix}\]

我们来实践一下:

「1」求特征值。

\[\begin{aligned} \det (\mathbf A - \lambda \mathbf I) = 0 \\ \begin{vmatrix} 1 - \lambda & 1 \\ 1 & - \lambda \\ \end{vmatrix} &= 0 \\ \lambda^2 - \lambda - 1 &= 0 \\ \end{aligned}\]

解得两个特征值 $\lambda_{1,2} = \frac {1 \pm \sqrt 5} 2$。

「2」求特征向量。

\[\vec x_1 = \begin{bmatrix} \lambda_1 \\ 1 \end{bmatrix}, \vec x_2 = \begin{bmatrix} \lambda_2 \\ 1 \end{bmatrix}\] \[\mathbf P = \begin{bmatrix} \lambda_1 & \lambda_2 \\ 1 & 1 \\ \end{bmatrix}\] \[\mathbf P^{-1} = \frac 1 {\sqrt 5} \begin{bmatrix} 1 & - \lambda_2 \\ -1 & \lambda_1 \\ \end{bmatrix}\]

「3」直接求:

\[\begin{aligned} \begin{bmatrix} F_n \\ F_{n-1} \end{bmatrix} =& \mathbf P \mathbf \Lambda^{n-1} \mathbf P^{-1} \begin{bmatrix} 1 \\ 0 \end{bmatrix} \\ =& \begin{bmatrix} \lambda_1 & \lambda_2 \\ 1 & 1 \\ \end{bmatrix} \begin{bmatrix} \lambda_1^{n-1} & \\ & \lambda_2^{n-1} \\ \end{bmatrix} \frac 1 {\sqrt 5} \begin{bmatrix} 1 \\ -1 \end{bmatrix} \\ =& \frac 1 {\sqrt 5} \begin{bmatrix} \lambda_1^n - \lambda_2^n \\ \lambda_1^{n-1} - \lambda_2^{n-1} \end{bmatrix} \end{aligned}\] \[\boxed{ F_n = \frac 1 {\sqrt 5} (\lambda_1^n - \lambda_2^n) = \frac 1 {\sqrt 5} \left(\left(\frac {1 + \sqrt 5} 2 \right)^n - \left(\frac {1 - \sqrt 5} 2 \right)^n \right) }\]

总之,只要能把 $\mathbf A$ 表示为 $\mathbf P \mathbf \Lambda \mathbf P^{-1}$,则 $\mathbf A^n = \mathbf P \mathbf \Lambda^n \mathbf P^{-1}$,当中的 $\mathbf \Lambda^n$ 又超级好算。

向量微分方程

先看一个简单的问题:

$x$ 是关于 $t$ 的函数,求关于 $x$ 的微分方程 $\frac {dx} {dt} = a x$ 的解。

\[\begin{aligned} \frac {dx} {dt} &= a x \\ \frac 1 x \frac {dx} {dt} &= a \\ \int \frac 1 x \frac {dx} {dt} dt &= \int a dt \\ \ln x &= at + C \\ x &= C e^{at} \\ \end{aligned}\]

这里的积分常数 $C$ 其实就是 $t=0$ 时 $x$ 的值,所以也可以这么写:

\[\boxed{ x(t) = e^{at} \times x(0) }\]

接下来进入正题。

$\vec x$ 是关于 $t$ 的函数,求关于 $\vec x$ 的微分方程 $\frac {d \vec x} {dt} = \mathbf A \vec x$ 的解。

根据上一题的结论,答案肯定跟指数脱不开关系。我们会期望答案长成这个样子:

\[\boxed{ \vec x(t) = e^{\mathbf A t} \times \vec x(0) }\]

呃,但是 $e^{\mathbf A t}$ 这是个啥?

对于一个方阵 $\mathbf A$,怎么定义其矩阵指数 $e^{\mathbf A}$?

我们可以 Taylor 展开:

\[\boxed{ e^{\mathbf A} := \sum_{n=0}^\infty \frac {\mathbf A^n} {n!} }\]

矩阵幂咋处理?相似对角化。接下来我们暂时只考虑 $\mathbf A$ 可对角化的情况,设 $\mathbf A = \mathbf P \mathbf D \mathbf P^{-1}$。

\[\begin{aligned} e^{\mathbf A} &:= \sum_{n=0}^\infty \frac {\mathbf A^n} {n!} \\ &= \sum_{n=0}^\infty \frac {\mathbf P \mathbf D^n \mathbf P^{-1}} {n!} \\ &= \mathbf P \left( \sum_{n=0}^\infty \frac {\mathbf D^n} {n!} \right) \mathbf P^{-1} \\ \end{aligned}\]

当中那个东西是好算的:

\[\begin{aligned} e^{\mathbf D} &:= \sum_{n=0}^\infty \frac {\mathbf D^n} {n!} \\ &= \begin{bmatrix} \sum_{n=0}^\infty \frac {\lambda_1^n} {n!} \\ & \ddots \\ & & \sum_{n=0}^\infty \frac {\lambda_n^n} {n!} \\ \end{bmatrix} \\ &= \begin{bmatrix} e^{\lambda_1} \\ & \ddots \\ & & e^{\lambda_n} \\ \end{bmatrix} \end{aligned}\] \[\boxed{ \begin{aligned} e^{\mathbf A} &= \mathbf P e^{\mathbf D} \mathbf P^{-1} \\ &= \mathbf P \begin{bmatrix} e^{\lambda_1} \\ & \ddots \\ & & e^{\lambda_n} \\ \end{bmatrix} \mathbf P^{-1} \\ \end{aligned} }\]

参考文章:为什么会定义矩阵的迹? - Dialectique​

$\vec x$ 基于微分方程 $\frac {d \vec x} {dt} = \mathbf A \vec x$ 从 $t=0$ 开始随时间流逝进行演化,其解为 $\vec x(t) = e^{\mathbf A t} \times \vec x(0)$。

在演化过程中,$e^{\mathbf A t}$ 对体积的缩放倍数(即 $\det(e^{\mathbf A t})$)的变化率是?

我们知道 $e^{\mathbf A t}$ 的特征值是 $e^{\lambda_{1 \cdots n} t}$,因此可以拆开:

\[\begin{aligned} & \frac d {dt} \det(e^{\mathbf A t}) \\ =& \frac d {dt} \prod_{i=1}^n e^{\lambda_i t} \\ =& \frac d {dt} e^{(\sum_{i=1}^n \lambda_i) t} \\ =& (\sum_{i=1}^n \lambda_i) e^{(\sum_{i=1}^n \lambda_i) t} \\ \end{aligned}\]

我们发现了一个很关键的系数 $\sum_{i=1}^n \lambda_i$,称它为矩阵的迹 (trace)

\[\boxed{ \text{tr}(\mathbf A) := \sum_{i=1}^n \lambda_i }\]

刚才的式子可以写为

\[\frac d {dt} \det(e^{\mathbf A t}) = \text{tr}(\mathbf A) e^{\text{tr}(\mathbf A) t}\]

若只观察 $t=0$ 附近的变化情况,就得到了一个看起来很清爽的式子:

\[\boxed{ \left. \frac d {dt} \det(e^{\mathbf A t}) \right\vert_{t=0} = \text{tr}(\mathbf A) }\]

迹的计算

$\text{tr}(\mathbf A) = \sum \lambda_i$,而 $\lambda$ 是一个 $n$ 次方程 $\det(\mathbf A - \lambda \mathbf I) = 0$ 的根,根据 Vieta 定理我们知道 $\text{tr}(\mathbf A)$ 为这个方程的 $n-1$ 次项系数的相反数(若 $n$ 次项系数为 $1$)。

考虑用“同济线代第一章”公式

\[\det \mathbf (A - \lambda \mathbf I) = \sum_{\sigma \in S_n} \text{sgn}(\sigma) \prod_{i=1}^n (\mathbf A_{\sigma(i), i} - [\sigma(i) = i] \lambda)\]

我们注意到若我们想要一个 $\lambda^{n-1}$,则 $\sigma$ 必须要有 $\ge n-1$ 个位置满足 $\sigma(i) = i$。但是但凡动一下脑子就会意识到根本不存在 $n-1$ 的情况,不可能只有一个位置错开,至少得有俩位置,那就 $\le n-2$。所以只有 $n$ 个位置全满足 $\sigma(i) = i$ 才行。

此时后面这项为

\[\prod_{i=1}^n (\mathbf A_{i,i} - \lambda)\]

在调好 $n$ 次项系数的 $\pm 1$ 后,其 $n-1$ 次项系数为 $- \sum_{i=1}^n \mathbf A_{i,i}$。因此我们就得到了

\[\boxed{ \text{tr}(\mathbf A) = \sum_{i=1}^n \mathbf A_{i,i} }\]

迹等于对角线上的元素之和。

应用:散度

我有一个速度矢量场 $\vec v(\vec x)$。尝试利用迹的知识对它进行一些探究。

我们考虑 Jacobian matrix

\[\mathbf J(\vec x_0) = \left. \frac {\partial \vec v} {\partial \vec x} \right\vert_{\vec x_0}\] \[d \vec v = \mathbf J(\vec x_0) d \vec x\]

在某点 $\vec x_0$ 附近的局部,$\vec v$ 的变化是线性的,由 $\mathbf J$ 给出。

这和我们刚才研究的常微分方程很像,只不过这里是对微元的常微分方程

\[\frac d {dt} d \vec x = \mathbf J d \vec x\]

因此它在 $t=0$ 时 $d \vec x$ 处的微小体积的瞬时变化率即为 $\text{tr}(\mathbf J)$。

我们认为这刻画了该速度场在此处的发散程度,称为散度 (divergence),这是一个输入位置向量输出一个标量的函数。散度的符号记为 $\nabla \cdot \vec v$:

\[\boxed{ \nabla \cdot \vec v := \text{tr}\left(\frac {\partial \vec v} {\partial \vec x} \right) }\]

利用迹等于对角线元素之和的性质,则会得到

\[\boxed{ \nabla \cdot \vec v = \sum_{i=1}^n \frac {\partial \vec v_i} {\partial \vec x_i} }\]

散度大于 $0$ 说明有发散趋势,小于 $0$ 说明有收缩趋势。

仔细思考一下发现其实也不一定非得是速度场。对于任何一个矢量场 $\vec f$,你可以假装它是速度,然后计算出一个发散程度:

\[\boxed{ \nabla \cdot \vec f = \sum_{i=1}^n \frac {\partial \vec f_i} {\partial \vec x_i} }\]

举个例子:(Maxwell 方程组中的电场 Gauss 定律)空间中一点处电场 $\vec E$ 的发散程度直觉上就应该和这一点的电荷密度 $\rho$ 成正比。我们把这个比例系数叫做 $\frac 1 {\varepsilon_0}$,就得到了

\[\nabla \cdot \vec E = \frac \rho {\varepsilon_0}\]

再举个例子:(流体力学连续性方程)在空间中的任何一处,流体的密度 $\rho$ 以及流体的速度场 $\vec v$ 应该满足质量守恒定律——密度的增加/减少和流体的流出/流入之和应该为 $0$:

\[\frac {\partial \rho} {\partial t} + \nabla \cdot (\rho \vec v) = 0\]

总结

  • 我们为了简化线性变换,找到了一组特别的基,使得这个线性变换在这组基上仅表现为拉伸。这组基叫特征向量,对应的拉伸倍数叫特征值。
    • 由此引出了相似变换,即同一个变换在不同基下看起来的效果。
  • 相似变换有助于快速计算矩阵的幂。
  • 探究了关于向量的最简单的微分方程。
    • 探讨了矩阵 $\exp$ 的意义。
    • 在这个过程中我们研究了行列式的瞬时变化率,称为迹。
    • 对于一个矢量场,其局部的 Jacobian matrix 的迹称为这一处的散度。看了一些物理中散度的应用。