如果一个数学问题要用到特征方程,那么这个问题一定可以用矩阵进行描述和求解,并且答案往往会和矩阵的任意正整数次幂有关。

而为了计算矩阵幂,我们需要对角化或约旦标准化矩阵。特征方程就是此时出现的。所有数学问题中出现的特征方程本质上都是矩阵的特征方程。

后文将以常系数线性微分方程和常系数线性差分方程这两个问题为例阐明上述的话究竟是什么意思。为了不偏离主题,我们只讨论齐次的情况。

常系数线性齐次微分方程

用矩阵描述常系数线性齐次微分方程

任意高阶的线性齐次微分方程,都可通过下述方法转化为等价的一阶线性齐次微分方程组。

以三阶线性齐次微分方程为例

已知 x(0)x(0)x(0)x'(0)x(0)x''(0),求 x(t)x(t) 满足

x(t)=ax(t)+bx(t)+cx(t)x'''(t) = ax(t) + bx'(t) + cx''(t)

可令

x0(t)=x(t)x1(t)=x(t)x2(t)=x(t)\begin{align*} x_0(t) &= x(t) \\ x_1(t) &= x'(t) \\ x_2(t) &= x''(t) \end{align*}

从而将问题改写为如下形式

已知 x0(0)x_0(0)x1(0)x_1(0)x2(0)x_2(0),求 x0(t)x_0(t)x1(t)x_1(t)x2(t)x_2(t) 满足

x0(t)=x1(t)x1(t)=x2(t)x2(t)=ax0(t)+bx1(t)+cx2(t)\begin{align*} x_0'(t) &= x_1(t) \\x_1'(t) &= x_2(t) \\ x_2'(t) &= ax_0(t) + bx_1(t) + cx_2(t) \end{align*}

因此一阶线性齐次微分方程组是比高阶线性齐次微分方程更一般的情况,我们先重点讨论前者,最后再专门讲下后者。

现在用矩阵来描述我们要讨论的问题

已知 x(0)\mathbf{x}(0),求 x(t)\mathbf{x}(t) 满足如下方程

x(t)=Ax(t)\mathbf{x}'(t) = \mathbf{A} \mathbf{x}(t)

其中 x(t)=[x0(t)x1(t)xn1(t)]\mathbf{x}(t) = \begin{bmatrix} x_0(t)\\ x_1(t) \\ \dots \\ x_{n-1}(t) \\ \end{bmatrix} 称为向量值函数,对每一个确定的 ttx(t)\mathbf{x}(t) 为一个 n×1n\times1 的列向量;x(t)=[x0(t)x1(t)xn1(t)]\mathbf{x}'(t) = \begin{bmatrix} x_0'(t) \\ x_1'(t) \\ \dots \\ x_{n-1}'(t) \\ \end{bmatrix} 表示对 x(t)\mathbf{x}(t) 的每一个分量分别求导;A=[a11a12a1na21a22a2nan1an2ann]\mathbf{A} = \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \dots & \dots & \dots & \dots\\ a_{n1} & a_{n2} & \dots & a_{nn} \end{bmatrix} 称为系数矩阵,大小为 n×nn\times n

至此我们成功地用矩阵描述了问题。

用矩阵求解常系数线性齐次微分方程

在求解该方程组之前,我们先回顾一下单个方程该如何求解

已知 x(0){x}(0),求 x(t)x(t) 满足

x(t)=ax(t)x'(t) = a x(t)

假设我们还不知道该解的一般形式,不知道什么是特征方程,也不知道什么是 exe^x,甚至不知道该怎么用分离变量法得到 1xdx\int \frac{1}{x} \mathrm{d}x 这种形式。

在微分方程中有一种很重要的解法——幂级数求解法,该方法简述如下

  1. 假设解可以用幂级数表示,即 x(t)=i=0aitix(t) = \sum_{i=0}^{\infty}a_it^i
  2. 将该幂级数代入原微分方程,并结合已知条件,求出 aia_i 的通项公式
  3. aia_i 代回到幂级数中,判断该级数的收敛性质

我们试着用此方法来求解上述的微分方程

首先,假设解可用幂级数表示

x(t)=i=0aitix(t) = \sum_{i=0}^{\infty}a_it^i

然后,将其代入微分方程中

(i=0aiti)=ai=0aitii=0(i+1)ai+1ti=ai=0aitii=0[(i+1)ai+1aai]ti=0\begin{align*} (\sum_{i=0}^{\infty}a_it^i)' &= a\sum_{i=0}^{\infty}a_it^i \\ \sum_{i=0}^{\infty}(i+1)a_{i+1}t^i &= a\sum_{i=0}^{\infty}a_it^i\\ \sum_{i=0}^{\infty}[(i+1)a_{i+1}-aa_i]t^i &= 0 \end{align*}

由于 tt 是一个变量,而该方程对任意 tt 都成立,因此有

(i+1)ai+1aai=0(i+1)a_{i+1}-aa_i = 0

接着,以此递推关系求 aia_i 的通项公式

ai=aiai1=aiai1ai2==aii!a0a_i = \frac{a}{i}a_{i-1}= \frac{a}{i}\frac{a}{i-1}a_{i-2} = \dots =\frac{a^i}{i!}a_0

a0=x(0)a_0=x(0) 正好是已知条件,因此

ai=aii!x(0)a_i = \frac{a^i}{i!}x(0)

最后,将 aia_i 代回到幂级数中

x(t)=i=0aiti=i=0aii!x(0)ti=(i=0(at)ii!)x(0)x(t) = \sum_{i=0}^{\infty}a_it^i = \sum_{i=0}^{\infty} \frac{a^i}{i!}x(0)t^i =(\sum_{i=0}^{\infty} \frac{(at)^i}{i!})x(0)

对于 i=0(at)ii!\sum_{i=0}^{\infty} \frac{(at)^i}{i!} 这个级数,我们令 u=atu=at,并用 f(u)=i=0uii!f(u)=\sum_{i=0}^{\infty} \frac{u^i}{i!} 表示它,以便研究它的性质。可以证明

  • f(u)f(u) 在整个实数域上收敛
  • f(0)=1f(0) = 1
  • f(u1+u2)=f(u1)f(u2)f(u_1 + u_2) = f(u_1)f(u_2)

这个函数其实就是指数函数。如果定义 e=f(1)=i=01i!e=f(1)=\sum_{i=0}^{\infty} \frac{1}{i!},那么我们就得到了这个指数函数的底数,从而可以方便地把 f(u)f(u) 表示为 eue^u 这一更简洁的形式。

回到刚才的问题,使用新的定义,我们的答案为

已知 x(0){x}(0),求 x(t)x(t) 满足

x(t)=ax(t)x'(t) = a x(t)

该微分方程的解为

x(t)=eatx(0)x(t) = e^{at}x(0)

再回到方程组的情况,我们的求解方法是一样的

首先,假设解可用幂级数表示

x(t)=[x0(t)x1(t)xn1(t)]=[i=0a0,itii=0a1,itii=0an1,iti]=i=0[a0,ia1,ian1,i]ti\mathbf{x}(t) = \begin{bmatrix} x_0(t) \\ x_1(t) \\ \dots \\ x_{n-1}(t) \\ \end{bmatrix} = \begin{bmatrix} \sum_{i=0}^{\infty}a_{0,i}t^i \\ \sum_{i=0}^{\infty}a_{1,i}t^i \\ \dots \\ \sum_{i=0}^{\infty}a_{n-1,i}t^i \\ \end{bmatrix} = \sum_{i=0}^{\infty} \begin{bmatrix} a_{0,i} \\ a_{1,i} \\ \dots \\ a_{n-1,i} \\ \end{bmatrix}t^i

ai=[a0,ia1,ian1,i]\mathbf{a}_i = \begin{bmatrix} a_{0,i} \\ a_{1,i} \\ \dots \\ a_{n-1,i} \\ \end{bmatrix}

x(t)\mathbf{x}(t) 可简写为

x(t)=i=0aiti\mathbf{x}(t) = \sum_{i=0}^{\infty}\mathbf{a}_it^i

然后,将其代入微分方程组中

(i=0aiti)=Ai=0aitii=0(i+1)ai+1ti=Ai=0aitii=0[(i+1)ai+1Aai]ti=0\begin{align*} (\sum_{i=0}^{\infty}\mathbf{a}_it^i)' &= \mathbf{A}\sum_{i=0}^{\infty}\mathbf{a}_it^i \\ \sum_{i=0}^{\infty}(i+1)\mathbf{a}_{i+1}t^i &= \mathbf{A}\sum_{i=0}^{\infty}\mathbf{a}_it^i\\ \sum_{i=0}^{\infty}[(i+1)\mathbf{a}_{i+1}-\mathbf{A}\mathbf{a}_i]t^i &= \mathbf0 \end{align*}

由于 tt 是一个变量,而该方程对任意 tt 都成立,因此有

(i+1)ai+1Aai=0(i+1)\mathbf{a}_{i+1}-\mathbf{A}\mathbf{a}_i = \mathbf0

接着,以此递推关系求 ai\mathbf{a}_i 的通项公式

ai=Aiai1=AiAi1ai2==Aii!a0\mathbf{a}_i = \frac{\mathbf{A}}{i}\mathbf{a}_{i-1}= \frac{\mathbf{A}}{i}\frac{\mathbf{A}}{i-1}\mathbf{a}_{i-2} = \dots =\frac{\mathbf{A}^i}{i!}\mathbf{a}_0

a0=x(0)\mathbf{a}_0=\mathbf{x}(0),正好是已知条件,因此

ai=Aii!x(0)\mathbf{a}_i = \frac{\mathbf{A}^i}{i!}\mathbf{x}(0)

最后,将 ai\mathbf{a}_i 代回到幂级数中

x(t)=i=0aiti=i=0Aii!x(0)ti=(i=0Aii!ti)x(0)\mathbf{x}(t) = \sum_{i=0}^{\infty}\mathbf{a}_it^i = \sum_{i=0}^{\infty} \frac{\mathbf{A}^i}{i!}\mathbf{x}(0)t^i =(\sum_{i=0}^{\infty} \frac{\mathbf{A}^i}{i!}t^i)\mathbf{x}(0)

级数 i=0Aii!ti\sum_{i=0}^{\infty} \frac{\mathbf{A}^i}{i!}t^ieate^{at} 的幂级数展开形式非常相似!因此我们可以试着定义矩阵指数

eA=i=0Aii!e^{\mathbf{A}}=\sum_{i=0}^{\infty} \frac{\mathbf{A}^i}{i!}

于是

eAt=i=0(At)ii!=i=0Aii!tie^{\mathbf{A}t}=\sum_{i=0}^{\infty} \frac{\mathbf{(At)}^i}{i!}=\sum_{i=0}^{\infty} \frac{\mathbf{A}^i}{i!}t^i

有了这个定义后,解就变得更简洁了

已知 x(0)\mathbf{x}(0),求 x(t)\mathbf{x}(t) 满足

x(t)=Ax(t)\mathbf{x}'(t) = \mathbf{A} \mathbf{x}(t)

该微分方程组的解为

x(t)=eAtx(0)\mathbf{x}(t) = e^{\mathbf{A}t}\mathbf{x}(0)

至此我们成功地将解表示为了一个与矩阵有关的形式。

计算矩阵幂

先别高兴得太早,这样的结果我们肯定是不满意的。

目前最严重的问题是:根据定义,eAte^{\mathbf{A}t} 实在太难算了!eAte^{\mathbf{A}t} 中包含了矩阵的任意正整数次幂,而对于一般的 n×nn\times n 矩阵,直接计算 Am\mathbf{A}^m 需要 O(mn3)O(mn^3) 的时间复杂度。如果不借助计算机,我们很难判断该级数大概会收敛到哪里。

因此,我们需要用一些方法来简化计算。不过,为了便于教学,同时也是因为用 LaTeX\LaTeX 打矩阵实在太麻烦了,后面都以 2×22\times2 矩阵举例。

我们知道有一种矩阵非常容易计算任意正整数次幂

如果

D=[λ100λ2]\mathbf{D} = \begin{bmatrix} \lambda_1&0\\ 0&\lambda_2 \end{bmatrix}

那么

Dn=[λ1n00λ2n]\mathbf{D}^n = \begin{bmatrix} \lambda_1^n&0\\ 0&\lambda_2^n \end{bmatrix}

从而

eDt=n=0Dnn!tn=n=0[λ1n00λ2n]n!tn=[n=0λ1nn!tn00n=0λ2nn!tn]=[eλ1t00eλ2t]\begin{align*} e^{\mathbf{D}t} &= \sum_{n=0}^{\infty} \frac{\mathbf{D}^n}{n!}t^n \\ &= \sum_{n=0}^{\infty} \frac{\begin{bmatrix} \lambda_1^n&0\\ 0&\lambda_2^n \end{bmatrix}}{n!}t^n \\ &= \begin{bmatrix}\sum_{n=0}^{\infty}\frac{ \lambda_1^n}{n!}t^n&0\\ 0&\sum_{n=0}^{\infty}\frac{ \lambda_2^n}{n!}t^n \end{bmatrix} \\ &=\begin{bmatrix} e^{\lambda_1t}&0\\ 0&e^{\lambda_2t} \end{bmatrix} \end{align*}

当然,大多数时候我们遇到的矩阵并没有这么简单。不过,线性代数为我们提供了一种对角化矩阵的方法

A\mathbf{A} 进行对角化,意思是将其表示为

A=PDP1\mathbf{A} = \mathbf{P}\mathbf{D}\mathbf{P^{-1}}

其中 D=[λ100λ2]\mathbf{D} = \begin{bmatrix} \lambda_1&0\\ 0&\lambda_2 \end{bmatrix} 为对角矩阵,P=[v1v2]\mathbf{P}=\begin{bmatrix} \mathbf{v}_1 & \mathbf{v}_2 \end{bmatrix} 为可逆矩阵,λ1\lambda_1λ2\lambda_2A\mathbf{A} 的特征值,v1\mathbf{v}_1v2\mathbf{v}_2A\mathbf{A} 的特征向量

对角化后的矩阵也可以方便地求解任意正整数次幂,从而计算出 eAte^{\mathbf{A}t},最后得到 x(t)\mathbf{x}(t)

A\mathbf{A} 已对角化,则

An=PDP1PDP1PDP1=PDnP1\mathbf{A}^n = \mathbf{P}\mathbf{D}\mathbf{P^{-1}} \mathbf{P}\mathbf{D}\mathbf{P^{-1}} \dots \mathbf{P}\mathbf{D}\mathbf{P^{-1}} =\mathbf{P}\mathbf{D}^n\mathbf{P^{-1}}

从而

eAt=n=0Ann!tn=n=0PDnP1n!tn=Pn=0Dnn!tnP1=P[eλ1t00eλ2t]P1=[v1eλ1tv2eλ2t]P1\begin{align*} e^{\mathbf{A}t} &= \sum_{n=0}^{\infty} \frac{\mathbf{A}^n}{n!}t^n \\ &=\sum_{n=0}^{\infty} \frac{\mathbf{P}\mathbf{D}^n\mathbf{P^{-1}}}{n!}t^n \\ &= \mathbf{P}\sum_{n=0}^{\infty} \frac{\mathbf{D}^n}{n!}t^n \mathbf{P^{-1}}\\ &= \mathbf{P} \begin{bmatrix} e^{\lambda_1t} & 0\\ 0 & e^{\lambda_2t} \end{bmatrix}\mathbf{P^{-1}} \\ &= \begin{bmatrix} \mathbf{v}_1e^{\lambda_1t} & \mathbf{v}_2 e^{\lambda_2t}\end{bmatrix}\mathbf{P^{-1}} \end{align*}

P1x(0)=[c1c2]\mathbf{P^{-1}}\mathbf{x}(0)=\begin{bmatrix} c_1 \\ c_2 \end{bmatrix}

则解为

x(t)=eAtx(0)=[v1eλ1tv2eλ2t]P1x(0)=[v1eλ1tv2eλ2t][c1c2]=c1v1eλ1t+c2v2eλ2t\begin{align*} \mathbf{x}(t) &= e^{\mathbf{A}t}\mathbf{x}(0)\\ &= \begin{bmatrix} \mathbf{v}_1e^{\lambda_1t} & \mathbf{v}_2 e^{\lambda_2t}\end{bmatrix}\mathbf{P^{-1}}\mathbf{x}(0) \\ &=\begin{bmatrix} \mathbf{v}_1e^{\lambda_1t} & \mathbf{v}_2 e^{\lambda_2t}\end{bmatrix}\begin{bmatrix} c_1 \\ c_2 \end{bmatrix} \\ &= c_1\mathbf{v}_1e^{\lambda_1t} +c_2 \mathbf{v}_2 e^{\lambda_2t} \end{align*}

可以看到,x(t)\mathbf{x}(t)v1eλ1t\mathbf{v}_1e^{\lambda_1t}v2eλ2t\mathbf{v}_2e^{\lambda_2t} 这两个向量值函数的线性组合。这个结论很有用,后续会再提到,届时将借此简化计算过程

而要对矩阵进行对角化,就要求出特征值;而要求特征值,就要列出特征方程。特征方程就是此时出现的。鉴于大多数的线性代数课程都会介绍对角化的方法,故此处不再赘述,只举一个简单的例子

对于系数矩阵

A=[2112]\mathbf{A} = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}

特征方程为

det[2λ112λ]=0\det \begin{bmatrix} 2-\lambda & 1 \\ 1 & 2-\lambda \end{bmatrix}=0

展开行列式得到

λ24λ+3=0\lambda^2-4\lambda+3=0

解得

λ1=1,λ2=3\lambda_1=1, \lambda_2=3

对应的特征向量为

v1=[11],v2=[11]\mathbf{v}_1 = \begin{bmatrix} -1 \\ 1 \end{bmatrix},\mathbf{v}_2 = \begin{bmatrix} 1 \\ 1 \end{bmatrix}

对角化得到

A=[1111][1003][12121212]\mathbf{A} = \begin{bmatrix} -1 & 1 \\ 1 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 \\ 0 & 3 \end{bmatrix} \begin{bmatrix} -\frac{1}{2} & \frac{1}{2} \\ \frac{1}{2} & \frac{1}{2} \end{bmatrix}

从而

eAt=[v1eλ1tv2eλ2t]P1=[[11]et[11]e3t][12121212]e^{\mathbf{A}t}=\begin{bmatrix} \mathbf{v}_1e^{\lambda_1t} & \mathbf{v}_2 e^{\lambda_2t}\end{bmatrix}\mathbf{P^{-1}}= \begin{bmatrix} \begin{bmatrix} -1\\ 1 \end{bmatrix}e^t &\begin{bmatrix} 1\\ 1 \end{bmatrix}e^{3t}\end{bmatrix} \begin{bmatrix} -\frac{1}{2} & \frac{1}{2} \\ \frac{1}{2} & \frac{1}{2} \end{bmatrix}

该微分方程组的解为

x(t)=[[11]et[11]e3t][12121212]x(0)\mathbf{x}(t) = \begin{bmatrix} \begin{bmatrix} -1\\ 1 \end{bmatrix}e^t &\begin{bmatrix} 1\\ 1 \end{bmatrix}e^{3t}\end{bmatrix} \begin{bmatrix} -\frac{1}{2} & \frac{1}{2} \\ \frac{1}{2} & \frac{1}{2} \end{bmatrix}\mathbf{x}(0)

将已知条件 x(0)=[x0x1]\mathbf{x}(0)= \begin{bmatrix} x_0\\ x_1 \end{bmatrix} 代入有

x(t)=[[11]et[11]e3t][12x0+12x112x0+12x1]=(12x0+12x1)[11]et+(12x0+12x1)[11]e3t\begin{align*} \mathbf{x}(t) &=\begin{bmatrix} \begin{bmatrix} -1\\ 1 \end{bmatrix}e^t &\begin{bmatrix} 1\\ 1 \end{bmatrix}e^{3t}\end{bmatrix} \begin{bmatrix} -\frac{1}{2}x_0 + \frac{1}{2}x_1 \\ \frac{1}{2}x_0 + \frac{1}{2}x_1 \end{bmatrix}\\ &=(-\frac{1}{2}x_0 + \frac{1}{2}x_1)\begin{bmatrix} -1\\ 1 \end{bmatrix}e^t+ (\frac{1}{2}x_0 + \frac{1}{2}x_1 )\begin{bmatrix} 1\\ 1 \end{bmatrix}e^{3t} \end{align*}

可以看到,不管怎样改变 x(0)\mathbf{x}(0),解始终是 [11]et\begin{bmatrix} -1\\ 1 \end{bmatrix}e^t[11]e3t\begin{bmatrix} 1\\ 1 \end{bmatrix}e^{3t} 这两个向量值函数的线性组合。这符合我们之前发现的结论

然而,当特征方程存在复根或重根的时候,处理过程会有些不同。

出现复根时,需要使用欧拉公式进行化简

对于实系数矩阵 A\mathbf{A},若其特征方程出现复根,则复根必定是成对出现的,且两者互为共轭复数。对于 2×22\times 2 的实系数矩阵,不妨设为

λ1=a+ib,λ2=aib\lambda_1=a+ib , \lambda_2 = a - ib

此时复特征值对应的复特征向量也互为共轭复向量,设为

v1=a+ib,v2=aib\mathbf{v}_1=\mathbf{a}+i\mathbf{b},\mathbf{v}_2=\mathbf{a}-i\mathbf{b}

复特征值和复特征向量并不会影响对角化,即同样有

A=PDP1\mathbf{A} = \mathbf{P}\mathbf{D}\mathbf{P^{-1}}

直接把之前的结论可以照搬过来

eAt=[v1eλ1tv2eλ2t]P1e^{\mathbf{A}t}=\begin{bmatrix} \mathbf{v}_1e^{\lambda_1t} & \mathbf{v}_2 e^{\lambda_2t}\end{bmatrix}\mathbf{P^{-1}}

运用欧拉公式,有

v1eλ1t=(a+ib)e(a+ib)t=(a+ib)eat(cosbt+isinbt)=(acosbtbsinbt)eat+i(asinbt+bcosbt)eatv2eλ2t=(aib)e(aib)t=(aib)eat(cosbtisinbt)=(acosbtbsinbt)eati(asinbt+bcosbt)eat\begin{align*} \mathbf{v}_1e^{\lambda_1t} &=(\mathbf{a}+i\mathbf{b})e^{(a+ib)t}\\ &=(\mathbf{a}+i\mathbf{b})e^{at}(\cos bt +i \sin bt) \\ &=(\mathbf{a}\cos bt-\mathbf{b}\sin bt)e^{at}+i(\mathbf{a} \sin bt + \mathbf{b}\cos bt)e^{at} \\ \mathbf{v}_2e^{\lambda_2t} &=(\mathbf{a}-i\mathbf{b})e^{(a-ib)t}\\ &=(\mathbf{a}-i\mathbf{b})e^{at}(\cos bt -i \sin bt)\\ &=(\mathbf{a}\cos bt-\mathbf{b}\sin bt)e^{at}-i(\mathbf{a} \sin bt + \mathbf{b}\cos bt)e^{at} \end{align*}

不出意料,v1eλ1t\mathbf{v}_1e^{\lambda_1t}v2eλ2t\mathbf{v}_2e^{\lambda_2t} 也互为共轭的复向量值函数。不妨令 v1eλ1t\mathbf{v}_1e^{\lambda_1t} 的实部为 fRe(t)\mathbf{f}_{Re}(t),虚部为 fIm(t)\mathbf{f}_{Im}(t),即

fRe(t)=(acosbtbsinbt)eatfIm(t)=(asinbt+bcosbt)eat\begin{align*} \mathbf{f}_{Re}(t)&=(\mathbf{a}\cos bt-\mathbf{b}\sin bt)e^{at}\\ \mathbf{f}_{Im}(t)&=(\mathbf{a} \sin bt + \mathbf{b}\cos bt)e^{at} \end{align*}

从而

eAt=[fRe(t)+ifIm(t)fRe(t)ifIm(t)]P1=([fRe(t)fRe(t)]+[ifIm(t)ifIm(t)])P1=(fRe(t)[11]+fIm(t)[ii])P1=fRe(t)[11]P1+fIm(t)[ii]P1\begin{align*} e^{\mathbf{A}t} &=\begin{bmatrix} \mathbf{f}_{Re}(t)+i\mathbf{f}_{Im}(t) & \mathbf{f}_{Re}(t) -i\mathbf{f}_{Im}(t)\end{bmatrix}\mathbf{P^{-1}}\\ &=(\begin{bmatrix} \mathbf{f}_{Re}(t) & \mathbf{f}_{Re}(t)\end{bmatrix} +\begin{bmatrix} i\mathbf{f}_{Im}(t) & -i\mathbf{f}_{Im}(t)\end{bmatrix}) \mathbf{P^{-1}}\\ &=(\mathbf{f}_{Re}(t)\begin{bmatrix} 1 & 1\end{bmatrix} +\mathbf{f}_{Im}(t)\begin{bmatrix} i & -i\end{bmatrix}) \mathbf{P^{-1}}\\ &=\mathbf{f}_{Re}(t)\begin{bmatrix} 1 & 1\end{bmatrix}\mathbf{P^{-1}} +\mathbf{f}_{Im}(t) \begin{bmatrix} i & -i\end{bmatrix} \mathbf{P^{-1}} \end{align*}

由于 A\mathbf{A} 是实系数矩阵,因此 eAte^{\mathbf{A}t} 也是个实矩阵,继而 [11]P1\begin{bmatrix} 1 & 1\end{bmatrix}\mathbf{P^{-1}}[ii]P1\begin{bmatrix} i & -i\end{bmatrix} \mathbf{P^{-1}} 是实的行向量。于是设

[11]P1x(0)=c1[ii]P1x(0)=c2\begin{align*} \begin{bmatrix} 1 & 1\end{bmatrix}\mathbf{P^{-1}} \mathbf{x}(0)&=c_1\\ \begin{bmatrix} i & -i\end{bmatrix}\mathbf{P^{-1}} \mathbf{x}(0)&=c_2 \end{align*}

则解为

x(t)=eAtx(0)=(fRe(t)[11]P1+fIm(t)[ii]P1)x(0)=fRe(t)[11]P1x(0)+fIm(t)[ii]P1x(0)=c1fRe(t)+c2fIm(t)\begin{align*} \mathbf{x}(t) &= e^{\mathbf{A}t}\mathbf{x}(0)\\ &=(\mathbf{f}_{Re}(t)\begin{bmatrix} 1 & 1\end{bmatrix}\mathbf{P^{-1}} +\mathbf{f}_{Im}(t) \begin{bmatrix} i & -i\end{bmatrix} \mathbf{P^{-1}})\mathbf{x}(0)\\ &=\mathbf{f}_{Re}(t)\begin{bmatrix} 1 & 1\end{bmatrix}\mathbf{P^{-1}} \mathbf{x}(0)+\mathbf{f}_{Im}(t) \begin{bmatrix} i & -i\end{bmatrix} \mathbf{P^{-1}}\mathbf{x}(0)\\ &=c_1\mathbf{f}_{Re}(t) +c_2 \mathbf{f}_{Im}(t) \end{align*}

可以看到,x(t)\mathbf{x}(t)fRe(t)\mathbf{f}_{Re}(t)fIm(t)\mathbf{f}_{Im}(t) 这两个向量值函数的线性组合。这个结论同样重要,后续会再次提到

下面举个具体的例子

对于实系数矩阵

A=[1111]\mathbf{A} = \begin{bmatrix} 1 & -1 \\ 1 & 1 \end{bmatrix}

其特征方程为

λ22λ+2=0\lambda^2-2\lambda+2=0

解得

λ1=1i,λ2=1+i\lambda_1=1-i,\lambda_2=1+i

注意到实部和虚部分别为

a=1,b=1a=1,b=-1

对应的特征向量为

v1=[i1],v2=[i1]\mathbf{v}_1=\begin{bmatrix} -i\\ 1 \end{bmatrix}, \mathbf{v}_2=\begin{bmatrix} i\\ 1 \end{bmatrix}

注意到实部和虚部分别为

a=[01],b=[10]\mathbf{a}=\begin{bmatrix} 0\\ 1 \end{bmatrix}, \mathbf{b}=\begin{bmatrix} -1\\ 0 \end{bmatrix}

于是得到

fRe(t)=(acosbtbsinbt)eat=([01]cos(t)[10]sin(t))et=[sintcost]etfIm(t)=(asinbt+bcosbt)eat=([01]sin(t)+[10]cos(t))et=[costsint]et\begin{align*} \mathbf{f}_{Re}(t) &=(\mathbf{a}\cos bt-\mathbf{b}\sin bt)e^{at}\\ &=(\begin{bmatrix} 0\\ 1 \end{bmatrix}\cos (-t)-\begin{bmatrix} -1\\ 0 \end{bmatrix}\sin (-t))e^{t}\\ &=\begin{bmatrix} -\sin t\\ \cos t \end{bmatrix}e^{t}\\ \mathbf{f}_{Im}(t) &=(\mathbf{a} \sin bt + \mathbf{b}\cos bt)e^{at}\\ &=(\begin{bmatrix} 0\\ 1 \end{bmatrix} \sin (-t) + \begin{bmatrix} -1\\ 0 \end{bmatrix}\cos (-t))e^{t}\\ &=\begin{bmatrix} -\cos t\\ -\sin t \end{bmatrix}e^{t} \end{align*}

对角化结果为

A=[ii11][1i001+i][i212i212]\mathbf{A} = \begin{bmatrix} -i & i \\ 1 & 1 \end{bmatrix} \begin{bmatrix} 1-i & 0 \\ 0 & 1+i \end{bmatrix} \begin{bmatrix} \frac{i}2 & \frac{1}2 \\ -\frac{i}2 & \frac{1}2 \end{bmatrix}

于是

eAt=fRe(t)[11]P1+fIm(t)[ii]P1=[sintcost]et[11][i212i212]+[costsint]et[ii][i212i212]=[sintcost]et[01]+[costsint]et[10]\begin{align*} e^{\mathbf{A}t} &=\mathbf{f}_{Re}(t)\begin{bmatrix} 1 & 1\end{bmatrix}\mathbf{P^{-1}} +\mathbf{f}_{Im}(t) \begin{bmatrix} i & -i\end{bmatrix} \mathbf{P^{-1}}\\ &=\begin{bmatrix} -\sin t\\ \cos t \end{bmatrix}e^{t} \begin{bmatrix} 1& 1 \end{bmatrix} \begin{bmatrix} \frac{i}2 & \frac{1}2 \\ -\frac{i}2 & \frac{1}2 \end{bmatrix} + \begin{bmatrix} -\cos t\\ -\sin t \end{bmatrix}e^{t} \begin{bmatrix} i& -i \end{bmatrix} \begin{bmatrix} \frac{i}2 & \frac{1}2 \\ -\frac{i}2 & \frac{1}2 \end{bmatrix}\\ &=\begin{bmatrix} -\sin t\\ \cos t \end{bmatrix}e^{t} \begin{bmatrix} 0& 1 \end{bmatrix} + \begin{bmatrix} -\cos t\\ -\sin t \end{bmatrix}e^{t} \begin{bmatrix} -1& 0 \end{bmatrix} \end{align*}

该微分方程组的解为

x(t)=([sintcost]et[01]+[costsint]et[10])x(0)\mathbf{x}(t)= (\begin{bmatrix} -\sin t\\ cos t \end{bmatrix}e^{t} \begin{bmatrix} 0& 1 \end{bmatrix} + \begin{bmatrix} -\cos t\\ -\sin t \end{bmatrix}e^{t} \begin{bmatrix} -1& 0 \end{bmatrix})\mathbf{x}(0)

将已知条件 x(0)=[x0x1]\mathbf{x}(0)= \begin{bmatrix} x_0\\ x_1 \end{bmatrix} 代入有

x(t)=x1[sintcost]etx0[costsint]et\mathbf{x}(t)=x_1\begin{bmatrix} -\sin t\\ \cos t \end{bmatrix}e^{t} -x_0\begin{bmatrix} -\cos t\\ -\sin t \end{bmatrix}e^{t}

同样地,我们看到,不管怎样改变 x(0)\mathbf{x}(0),方程的解始终是 [sintcost]et\begin{bmatrix} -\sin t\\ \cos t \end{bmatrix}e^t[costsint]et\begin{bmatrix} -\cos t\\ -\sin t \end{bmatrix}e^{t} 这两个向量值函数的线性组合。这符合我们之前发现的结论

最麻烦的是出现重根的时候,矩阵在这一情形下无法对角化。不过,不管什么矩阵都可以进行约旦标准化

A\mathbf{A} 进行约旦标准化,意思是将其表示为

A=PJP1\mathbf{A} = \mathbf{P}\mathbf{J}\mathbf{P^{-1}}

其中 J=D+N\mathbf{J}=\mathbf{D} + \mathbf{N} 为约旦标准型矩阵,D=[λ100λ2]\mathbf{D} = \begin{bmatrix} \lambda_1&0\\ 0&\lambda_2 \end{bmatrix} 为对角矩阵,N\mathbf{N} 为幂零矩阵,P=[v1v2]\mathbf{P}=\begin{bmatrix} \mathbf{v}_1 & \mathbf{v}_2 \end{bmatrix} 为可逆矩阵,λ1\lambda_1λ2\lambda_2A\mathbf{A} 的特征值,v1\mathbf{v}_1v2\mathbf{v}_2 分别为 A\mathbf{A} 的特征向量和广义特征向量。

显然这里最特殊的就是 N\mathbf{N}。对于 2×22\times 2 的系数矩阵,其有两种可能的值

N=[0000],N=[0100]\mathbf{N} = \begin{bmatrix} 0&0\\0&0 \end{bmatrix}, \mathbf{N} = \begin{bmatrix} 0&1\\0&0 \end{bmatrix}

对于前一种情形,约旦标准型矩阵同时也是对角矩阵,可以沿用之前的结论,故下文只讨论后一种情形

约旦标准化同样可以简化矩阵幂的计算,并最终得到方程的解

当约旦标准化处于后一种情形时,意味着特征方程出现了重根,即

λ1=λ2=λ\lambda_1=\lambda_2=\lambda

从而将对角矩阵改写为

D=λI\mathbf{D}=\lambda\mathbf{I}

假设 A\mathbf{A} 已约旦标准化,则

An=PJP1PJP1PJP1=PJnP1\mathbf{A}^n=\mathbf{P}\mathbf{J}\mathbf{P^{-1}}\mathbf{P}\mathbf{J}\mathbf{P^{-1}}\dots \mathbf{P}\mathbf{J}\mathbf{P^{-1}} =\mathbf{P}\mathbf{J^n}\mathbf{P^{-1}}

Jn\mathbf{J^n} 可用二项式展开进行计算

Jn=(λI+N)n=k=0n(nk)(λI)nkNk\mathbf{J^n}=(\lambda \mathbf{I}+\mathbf{N})^n =\sum_{k=0}^n\binom{n}{k} (\lambda \mathbf{I})^{n-k}\mathbf{N}^k

k>1k>1 时,Nk=0\mathbf{N}^k = \mathbf{0},于是

Jn=λnI+nλn1N=[λnnλn10λn]\mathbf{J^n}=\lambda^n\mathbf{I}+n\lambda^{n-1}\mathbf{N} =\begin{bmatrix} \lambda^n&n\lambda^{n-1}\\0&\lambda^n \end{bmatrix}

进一步计算得

n=0Jnn!tn=n=0[λnnλn10λn]n!tn=[n=0λntnn!n=0nλn1tnn!0n=0λntnn!]\sum_{n=0}^{\infty}\frac{\mathbf{J^n}}{n!}t^n =\sum_{n=0}^{\infty} \frac{ \begin{bmatrix} \lambda^n&n\lambda^{n-1}\\ 0&\lambda^n \end{bmatrix} }{n!}t^n =\begin{bmatrix}\sum_{n=0}^{\infty}\frac{ \lambda^nt^n}{n!}&\sum_{n=0}^{\infty}\frac{ n\lambda^{n-1}t^{n}}{n!}\\ 0&\sum_{n=0}^{\infty}\frac{ \lambda^nt^n}{n!} \end{bmatrix}

其中

n=0nλn1tnn!=tn=1λn1tn1(n1)!=tm=0λmtmm!=teλt\sum_{n=0}^{\infty}\frac{ n\lambda^{n-1}t^{n}}{n!}=t\sum_{n=1}^{\infty}\frac{ \lambda^{n-1}t^{n-1}}{(n-1)!}=t\sum_{m=0}^{\infty}\frac{ \lambda^{m}t^{m}}{m!}=te^{\lambda t}

于是

n=0Jnn!tn=[eλtteλt0eλt]\sum_{n=0}^{\infty}\frac{\mathbf{J^n}}{n!}t^n=\begin{bmatrix} e^{\lambda t} & te^{\lambda t}\\ 0 & e^{\lambda t} \end{bmatrix}

从而

eAt=n=0Ann!tn=n=0PJnP1n!tn=Pn=0Jnn!tnP1=P[eλtteλt0eλt]P1=[v1eλtv1teλt+v2eλt]P1\begin{align*} e^{\mathbf{A}t} &=\sum_{n=0}^{\infty} \frac{\mathbf{A}^n}{n!}t^n \\ &=\sum_{n=0}^{\infty} \frac{\mathbf{P}\mathbf{J}^n\mathbf{P^{-1}}}{n!}t^n \\ &=\mathbf{P}\sum_{n=0}^{\infty}\frac{\mathbf{J^n}}{n!}t^n \mathbf{P^{-1}}\\ &= \mathbf{P} \begin{bmatrix} e^{\lambda t} & te^{\lambda t}\\ 0 & e^{\lambda t} \end{bmatrix} \mathbf{P^{-1}}\\ &=\begin{bmatrix} \mathbf{v}_1e^{\lambda t} & \mathbf{v}_1te^{\lambda t}+ \mathbf{v}_2 e^{\lambda t}\end{bmatrix}\mathbf{P^{-1}} \end{align*}

P1x(0)=[c1c2]\mathbf{P^{-1}}\mathbf{x}(0)=\begin{bmatrix} c_1 \\ c_2 \end{bmatrix}

则解为

x(t)=eAtx(0)=[v1eλtv1teλt+v2eλt]P1x(0)=[v1eλtv1teλt+v2eλt][c1c2]=c1v1eλt+c2(v1teλt+v2eλt)\begin{align*} \mathbf{x}(t) &= e^{\mathbf{A}t}\mathbf{x}(0)\\ &= \begin{bmatrix} \mathbf{v}_1e^{\lambda t} & \mathbf{v}_1te^{\lambda t}+ \mathbf{v}_2 e^{\lambda t}\end{bmatrix}\mathbf{P^{-1}}\mathbf{x}(0)\\ &= \begin{bmatrix} \mathbf{v}_1e^{\lambda t} & \mathbf{v}_1te^{\lambda t}+ \mathbf{v}_2 e^{\lambda t}\end{bmatrix}\begin{bmatrix} c_1 \\ c_2 \end{bmatrix}\\ &=c_1\mathbf{v}_1e^{\lambda t} +c_2 (\mathbf{v}_1te^{\lambda t}+\mathbf{v}_2 e^{\lambda t}) \end{align*}

可以看到,x(t)\mathbf{x}(t)v1eλ1t\mathbf{v}_1e^{\lambda_1t}v1teλt+v2eλt\mathbf{v}_1te^{\lambda t}+\mathbf{v}_2 e^{\lambda t} 这两个向量值函数的线性组合。这个结论也是非常有用的,后续会再次提到

这里不介绍约旦标准化的具体步骤,感兴趣者可自行了解。下面列举一个简单的例子

对于系数矩阵

A=[1113]\mathbf{A} = \begin{bmatrix} 1 & 1 \\ -1 & 3 \end{bmatrix}

特征方程为

λ24λ+4=0\lambda^2-4\lambda+4=0

解得

λ1=λ2=2\lambda_1=\lambda_2=2

特征方程出现了重根,尝试进行约旦标准化,得到

A=[1110][2102][0111]\mathbf{A} = \begin{bmatrix} -1 & 1 \\ -1 & 0 \end{bmatrix} \begin{bmatrix} 2 & 1 \\ 0 & 2 \end{bmatrix} \begin{bmatrix} 0 & -1 \\ 1 & -1 \end{bmatrix}

于是

eAt=[v1eλtv1teλt+v2eλt]P1=[[11]e2t[11]te2t+[10]e2t][0111]\begin{align*} e^{\mathbf{A}t} &= \begin{bmatrix} \mathbf{v}_1e^{\lambda t} & \mathbf{v}_1te^{\lambda t}+ \mathbf{v}_2 e^{\lambda t}\end{bmatrix}\mathbf{P^{-1}}\\ &=\begin{bmatrix} \begin{bmatrix} -1 \\ -1 \end{bmatrix} e^{2t} &\begin{bmatrix} -1 \\ -1 \end{bmatrix} te^{2t}+\begin{bmatrix} 1 \\ 0 \end{bmatrix}e^{2t} \end{bmatrix} \begin{bmatrix} 0 & -1 \\ 1 & -1 \end{bmatrix} \end{align*}

该微分方程组的解为

x(t)=[[11]e2t[11]te2t+[10]e2t][0111]x(0)\mathbf{x}(t)= \begin{bmatrix} \begin{bmatrix} -1 \\ -1 \end{bmatrix} e^{2t} &\begin{bmatrix} -1 \\ -1 \end{bmatrix} te^{2t}+\begin{bmatrix} 1 \\ 0 \end{bmatrix}e^{2t} \end{bmatrix} \begin{bmatrix} 0 & -1 \\ 1 & -1 \end{bmatrix}\mathbf{x}(0)

将已知条件 x(0)=[x0x1]\mathbf{x}(0)= \begin{bmatrix} x_0\\ x_1 \end{bmatrix} 代入有

x(t)=[[11]e2t[11]te2t+[10]e2t][x1x0x1]=x1[11]e2t+(x0x1)([11]te2t+[10]e2t)\begin{align*} \mathbf{x}(t) &=\begin{bmatrix} \begin{bmatrix} -1 \\ -1 \end{bmatrix} e^{2t} &\begin{bmatrix} -1 \\ -1 \end{bmatrix} te^{2t}+\begin{bmatrix} 1 \\ 0 \end{bmatrix}e^{2t} \end{bmatrix} \begin{bmatrix} -x_1 \\ x_0 -x_1 \end{bmatrix}\\ &=-x_1\begin{bmatrix} -1 \\ -1 \end{bmatrix} e^{2t} + (x_0-x_1)(\begin{bmatrix} -1 \\ -1 \end{bmatrix} te^{2t}+\begin{bmatrix} 1 \\ 0 \end{bmatrix}e^{2t}) \end{align*}

还是一样,不管怎样改变 x(0)\mathbf{x}(0),方程的解始终为 [11]e2t\begin{bmatrix} -1 \\ -1 \end{bmatrix} e^{2t}[11]te2t+[10]e2t\begin{bmatrix} -1 \\ -1 \end{bmatrix} te^{2t}+\begin{bmatrix} 1 \\ 0 \end{bmatrix}e^{2t} 这两个向量值函数的线性组合。这同样符合我们之前的发现

常系数线性齐次微分方程求解方法总结

实际求解微分方程的时候不必像上面几个例子那样麻烦。至少有一步是可以省略的——我们不需要去求逆矩阵 P1\mathbf{P^{-1}}。下面讲述具体的原因。

基于前面的分析,我们知道了一个非常重要的事实:一阶线性齐次微分方程组的解是某些向量某些函数之积的线性组合。这些向量我们称为特征向量,这些函数我们称为特征函数,而线性组合的具体系数可以通过已知条件求得。

对于特征方程无复根和重根的情况

已知 x(0)\mathbf{x}(0),求 x(t)\mathbf{x}(t) 满足

x(t)=Ax(t)\mathbf{x}'(t) = \mathbf{A} \mathbf{x}(t)

该微分方程组的解为

x(t)=i=1ncivieλit\mathbf{x}(t)=\sum_{i=1}^n c_i\mathbf{v}_ie^{\lambda_it}

其中 λi\lambda_i 为系数矩阵 A\mathbf{A} 的特征值,vi\mathbf{v}_iλi\lambda_i 对应的特征向量,cic_i 可通过初值条件计算

因此,我们在求出特征值以及对应的特征向量后,可以直接设 x(t)=i=1ncivieλit\mathbf{x}(t)=\sum_{i=1}^n c_i\mathbf{v}_ie^{\lambda_it},然后代入初值条件解出 c1c_1c2c_2……cnc_n。有 nn 个未知系数,而初值条件 x(0)\mathbf{x}(0) 代入微分方程 x(0)=Ax(0)\mathbf{x}'(0) = \mathbf{A}\mathbf{x}(0) 后得到了 nn 个代数方程,所以总是能够算出系数的。虽然说求逆矩阵本质也是解方程组,但显然这里直接解方程组会比例题里先求 P1\mathbf{P^{-1}} 然后再用 P1\mathbf{P^{-1}}x(0)\mathbf{x}(0) 计算系数更简单。

当特征方程出现复根或重根后,情况会更复杂一点。对于 2×22\times2 的系数矩阵,前面的例子已经给出了出现复根或重根时的答案,这里再总结一下。

对于出现了复根的情况

微分方程组的解为

x(t)=c1(acosbtbsinbt)eat+c2(asinbt+bcosbt)eat\mathbf{x}(t)=c_1(\mathbf{a}\cos bt-\mathbf{b}\sin bt)e^{at} +c_2 (\mathbf{a}\sin bt+\mathbf{b}\cos bt)e^{at}

其中 aabb 分别是复特征值 λ1\lambda_1 的实部和虚部,a\mathbf{a}b\mathbf{b} 分别是复特征向量 v1\mathbf{v}_1 的实部和虚部,c1c_1c2c_2 可通过初值条件计算

对于出现了重根的情况

微分方程组的解为

x(t)=c1v1eλt+c2(v1teλt+v2eλt)\mathbf{x}(t)=c_1\mathbf{v}_1e^{\lambda t} +c_2 (\mathbf{v}_1te^{\lambda t}+\mathbf{v}_2 e^{\lambda t})

其中 λ=λ1=λ2\lambda=\lambda_1=\lambda_2 是相同的特征值,v1\mathbf{v}_1v2\mathbf{v}_2λ\lambda 对应的广义特征向量,c1c_1c2c_2 可通过初值条件计算

读者可自行研究该答案要怎么推广到更高阶的矩阵。

最后简要提一下单个的高阶线性微分方程。由于高阶方程化为等价的一阶方程组后,系数矩阵具有特殊的形式,我们可以利用这一点来得到更方便求解的结论。

还是以开头提到的三阶微分方程为例

已知 x(0)x(0)x(0)x'(0)x(0)x''(0),求 x(t)x(t) 满足

x(t)=ax(t)+bx(t)+cx(t)x'''(t) = ax(t) + bx'(t) + cx''(t)

我们已经将其转为了等价的一阶微分方程组

已知 x0(0)x_0(0)x1(0)x_1(0)x2(0)x_2(0),求 x0(t)x_0(t)x1(t)x_1(t)x2(t)x_2(t) 满足

x0(t)=x1(t)x1(t)=x2(t)x2(t)=ax0(t)+bx1(t)+cx2(t)\begin{align*} x_0'(t) &= x_1(t) \\ x_1'(t) &= x_2(t) \\ x_2'(t) &= ax_0(t) + bx_1(t) + cx_2(t) \end{align*}

可以看到,系数矩阵为

A=[010001abc]\mathbf{A}=\begin{bmatrix} 0 & 1 &0\\ 0 & 0 &1\\ a & b &c \end{bmatrix}

首先求其特征值

矩阵的特征值满足如下性质

det(AλI)=0\det(\mathbf{A}-\lambda\mathbf{I})=0

det[λ100λ1abcλ]=0\det\begin{bmatrix} -\lambda & 1 &0\\ 0 & -\lambda &1\\ a & b &c -\lambda \end{bmatrix}=0

展开行列式得到特征方程

λ3=a+bλ+cλ2\lambda^3=a+b\lambda+c\lambda^2

而原微分方程为

x(t)=ax(t)+bx(t)+cx(t)x'''(t) = ax(t) + bx'(t) + cx''(t)

我们发现,特征方程中 λn\lambda^n 的系数正好就是微分方程中 x(n)(t)x^{(n)}(t) 的系数。正是这个特殊的系数矩阵导致了这一结果。

然后我们求出对应的特征向量

设特征值 λ\lambda 对应的特征向量为

v=[v1v2v3]\mathbf{v}=\begin{bmatrix} v_1\\ v_2\\ v_3 \end{bmatrix}

Av=λv\mathbf{A}\mathbf{v}=\lambda\mathbf{v}(AλI)v=0(\mathbf{A}-\lambda\mathbf{I})\mathbf{v}=\mathbf0,即

[λ100λ1abcλ][v1v2v3]=0\begin{bmatrix} -\lambda & 1 &0\\ 0 & -\lambda &1\\ a & b &c -\lambda \end{bmatrix}\begin{bmatrix} v_1\\ v_2\\ v_3 \end{bmatrix}=\mathbf0

相乘后得到三个等式

v2=λv1v3=λv2λv3=av1+bv2+cv3\begin{align*} v_2 &=\lambda v_1\\ v_3 &=\lambda v_2\\ \lambda v_3 &=av_1+bv_2+cv_3 \end{align*}

对最后一个等式消去 v3v_3v2v_2 得到

λ3v1=(a+bλ+cλ2)v1\lambda^3v_1=(a+b\lambda+c\lambda^2)v_1

由于 λ\lambda 是特征值,满足特征方程

λ3=a+bλ+cλ2\lambda^3=a+b\lambda+c\lambda^2

因此任意 v1v_1 都能使等式成立。不妨取 v1=1v_1=1,从而特征值 λ\lambda 对应的特征向量为

v=[1λλ2]\mathbf{v}=\begin{bmatrix} 1\\ \lambda \\ \lambda^2 \end{bmatrix}

我们发现,该矩阵的特征向量也非常容易计算。这仍然要归功于那个特殊的系数矩阵。

最后我们试着解出微分方程

因为对该高阶方程,我们只需要求出 x(t)x(t),即等价一阶方程组中的 x0(t)x_0(t),所以我们只关注特征向量的第一个分量。而对该矩阵的所有特征向量,第一个分量都是任意的,故可全取为 11,于是有

x(t)=c1f1(t)+c2f2(t)+c3f3(t)x(t)=c_1f_1(t)+c_2f_2(t)+c_3f_3(t)

其中 fi(t)f_i(t)λi\lambda_i 对应的特征函数,若 λi\lambda_i 不为复根或重根则 fi(t)=eλitf_i(t)=e^{\lambda_it},其余情况 fi(t)f_i(t) 具有更复杂的形式;c1c_1c2c_2c3c_3 可通过初值条件求出

我们发现,该微分方程的计算其实并不需要经过求特征向量、对角化或约旦标准化、矩阵相乘等繁琐的步骤。我们可以首先根据微分方程的系数直接列写特征方程,然后算出特征值并求对应的特征函数,最后代入初值条件求出线性组合的系数。能够这样做,同样是因为那个特殊的系数矩阵。

对于更高阶的方程也可以用这个方法求解。这里直接给出推广到 nn 阶线性齐次微分方程的解法

  1. 根据微分方程的系数列写特征方程并求解,从而得到特征值 λ1\lambda_1λ2\lambda_2……λn\lambda_n(由代数基本定理,算上复根和重根,一元 nn 次方程一定会有 nn 个解)
  2. 按特征值的不同情况分类讨论,从而得到特征函数
    1. 特征值 λi\lambda_i 是与其他特征值相异的实根,则特征函数为 eλite^{\lambda_it}
    2. 特征值 λi\lambda_iλj\lambda_j 是共轭的复根,分别为 a±iba\pm ib,则特征函数为 eatcosbte^{at}\cos bteatsinbte^{at}\sin bt
    3. 特征值 λi1=λi2==λik\lambda_{i1}=\lambda_{i2}=\dots=\lambda_{ik}kk 个相同的实根,都等于 λ\lambda,则特征函数为 eλte^{\lambda t}teλtte^{\lambda t}……tk1eλtt^{k-1}e^{\lambda t}
    4. 特征值 λi1=λi2==λik\lambda_{i1}=\lambda_{i2}=\dots=\lambda_{ik}kk 个相同的复根,都等于 a+iba + ib,而 λj1=λj2==λjk\lambda_{j1}=\lambda_{j2}=\dots=\lambda_{jk}kk 个相同的与前者共轭的复根,都等于 aiba - ib,则特征函数为 eatcosbte^{at}\cos bteatsinbte^{at}\sin btteatcosbtte^{at}\cos btteatsinbtte^{at}\sin bt……tk1eatcosbtt^{k-1}e^{at}\cos bttk1eatsinbtt^{k-1}e^{at}\sin bt
  3. x(t)=i=0ncifi(t)x(t)=\sum_{i=0}^nc_if_i(t),其中 fi(t)f_i(t) 为刚才求得的特征函数。代入初值条件求出 cic_i

常系数线性齐次差分方程

用矩阵描述常系数线性齐次差分方程

差分方程对于部分人而言可能较为陌生。不过差分方程其实很常见,比如之前在用幂级数求解微分方程的时候就遇到了一个差分方程

已知 a0a_0,求 ana_n 满足 (n+1)an+1aan=0(n+1)a_{n+1}-aa_n=0 的通项公式

没错,求解数列递推问题其实就是在解差分方程。为了使其看起来更像微分方程,我们这里用一套更专业的符号来定义差分方程和差分方程的解

差分方程的解是一个数列。我们用 x[n]x[n] 来表示数列,其中 nn 为非负整数。x[0]x[0] 表示该数列的第 11 个数,x[1]x[1] 表示该数列的第 22 个数,以此类推,x[n]x[n] 表示该数列的第 n+1n+1 个数

一阶齐次线性差分方程的一般形式为

x[n+1]=ax[n]x[n+1]=ax[n]

其中 aa 是常数

kk 阶齐次线性差分方程的一般形式为

x[n+k]=a1x[n]+a2x[n+1]++akx[n+k1]x[n+k]=a_1x[n]+a_2x[n+1]+\dots+a_kx[n+k-1]

其中 a1a_1a2a_2……aka_k 是常数

解差分方程,就是求 x[n]x[n]nn 为任意非负整数时的表达式

注意,根据定义,因为 (n+1)an+1aan=0(n+1)a_{n+1}-aa_n=0 中存在非常数系数 n+1n+1,所以这个数列递推问题不属于常系数线性差分方程,无法使用特征方程法求解。

由于高阶线性齐次差分方程可用与微分方程同样的方法转化为一阶线性齐次差分方程组,因此线性齐次差分方程组是更一般的情况,我们只讨论此情况。

现在用矩阵描述我们的问题

已知 x[0]\mathbf{x}[0],求 x[n]\mathbf{x}[n] 满足

x[n+1]=Ax[n]\mathbf{x}[n+1]=\mathbf{A}\mathbf{x}[n]

其中 x[n]=[x0[n]x1[n]xm1[n]]\mathbf{x}[n] = \begin{bmatrix} x_0[n] \\ x_1[n] \\ \dots \\ x_{m-1}[n] \\ \end{bmatrix} 称为向量值数列,对每一个非负整数 nnx[n]\mathbf{x}[n] 为一个 m×1m\times1 的列向量;A=[a11a12a1ma21a22a2mam1am2amm]\mathbf{A} = \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1m} \\ a_{21} & a_{22} & \dots & a_{2m} \\ \dots & \dots & \dots & \dots\\ a_{m1} & a_{m2} & \dots & a_{mm} \end{bmatrix} 称为系数矩阵,大小为 m×mm\times m

至此我们成功地用矩阵描述了问题。

用矩阵求解常系数线性齐次差分方程

求解差分方程相比微分方程简单多了

对于

x[n+1]=Ax[n]\mathbf{x}[n+1]=\mathbf{A}\mathbf{x}[n]

nn 取不同的值,得

x[n]=Ax[n1]x[n1]=Ax[n2]x[1]=Ax[0]\begin{align*} \mathbf{x}[n]&=\mathbf{A}\mathbf{x}[n-1]\\ \mathbf{x}[n-1]&=\mathbf{A}\mathbf{x}[n-2]\\ &\dots \\ \mathbf{x}[1]&=\mathbf{A}\mathbf{x}[0] \end{align*}

不断地用下面的等式替换上面的等式,从而

x[n]=Ax[n1]=A×Ax[n2]==Anx[0]\mathbf{x}[n]=\mathbf{A}\mathbf{x}[n-1]=\mathbf{A}\times\mathbf{A}\mathbf{x}[n-2]=\dots=\mathbf{A}^n\mathbf{x}[0]

至此我们成功地将解表示为了一个与矩阵有关的形式。

最后又回到了计算矩阵幂的问题。An\mathbf{A}^n 通常不好计算,但我们可以对角化或约旦标准化 A\mathbf{A} 从而快速计算矩阵幂。特征方程就是此时出现的。这些都已在解微分方程时讨论过了,此处不再赘述。

总结

除了在解微分方程和差分方程时要用到特征方程外,其实特征方程还出现在一些别的地方。如果你学过信号与系统或控制理论,那么可能听说过线性时不变系统的特征方程。对于状态空间模型,即用微分方程或微分方程组描述的系统,此时特征方程显然就是微分方程或微分方程组的特征方程;对于传递函数模型,即用传递函数描述的系统,由于传递函数是通过对微分方程或微分方程组两边同时拉普拉斯变换得到的,因此其本质上还是微分方程或微分方程组的特征方程。

最后把开头的那段话复述如下,相信你应该有了更深的理解

如果一个数学问题要用到特征方程,那么这个问题一定可以用矩阵进行描述和求解,并且答案往往会和矩阵的任意正整数次幂有关。

而为了计算矩阵幂,我们需要对角化或约旦标准化矩阵。特征方程就是此时出现的。所有数学问题中出现的特征方程本质上都是矩阵的特征方程。