用线性代数解线性微分方程组

XantC

从标量开始

\[ \frac{\mathrm{d}y}{\mathrm{d}t}=\lambda y \]

这是一个函数变化率与函数本身呈线性关系的方程,它的解显然是:

\[ y=y(0)\,\mathrm{e}^{\lambda t} \]

由此进行推广,我们可以考虑一个向量变化率与向量本身呈线性关系的微分方程(这是我在学微分几何的时候一直想干的):

\[ \frac{\mathrm{d}\boldsymbol{u}}{\mathrm{d}t}=A\boldsymbol{u} \]

它的解可以猜想为:

\[ \boldsymbol{u}=\mathrm{e}^{At}\boldsymbol{u}_0 \]

根据\(\mathrm{e}^{At}\)的展开,可知它的导数为\(A\mathrm{e}^{At}\),满足方程。

\[ \begin{align*} \therefore\boldsymbol{u}&=\mathrm{e}^{At}\,\boldsymbol{u}(0)\\ &=X\mathrm{e}^{\Lambda t}X^{-1}\,\boldsymbol{u}(0)\\ &=X\mathrm{e}^{\Lambda t}X^{-1}X\boldsymbol{c}\\ &=Xe^{\Lambda t}\boldsymbol{c} \end{align*} \]

这是对于可对角化矩阵的解。但其实任何方程的解都可以写成\(\mathrm{e}^{At}\boldsymbol{u}_0\),因为指数函数的泰勒展开具有普遍性。

二阶线性微分方程

矩阵的厉害之处,在于它可以处理一切线性关系。比如\(y^{''}+by^{'}+cy=0\),我们可以把它写成:

\[ \begin{bmatrix} y\\y^{'} \end{bmatrix}^{'}=\begin{bmatrix} 0&1\\-c&-b\\ \end{bmatrix}\begin{bmatrix} y\\y^{'} \end{bmatrix} \]

这就是上文所讨论的方程类型,我们以此为例来做一下实践。

首先是能够对角化的,也就是方程\(\lambda^2+b\lambda+c=0\)有两不等根的情况。

\[ 此时\begin{bmatrix} y\\y^{'} \end{bmatrix}=\begin{bmatrix} 1&1\\\lambda_1&\lambda_2 \end{bmatrix}\begin{bmatrix} \mathrm{e}^{\lambda_1 t}&\\&\mathrm{e}^{\lambda_2 t} \end{bmatrix}\begin{bmatrix} c_1\\c_2 \end{bmatrix}=\begin{bmatrix} c_1 \mathrm{e}^{\lambda_1 t}+c_2 \mathrm{e}^{\lambda_2 t}\\ c_1\lambda_1 \mathrm{e}^{\lambda_1 t}+c_2\lambda_2 \mathrm{e}^{\lambda_2 t} \end{bmatrix} \]

\[ \therefore y=c_1\mathrm{e}^{\lambda_1 t}+c_2\mathrm{e}^{\lambda_2 t} \]

然后是不能对角化的,也就是\(\lambda^2+b\lambda+c=0\)有两相等实根的时候。我们这里会用上一个大招。

\[ \Delta=b^2-4c=0\Rightarrow c=\frac{b^2}{4} \]

\[ \begin{align*} \mathrm{e}^{At}&=e^{-\frac{b}{2}It}\mathrm{e}^{(A+\frac{b}{2}I)t}\\ &=I\mathrm{e}^{-\frac{b}{2}t}[I+(A+\frac{b}{2}I)t+\frac{1}{2}(A+\frac{b}{2}I)^2t^2+\cdots]\\ \end{align*} \]

\[ \because (A+\frac{b}{2}I)^2=\begin{bmatrix} \frac{b}{2}&1\\-c&-\frac{b}{2} \end{bmatrix}\begin{bmatrix} \frac{b}{2}&1\\-c&-\frac{b}{2} \end{bmatrix}=\begin{bmatrix} 0&0\\0&0 \end{bmatrix} \]

\[ \begin{align*} \therefore \mathrm{e}^{At}&=\mathrm{e}^{-\frac{b}{2}t}(I+(A+\frac{b}{2}I)t)\\ &=\mathrm{e}^{-\frac{b}{2}t}\begin{bmatrix} 1+\frac{b}{2}t&t\\ -ct&1-\frac{b}{2}t\\ \end{bmatrix} \end{align*} \]

\[ \Rightarrow \begin{bmatrix} y\\y^{'} \end{bmatrix}=\mathrm{e}^{-\frac{b}{2}t}\begin{bmatrix} 1+\frac{b}{2}t&t\\ -ct&1-\frac{b}{2}t\\ \end{bmatrix}\begin{bmatrix} y(0)\\y^{'}(0)\\ \end{bmatrix} \]

\[ \therefore y=t\mathrm{e}^{-\frac{b}{2}t}(\frac{b}{2}y(0)+y^{'}(0))+\mathrm{e}^{-\frac{b}{2}t}y(0) \]

这解释了在特征方程只有一解的情况下,函数中的\(t\mathrm{e}^{-\frac{b}{2}t}\)项是怎么来的了。

一切线性微分方程(组)

矩阵的另一个厉害之处,是它到多维的推广非常容易,因为矩阵在推导时就是一个隐藏维度的东西。

比如说一个一阶线性微分方程组,它的正常形式是\(f_i^{'}=\Sigma c_{ij}f_j\)

\[ \begin{bmatrix} f_1\\f_2\\f_3 \end{bmatrix}^{'}=A\begin{bmatrix} f_1\\f_2\\f_3 \end{bmatrix} \]

把它化成矩阵之后,这就又变成了向量变化率与向量本身呈线性的方程问题,可以很快解决。

Ps:我有过把n阶微分方程化为矩阵来算的想法,实际试了之后发现问题出在一元n次方程(特征值)难以求解上面;从这里可以看出微分方程和代数方程之间的一点联系。