2.9 Diagonalization and Powers of A 阅读笔记
矩阵对角化, 乘幂和一阶系统
reference的内容为唯一教程,接下来的内容仅为本人的课后感悟,对他人或无法起到任何指导作用。
Reference
- Course website: Diagonalization and Powers of A | Linear Algebra | Mathematics | MIT OpenCourseWare and Markov Matrices; Fourier Series | Linear Algebra | Mathematics | MIT OpenCourseWare
- Course video: 【完整版-麻省理工-线性代数】全34讲 配套教材_哔哩哔哩_bilibili and 【完整版-麻省理工-线性代数】全34讲 配套教材_哔哩哔哩_bilibili
- Course summary: Lecture 22: Diagonalization and powers of A (mit.edu) and Lecture 24: Markov matrices; Fourier series (mit.edu)
特征值和特征向量有什么用呢? 这一节说, 可以通过对矩阵 A 对角化用来求矩阵 A 的乘幂 (是有条件的!), 那乘幂又有什么用呢? 可以求连续或者离散的一阶系统的长期性质. 连续部分在下一讲, 线代这块讲的感觉不太严谨, 想要从零学可以从现代控制理论开始看, 大概在 \(e^{At}\) 的部分吧.
自认为连续系统, 傅里叶变换那块应该用不上了 (再也不学自控了), 所以 2.10 直接跳过. 此外我把 2.11 的 Markov Matrices 放到这里作为一阶系统的另一个例子了, 又把傅里叶级数跳过.
Diagonalizing a matrix \(\boldsymbol{A}\)
假设 n*n 阶方阵 A 具有 n 个独立的特征向量, x1, x2, ..., xn.
令 S = [x1, x2, ..., xn]
则 AS = [λ1x1, ..., λnxn]
相当于第一列乘以 λ1, 第二列乘以 λ2, ..., 需要用列变换, 矩阵右乘.
AS = \(\begin{bmatrix} \boldsymbol{x}_1 & \cdots & \boldsymbol{x}_n \end{bmatrix}\begin{bmatrix} \lambda_1 & & \\ & \ddots & \\ & & \lambda_n \end{bmatrix}\) = SΛ
由于 S 列线性无关, 因此可逆, 故有:
S-1ΛS = A, 又可以写作 SAS-1 = Λ
注意: 方阵 A 必须具有 n 个独立的特征向量!!!! 所以对角化有什么用呢?
Powers of \(\boldsymbol{A}\)
A2 的特征值和特征向量是什么?
A2x = AAx = Aλx = λAx = λλx = λ2x
所以特征值平方, 特征向量不变.
递推之后发现 Akx = λkx
于是有 \(A^k=(S\Lambda S^{-1})^k = S\Lambda (S^{-1}S)\Lambda (S^{-1}\cdots S)\Lambda S^{-1} = S\Lambda^kS^{-1}\)
即
Independent Eigenvectors
要想要对角化, 则必须保证矩阵 \(A\) 有 n 个独立的特征向量.
- 若 \(\lambda\) 各不相同, 特征向量必定独立
- 若 \(\lambda\) 相同, 则不知道. 代数重数必须等于几何重数
比如单位矩阵 \(I\) 所有的特征值都为 1, 但是特征向量为单位向量, 相互独立.
又比如上三角矩阵 \(\begin{bmatrix} 1 & 1 \\ 0 & 1 \\\end{bmatrix}\) 所有的特征值为 1, 解 \((A-I)\boldsymbol{x}=\boldsymbol{0}\) 经过行变换变成 \(\begin{bmatrix} 0 & 1 \\ 0 & 0 \\\end{bmatrix} \boldsymbol{x}=\boldsymbol{0}\), 解只有一个独立的特征向量, 这时就不行了.
给出一个方法, 就是如果特征值有重根, 把这个数量叫做这个特征值的代数重数. 代入 \(A-\lambda I=\boldsymbol{0}\) 后零空间的维度 (独立非零解的个数) 叫做几何重数. 只有代数重数等于几何重数的情况下才能其可以对角化.
1st Order System: \(\boldsymbol{u}_{k+1}=A \boldsymbol{u}_k\)
满足 \(\boldsymbol{u}_{k+1}=A \boldsymbol{u}_k\) 的叫做一阶系统 (在自控里面学过的东西, 早忘了). 由递推式可得:
前面我们知道 \(A^k = S\Lambda^kS^{-1}\), 所以 \(\boldsymbol{u}_k=S\Lambda^kS^{-1}\boldsymbol{u}_0\)
由于 A 的特征向量独立, 因此可以用来张成 \(\mathbb{R}^n\), 所以在 \(\mathbb{R}^n\) 中的向量 \(\boldsymbol{u}_0\) 也可以用 A 的特征向量线性表示:
于是有
Example: Fibonacci Sequence
地球人都知道什么叫做斐波那契数列. 斐波那契数列就是满足 \(F_{k+2} = F_{k+1} + F_k\) 的数列, 一般会设初始值 \(F_0 = 0, F_1 = 1\). 然后求 \(F_n\).
这次我们想探究在 n 充分大的时候 \(F_n\) 的趋势是什么. 这便需要用到特征值和特征向量的知识了. 但是这个式子和上面的一阶系统不太一样啊. 我们可以用数感玄学发现这个式子可以转化为一阶系统:
于是有:
现在需要求 S, Λ, c, 很容易得到解在这个一元二次方程里面: $\lambda^2 - \lambda - 1 = 0 $, 解得 \(\lambda_1 = \displaystyle\frac{1 + \sqrt{5}}{2}\), \(\lambda_2 = \displaystyle\frac{1-\sqrt{5}}{2}\). 把特征值带回去求特征向量, 对矩阵做行变换:
这里第二行第一列的表达式由上面的二次方程约束, 为 0, 于是解得 \(\bm{x} = \begin{bmatrix} 1 \\ \lambda-1 \\\end{bmatrix}\), 得到两个特征向量. 接下来只要解 \(\bm{u}_0 = S \bm{c}\) 即可. 然后你就会发现这个形式的 \(\bm{x}\) 求 \(\bm{c}\) 会崩溃的.
大佬用数感蒙出来 \(\bm{x} = \begin{bmatrix} \lambda \\ 1 \\\end{bmatrix}\), 按理说咱们算的 x 一定和大佬算的共线啊, 这是怎么回事呢? 此时根据韦达定理, \(\lambda_1 + \lambda_2 = -\displaystyle\frac{b}{a} = 1\), 所以 \(\lambda - 1 = -\lambda'\) (另一个解), 此时 \(\bm{x} = \begin{bmatrix} 1 \\ \lambda-1 \\\end{bmatrix} = \begin{bmatrix} 1 \\ -\lambda' \\\end{bmatrix}\), 乘以常数 \(\lambda'\), 根据 \(\lambda_1\lambda_2 = \displaystyle\frac{c}{a} = -1\), 得 \(\begin{bmatrix} \lambda \\ -\lambda\lambda' \\\end{bmatrix} = \begin{bmatrix} \lambda \\ 1 \\\end{bmatrix}\)
接下来解 \(\begin{bmatrix} \lambda_1 & \lambda_2 \\ 1 & 1 \\\end{bmatrix} \begin{bmatrix} c_1 \\ c_2 \\\end{bmatrix} = \begin{bmatrix} 1 \\ 0 \\\end{bmatrix}\), 很容易解得 \(c_1 = \displaystyle\frac{1}{\sqrt{5}}\), \(c_2 = -\displaystyle\frac{1}{\sqrt{5}}\).
于是有 \(\bm{u}_k = \begin{bmatrix} \displaystyle\frac{1}{\sqrt{5}} \lambda_1^{k+1} - \displaystyle\frac{1}{\sqrt{5}}\lambda_2^{k+1}\\ \displaystyle\frac{1}{\sqrt{5}} \lambda_1^{k} - \displaystyle\frac{1}{\sqrt{5}}\lambda_2^{k} \\\end{bmatrix}\)
所以解得 \(F_k = \displaystyle\frac{\sqrt{5}}{5} \lambda_1^{k}-\displaystyle\frac{\sqrt{5}}{5} \lambda_2^{k}\).
由于 \(\left\vert \lambda_2 \right\vert < 1\), 所以 \(\displaystyle \lim_{k \to \infty}F_k = \lim_{k \to \infty}\displaystyle\frac{\sqrt{5}}{5} \lambda_1^k\).
发现原来特征值可以决定一阶系统得长期效应. \(\lambda = 1\) 会维持一个定值, 存在稳态误差. \(\left\vert \lambda \right\vert < 1\) 的部分最终会趋于零, 稳定. \(\left\vert \lambda \right\vert > 1\) 的部分最终会发散, 不稳定. (\(\lambda=-1\) 的情况应该是震荡了, 好像是临界稳定? 我记不住了, 自控还给老师了)
插个题外话, 涉及到矩阵乘幂, 可以令 \(\Theta(n)\) 复杂度的递推求解法变成 \(\Theta(\log n)\) 求解
Example: Markov Matrices
马尔可夫矩阵是一种转移概率矩阵, 举个例子, 假设在渣交大学要读很多年 (?), 大一的时候一届 1000 人, 这些人全都被忽悠得喜欢去自动化了 (CS 有的自动化都有, 自动化还能学 AI, 自动化还万金油, 资源多老师好...), 都不想去计算机, 可惜分流自动化只录 500 人. 此时 \(\bm{u}_0 = \begin{bmatrix} u_{cs} = 500 \\ u_{auto} = 500 \\\end{bmatrix}\).
然而过了一年自动化的同学们很快发现自己被骗了, 自动化跟 CS 也没沾什么边, 更跟 AI 没啥关系, 老师讲的也不咋地, 啥都学但除了自控和信号处理傅里叶变换别的连入门大概都不算, 而且卷的一批.
于是这 500 人有 20% 的人 (严谨地讲, 是这些人中有 20% 的概率) 开始讨厌自动化想去计算机, 还有 80% 觉得还行, 还能接着卷. 而计算机确实也挺坑的, 不仅要学 64 学时的金工实习, 学生们完全不知道有什么意义, 而且还要学三大电 (电路, 模电, 数电), 数据结构的学时还没自动化的多, 老师也很烂, 考试考背诵... 但毕竟全民 CS 嘛, 于是就只有 10% 的人讨厌计算机想去自动化, 90% 还喜欢计算机. (老二极管了, 非计算机就自动化 😅)
于是下一年喜欢 CS 和 Automation 的人数发生了变化:
再过一年, 加入还是按照上述的概率, 就要再左乘一个同样的方阵, n 年之后, 喜欢自动化的计算机的人数比例会怎么变化, 这和初始状态有关吗?
这不是又一个一阶系统嘛. \(A = \begin{bmatrix} 0.9 & 0.2 \\ 0.1 & 0.8 \\\end{bmatrix}\). 但是这个矩阵有点特点, 名字叫 Markov Matrix.
Definition & Properties
首先这个矩阵 A 的每个元素非负 \(a_{ij} \ge 0\), 因为是概率嘛. 而且列元素和为 1, 即 \(\displaystyle\sum_{i}^{} a_{ij} = 1\). 这便是 Markov 矩阵的定义.
而且 \(A^k\) 仍然是 Markov 矩阵. 其实直觉上确实是这样, 过了 k 年, \(\boldsymbol{u}_{k}=A^{k} \boldsymbol{u}_0\), 相对于最初, 仍然是最初的 500 人有 p 的概率过了 k 年后坚持初心, 则另外一定是 1-p 的概率讨厌自己的专业了, 不可能还剩一部分或多出来一部分人, 更不能出现负数. 手算一下很容易验证.
而且其特征值必有 1, 其他特征值无 \(\left\vert \lambda \right\vert > 1\). 为什么呢? 因为 \(A^k\) 仍然是 Markov 矩阵, 因此绝对不能发散, 就没有 \(\left\vert \lambda \right\vert > 1\) 项. 此外 \(A-I\) 会令每列元素和从 1 变为 0, 把上面每一行都加到最后一行, 就会出现全 0 行, 矩阵奇异, 行列式为 0. 因此特征值一定有 1.
Calculation
同样按照一阶系统, \(\bm{u}_k = S \Lambda^k \bm{c}\), 还是要求特征值, 特征向量和 \(\bm{c}\).
根据 Markov 矩阵的性质, \(\lambda_1 = 1\), 因为 \(\lambda_1 + \lambda_2 = 0.9 + 0.8 = 1.7\), \(\lambda_2 = 0.7\). 求得 \(\bm{x}_1 = (2, 1)\), \(\bm{x}_2 = (1, -1)\).
继续求 \(\bm{c}\), 需要解
解得 \(\bm{c} = (\displaystyle\frac{1000}{3}, -\displaystyle\frac{500}{3})\), 于是有
最终喜欢计算机和自动化的"人数"比例为 2:1, 而总人数是 1000, 因此无论最初多少人喜欢计算机和自动化, 最后都会形成同样的趋势. 也就是说上面的二元方程只要保证 b 的和为 1000, \(c_1\) 永远为 \(\displaystyle\frac{1000}{3}\). (严谨地说, 并不是人数, 人数是不可能出现分数的. 上面说过, 其实是概率. 那么这里应该是人数的期望)