Linear Algebra-对角化和A的幂-22

一、知识概要

上一节课我们学习了特征值与特征向量,本节课我们继续深入,讨论矩阵的对角化这一重要内容。对角化其实就是一种特殊的矩阵分解方式,它能帮我们极大地简化矩阵的幂运算。最后我们还会介绍差分方程这个实际应用,看看对角化是怎么解决问题的。

整个这部分内容的核心关键点其实很简单,就是要灵活运用线性无关的特征向量。好了,我们开始吧!

二、矩阵的对角化

2.1 对角化

所谓矩阵对角化,本质上就是介绍一种全新的矩阵分解方式。让我们回忆一下上一节学到的特征值与特征向量的知识:如果矩阵 (A) 有 (n) 个线性无关的特征向量,那么我们就可以把它们放在一起,组成一个可逆方阵,进而完成对原矩阵 (A) 的分解。

我们一步一步来推导。假设 (A) 的 (n) 个线性无关的特征向量组成矩阵 (S):

我们来计算一下 (AS):

根据特征值的定义 (Ax_i = \lambda_i x_i),我们可以直接把右边展开:

有意思的是,这个结果还可以再写成矩阵乘法的形式:

我们把这个由特征值组成的对角矩阵记为 (\Lambda)(大写的Lambda),那么上面这个等式就可以简写成 (AS = S\Lambda)。因为 (S) 是由 (n) 个线性无关的特征向量组成的,所以 (S) 一定是可逆矩阵,我们两边同时左乘 (S^{-1}) 就能得到:

或者反过来写,把 (A) 单独放在左边:

看到了吗?这就是我们得到的对角化分解:利用矩阵 (A) 的 (n) 个线性无关的特征向量构造矩阵 (S),再利用 (A) 的 (n) 个特征值构造对角矩阵 (\Lambda),最终把 (A) 分解成:

你可能会问,这种分解方式到底有什么用呢?我们之前学过LU分解、QR分解,这些分解虽然各有用处,但对矩阵的幂运算都帮不上什么大忙。而对角化分解不一样,它在计算矩阵幂的时候简直就是”作弊神器”!

我们来看看为什么:已知 (A = S\Lambda S^{-1}),那 (A^2) 等于什么呢?

中间的 (S^{-1}S) 正好抵消了!那以此类推,(A^k) 就是:

这个结论其实从特征值和特征向量的角度也很容易理解。我们知道 (Ax = \lambda x),那:

这说明 (A^k) 的特征值就是 (\lambda^k),而特征向量 (x) 保持不变,还是原来那个。所以上面那个公式就很自然了。

这里我们来看一个很有意思的问题:如果矩阵 (A) 存在 (n) 个线性无关的特征向量,那在什么条件下,矩阵的幂 (A^k) 会趋近于零矩阵?

我们来分析一下。根据 (A^k = S\Lambda^k S^{-1}),答案其实一目了然:只要所有特征值满足 (|\lambda_i| < 1),这里用绝对值是因为特征值可能是负数也可能是复数,那么当 (k) 趋近于无穷大时,(\lambda_i^k) 都会趋近于零,也就是 (\Lambda^k) 趋近于零矩阵,自然 (A^k) 也趋近于零矩阵。

好了,现在我们回过头来思考一个更基础的问题:一个矩阵什么时候能够对角化?

答案其实我们已经说了,就是必须有 (n) 个线性无关的特征向量。那什么时候能保证有 (n) 个线性无关的特征向量呢?这里有一个重要结论:

如果矩阵 (A) 没有重复的特征值,那么矩阵一定有 (n) 个线性无关的特征向量,因此一定可以对角化。

换句话说,不同特征值对应的特征向量一定线性无关。

那如果有重复的特征值呢?这个结论不是完全否定的,也就是说即使有重特征值,矩阵仍然可能存在 (n) 个线性无关的特征向量,从而可以对角化。最典型的例子就是单位矩阵:比如一个 (10 \times 10) 的单位矩阵,它的特征值只有 (1)(十重根),但我们很容易就能找到十个线性无关的特征向量(就是标准基),所以单位矩阵当然可以对角化(其实它本身已经是对角矩阵了)。

我们来看一个具体的例子:

【例】设矩阵 (A=\begin{bmatrix}2 & 1 \ 0 & 2\end{bmatrix}),判定矩阵是否可以对角化。

解:

首先求特征值,令 (|A - \lambda I| = 0),计算行列式:

所以特征值只有一个:(\lambda = 2)(二重根)。

接下来求矩阵 (A - 2I) 的零空间,也就是解 ((A - 2I)x = 0),代入得:

这个方程组只有一个自由变量,解空间是一维的,所以我们只能得到一个线性无关的特征向量 (\begin{bmatrix}1 \ 0\end{bmatrix})。我们需要两个线性无关的特征向量才能对角化,所以原矩阵 (A) 不可以对角化

这个例子告诉我们,当有重特征值时,矩阵不一定能对角化,关键还是要看能不能凑齐 (n) 个线性无关的特征向量。

2.2 差分方程

有了上面对角化的知识,我们现在就可以用它来解决实际问题了。最典型的应用就是差分方程,特别是一阶递推关系 (u_{k+1} = Au_k)。

我们来看一个一般情况:给定向量 (u_0),满足递推关系:

我们来解这个方程。根据递推关系,直接展开就能得到 (u_k = A^k u_0)。但这个表达式太笼统了,我们能不能给出更具体的形式呢?

这就要用到我们刚学的对角化知识了。如果 (A) 有 (n) 个线性无关的特征向量,那么任何 (n) 维向量都可以表示为这些特征向量的线性组合,包括初始向量 (u_0):

我们来算一下 (u_1 = Au_0),根据 (Ax_i = \lambda_i x_i),有:

再算 (u_2 = Au_1):

依此类推,我们很容易得到一般形式:

写成矩阵形式就是:

其中 (\Lambda) 是特征值构成的对角阵,(S) 由特征向量构成,(C) 由系数 (c_1, c_2, \cdots, c_n) 构成。这个表达式非常清晰,它告诉我们每一步的 (u_k) 到底是怎么变化的。

说了这么多,我们来举一个经典的例子实际感受一下——用矩阵对角化来求解斐波那契数列。

【例】斐波那契数列 (0, 1, 1, 2, 3, 5, 8, 13, \cdots),试求第 (100) 项的值,以及它的增长速度有多快?

解:

首先,斐波那契数列的递推关系是:

这是一个二阶递推,我们希望把它改造成我们刚才介绍的一阶差分方程组形式 (u_{k+1} = Au_k)。怎么变呢?很简单,我们只需要再添加一个”恒等”方程:

现在我们设 (uk=\begin{bmatrix}F{k + 1} \ F_k\end{bmatrix}),那么上面两个方程就可以写成矩阵形式:

这样我们就成功地把一个二阶递推方程转化为了一阶矩阵递推,也就是我们熟悉的 (u_{k + 1} = Au_k) 形式。完美!

接下来就是标准操作了,对于矩阵 (A=\begin{bmatrix}1 & 1 \ 1 & 0\end{bmatrix}),我们先求它的特征值。解特征方程 (|A - \lambda I| = 0):

解得两个特征值:

根据我们之前得到的通解公式,(u_k = c_1\lambda_1^k x_1 + c_2\lambda_2^k x_2),这里我们注意到 (|\lambda_2| \approx 0.618 < 1),所以当 (k) 很大的时候,(\lambda_2^k) 会趋近于零,对结果几乎没有影响。所以当 (k = 100) 时,影响结果的主要就是第一项:

这也就回答了问题中的第二部分:斐波那契数列的增长速度就是 (\approx (1.618)^k),指数增长。

接下来我们把 (c_1) 具体求出来。这需要从 (u_0) 的展开入手,所以我们得先算出 (A) 的两个特征向量。这里有一个计算技巧:我们不用直接代入具体的特征值,而是先保留 (\lambda) 符号来计算。

对于特征值 (\lambda),特征方程是 ((A - \lambda I)x = 0),系数矩阵是:

因为 (\lambda) 是特征值,所以这两行肯定线性相关,我们只需要满足其中一行的方程就可以了。选第二行来看:(1 \cdot x_1 - \lambda x_2 = 0),也就是 (x_1 = \lambda x_2),如果令 (x_2 = 1),那么 (x_1 = \lambda),所以特征向量就是:

这个结果是不是很简洁?这就是技巧的好处。

回到题目,初始条件下 (F_0 = 0),(F_1 = 1),所以初始向量 (u_0 = \begin{bmatrix}F_1 \ F_0\end{bmatrix} = \begin{bmatrix}1 \ 0\end{bmatrix})。接下来就是把 (u_0) 表示为 (x_1) 和 (x_2) 的线性组合:

代入数值解出 (c_1) 和 (c_2) 就完成了,具体计算我们这里就不展开了,核心思路已经讲清楚了。

我们来总结一下解决这类差分方程问题的完整步骤:

  1. 首先将递推方程构造成动态增长的一阶方程组 (u_{k+1} = Au_k),确定初始向量 (u_0)
  2. 求矩阵 (A) 的所有特征值,特征值决定了增长趋势——是发散到无穷还是收敛到零,全由特征值的模长决定
  3. 求 (A) 的特征向量,确保它们线性无关
  4. 将初始向量 (u_0) 用特征向量的线性组合表示,解出组合系数 (c_i)
  5. 根据通解公式 (u_k = c_1\lambda_1^k x_1 + c_2\lambda_2^k x_2 + \cdots + c_n\lambda_n^k x_n) 得到最终结果

这个流程很清晰,多加练习就能够熟练掌握。

三、学习感悟

本节主要学习了矩阵的对角化分解以及差分方程的对应公式,这部分重点在于理解特征值、特征向量的作用,并熟悉差分方程的解题流程。在这一节中我们会发现求解特征向量与特征值的能力非常关键,是这些扩展的核心所在。

四、学习总结

  1. 如果(A)有 (n)个独立的特征向量(x_1,x_2,…,x_n),这些特征向量构成了(X)矩阵的列,那么(A)可以被(X)所对角化,可以表示为(X^{-1}AX=\Lambda)或者(A=X\Lambda X^{-1});
  2. (A)矩阵的幂(A^k=X\Lambda^{k} X^{-1}),X 矩阵中的列向量(A 的特征向量)保持不变;
  3. (A^k)的特征值为(\Lambda^{k})对角线上的值,分别为(\lambda{1}^{k},\lambda{2}^{k},…,\lambda_{n}^{k});
  4. 关于(u{k+1}=Au{k})的解法:(u_k=A^ku_0=X\Lambda^{k}X^{-1}u_0),将(u_0)用(A)的特征向量的线性组合进行表示(u_0=c_1x_1+\cdots+c_nx_n),则(u_k=c_1(\lambda_1^k)x_1+\cdots+c_n(\lambda_n^k)x_n);