最终目标

我们要讨论这两种方程的普遍的解决办法

其中$a_i$为常数。在上篇博客里,我们见到了,假设我们能求出第一个方程,那么第二个方程的解,可以用Cramer法则,通过解普通的线性方程组,再进行积分得到。但是我们假设自己有这个“超能力”,并没有实际的操作方法。这篇博客会赋予我们这个“超能力”。当然也不仅仅是如何快速准确解出方程,更重要的是,能看到经典理论之间朴素而又巧妙的联系。

这篇博客的方法基于多项式,我想你至少在微积分课上已经知道一些简单的对于多项式的处理了。这里要用到古典代数学基本定理,也就是说

任何一个非零的一元$n$次复系数多项式,都正好有$n$个复数根(重根视为多个根)。

多项式方法

回顾简单的线性方程

在这里最适合讨论的应该是

确实,再简单就是普通的不定积分了。我们再来回顾一下怎么分析这个方程的解的结构。首先,$y=0$显然是一个解,这保证了解的准确性。另一方面,在第一篇博客里,我们也给出了普遍的通解计算方式

所以,这个方程的解为

其中$C$为任意常数。


我们也可以尝试一下简单的二阶方程

显然,$y=0$仍然是这个方程的一个特殊解。我们希望的是,能解两次$y’+p(x)y=0$形式的方程,因为这种方程的解法我们是已经会了的。

注意到我们可以把方程写成

令$u=y’-y$,那么我们有了

这个方程的解我们是知道的,实际上我们已经有

所以又有了

从而又可以解出

尝试对上述方程解法进行抽象

对于一阶方程,就是我们已经学过的办法。而二阶方程,你应该已经察觉到了,似乎有迹可循。注意到,$y’’-2y’+y=0$这个方程,我们是解了两次$y’-y$。这时自然可以想到,对于某个方程可能也可以像是解两次$y’-2y$。注意如果我们把求两次导看成一个”平方“,我们有一个方程

那么能不能写出一个需要解两次$y’-2y$的方程呢?我们先写出一个关于$\lambda$的方程,再给对应一个微分方程,也就是说

而对应的方程恰好又有

仍然是要解两次$y’-2y=0$。类似地,也可能某个方程是需要解$n$次$y-3y’$,等等。我们也可以讨论“混合”的场景。比如一个二阶方程,需要先解一次$y-ay’$,再解一次$y-by’$。如果两个颠倒,会不会又有不一样的结果?我们甚至不需要解出结果就可以进行分析。实际上有

求导的”多项式“——你的“超能力”

我们会给出一个解决常系数齐次方程的普遍办法。我们已经知道,求导是一个线性运算。对一个可导函数求导,得到一个新的函数。那么我们把$y’$记为$Dy$,其中$D$代表线性运算,对于高阶求导,不妨记$y^{(n)}=D^ny$。如果对函数不求导,也就是$D^0y$,我们可以记成$Iy$或者$I$省略不写。

那么如果我们已经有

也就是说

那么我们又得到一个多项式

所以原方程又可以写成

那么这和上面的例子又有什么关系呢?注意,如果$a_1,\cdots,a_n$为复数,那么$P(D)$总是可以写成下面的形式

其中$\lambda_i$两两之间可以相等,可以不相等。我们再来看$y’’-2y’+y=0$这个例子。这个时候借助$P(D)$可以把方程写成

那么在这个角度下审视这个方程的解法,我们可以设$u=(D-1)y$,通过解$(D-1)u=0$,解出$u$,又解$(D-1)y=u$,就得到了$y$。

那么普遍的解法我们已经有了,实际上,这是一个递归的办法。

对于方程

只需要设$\varphi_1=(D-\lambda_2)\cdots(D-\lambda_n)y$,然后解$(D-\lambda_1)\varphi_1=0$,解出$\varphi_1$;再按照同样的办法进行下去,设$\varphi_2=(D-\lambda_3)\cdots(D-\lambda_n)y$,解出$\varphi_2$,一直进行下去,最后设$\varphi_n=y$,接出来的就是最终结果。这时你已经获得了上篇博客里需要的“超能力”了(注意:这里的$\varphi_n$里已经包含了$n$个常数)。

以上是齐次线性方程的解决办法。对于非齐次线性方程又有什么普遍办法呢?具体办法有三。

  1. 如果可以很轻松地观察出方程的一个特解,比如存在$\mu(x)$使得$P(D)\mu(x)=f(x)$,那么非齐次方程的解就是$\mu(x)+\varphi_n(x)$。
  2. 直接解$P(D)y=f(x)$,方法和上面齐次方程一样,只需要注意,解$\varphi_1$时有$(D-\lambda_1)\varphi_1=f(x)$,递归下去得到的解和方法1是一致的。
  3. 利用上篇博客的办法。注意到最后得到的$\varphi_n(x)$里有$n$个常数,也就是说可以写成$\varphi_n(x)=\sum_{k=1}^{n}C_ku_k(x)$,这里的$u_k(x)$实际上就是所求的基础解系。

实例:利用多项式办法进行机械式求解

Step 1: 化简$P(D)$

这很简单,实际上我们有

Step 2: 递归求解

我们就有

解出

所以又设

又有

得到

最后,解

其实不难发现,$y=-1$是这个方程的一个特解,而解$y’’’-3y’’+3y’-y=0$得到$y=C_1x^2e^x+C_2xe^x+C_3e^x$,得到的结果和上面的办法是一样的。

注意到我们还可以把这个方程写成

对$P(D)y=0$型方程基本情形的总结

既然我们已经有了机械的解法,那么我们能不能在动手解之前总结一下解的情况?这自然是可行的。我们会尝试讨论$P(D)$的所有基本情形。这里省略了最基本的计算,但是这些计算无非是最基本的一阶方程。

1. $P(D)=(D-\lambda)^n$的情形

对于这种方程,我们最终要做的是解$n$次$y’-\lambda y$型一阶方程。为了解决这种方程,我们定义

那么只需要解$n$次$(D-\lambda)\varphi_{k+1}=\varphi_k$即可。通过简单的计算,得到

2. $P(D)=(D-\lambda_1)(D-\lambda_2)\cdots(D-\lambda_n)$的情形($\lambda_i$之间两两互异)

我们自然希望能得到类似于有$e^{\lambda_1 x},\cdots,e^{\lambda_n x}$的形式,那么事实是怎样呢?我们可以直接进行运算。

首先我们有

那么解

就能得到

整理之后就有

如果我们继续计算下去下去,就能得到

3. 一般情况:$P(D)=(D-\lambda_1)^{r_1}(D-\lambda_2)^{r_2}\cdots(D-\lambda_k)^{r_k}$

这自然是情况1和情况2的整合。在情况1里我们意识到,如果相邻的$\lambda_i$相等,那么我们有$\varphi_{i+1}=x\varphi_i+C_{i+1}e^{\lambda_{i}x}$;如果相邻的$\varphi(x)$不相等,那么我们有$\varphi_{i+1}=\varphi_i+C_{i+1}e^{\lambda_{i+1}x}$。这两个结论整合起来,再经过简单的计算,就能总结出解的一般形式:


这个时候我们解方程就可以轻松许多了。例如方程

我们能得到

所以解就是

再比如求解

注意到

所以解就是


多项式方法的总结

在这整篇博客里,我们只做了一件事情——对一个高阶微分方程进行化简,使求一个高阶方程变成求若干个一阶方程。但是,手动观察整理化简是很不现实的做法,我们就将求导运算看成一个抽象的“数”,然后处理一个对应的多项式,把解方程变成两步:化简多项式、递归求解。在处理这个多项式的过程中,我们间接对原方程进行了化简。

但是多项式方法一定适用于非常系数方程吗?不一定。例如方程$y’’=xy$,这个方程并没有一个简单的解,我们也不能指望通过简单的解法得到所希望得到的函数。

这种方法的优点是,朴实、机械化,只需要执行若干次一阶方程的求导即可。但是,这种办法并没有很好地体现“线性”这个概念,很难看到和线性代数的关系。在下一篇博客里,会给出基于矩阵的解决办法。