预备知识
1.1 一阶线性齐次微分方程的解
d
y
d
x
+
P
(
x
)
y
=
0
(1)
\frac{dy}{dx}+P(x)y=0\tag{1}
dxdy+P(x)y=0(1)
其齐次通解为:
y
=
C
e
−
∫
P
(
x
)
d
x
(2)
y=Ce^{-\int P(x)dx}\tag{2}
y=Ce−∫P(x)dx(2)
令
P
(
x
)
=
−
λ
P(x)=-\lambda
P(x)=−λ,
λ
\lambda
λ为常数。(1)对应的方程为:
d
y
d
x
=
λ
y
(3)
\frac{dy}{dx}=\lambda y\tag{3}
dxdy=λy(3)
对应的解为:
y
=
C
e
λ
x
(4)
y=Ce^{\lambda x}\tag{4}
y=Ceλx(4)
特别的,
λ
=
0
\lambda=0
λ=0,有:
y
=
C
y=C
y=C,结论(3)(4)是求解微分方程的基础。
1.2 欧拉公式
e
i
θ
=
cos
θ
+
i
sin
θ
(5)
e^{i\theta}=\cos\theta+i\sin\theta\tag{5}
eiθ=cosθ+isinθ(5)
对于任意一个角度,欧拉公式给出了单位圆上唯一的复数,请注意不是一一对应,因为对于任意
θ
+
2
k
π
\theta+2k\pi
θ+2kπ都表示同一个复数。需要留意的是
e
a
+
b
i
e^{a+bi}
ea+bi的模为:
e
a
+
b
i
=
e
a
e
b
i
=
∣
e
a
∣
∣
e
b
i
∣
e^{a+bi}=e^a e^{bi}=\vert e^a\vert\vert e^{bi}\vert
ea+bi=eaebi=∣ea∣∣ebi∣
复数部分,套用欧拉公式有:
∣
e
b
i
∣
=
∣
cos
b
+
i
sin
b
∣
=
cos
2
b
+
sin
2
b
=
1
\vert e^{bi}\vert=\vert \cos b+i \sin b\vert=\cos^2b+\sin^2b=1
∣ebi∣=∣cosb+isinb∣=cos2b+sin2b=1
结论就是:e的复数指数的模长等于实数部分的数值。
一、常系数微分方程组
不考虑耦合情况,求解以下微分方程是容易的:
d
u
d
t
=
u
d
u
d
t
=
λ
u
(6)
\frac{du}{dt}=u \quad \frac{du}{dt}=\lambda u\tag{6}
dtdu=udtdu=λu(6)
微分方程的解分别是:
u
(
t
)
=
C
e
t
u
(
t
)
=
C
e
λ
t
(7)
u(t)=Ce^t\quad u(t)=Ce^{\lambda t}\tag{7}
u(t)=Cetu(t)=Ceλt(7)
假如,两个微分方程组相互耦合,那么应该如何求解其微分方程组的解?看一个具体的例子:
d
u
1
d
t
=
−
u
1
+
2
u
2
d
u
2
d
t
=
u
1
−
2
u
2
(8)
\begin{aligned} \frac{du_1}{dt}&=-u_1+2u_2\\ \frac{du_2}{dt}&=u_1-2u_2 \end{aligned}\tag{8}
dtdu1dtdu2=−u1+2u2=u1−2u2(8)
如何求解?两个方程相加有:
d
(
u
1
+
u
2
)
d
t
=
0
(
u
1
+
u
2
)
(9)
\frac{d(u_1+u_2)}{dt}=0(u_1+u_2)\tag{9}
dtd(u1+u2)=0(u1+u2)(9)
上式减去两倍的下式,有:
d
(
u
1
−
2
u
2
)
d
t
=
−
3
(
u
1
−
2
u
2
)
(10)
\frac{d(u_1-2u_2)}{dt}=-3(u_1-2u_2)\tag{10}
dtd(u1−2u2)=−3(u1−2u2)(10)
将
u
1
+
u
2
u_1+u_2
u1+u2看成一个整体,方程(9)对应的微分方程的解为
u
1
+
u
2
=
C
1
e
0
t
(11)
u_1+u_2=C_1e^{0t}\tag{11}
u1+u2=C1e0t(11)
同样,将
u
1
−
2
u
2
u_1-2u_2
u1−2u2看成一个整体有:
u
1
−
2
u
2
=
C
2
e
−
3
t
(12)
u_1-2u_2=C_2e^{-3t}\tag{12}
u1−2u2=C2e−3t(12)
进行一些简单的消元操作,可以得到微分方程组的解:
u
1
=
2
C
1
3
e
0
t
+
C
2
3
e
−
3
t
u
2
=
C
1
3
e
0
t
−
C
2
3
e
−
3
t
(13)
\begin{aligned} u_1=\frac{2C_1}{3}e^{0t}+\frac{C_2}{3}e^{-3t}\\ u_2=\frac{C_1}{3}e^{0t}-\frac{C_2}{3}e^{-3t} \end{aligned}\tag{13}
u1=32C1e0t+3C2e−3tu2=3C1e0t−3C2e−3t(13)
至此,微分方程组求解完毕。从求解过程可以看出:
- 求解一阶常系数微分方程组的基本方法就是通过线性变换右侧,使得左侧微分对象恰好等于组合的结果;
- 微分方程组的解是多个 e λ t e^\lambda t eλt组成的,也就是 u i = ∑ C i e λ i t x i u_i=\sum C_ie^{\lambda_it}x_i ui=∑Cieλitxi;[1]
这个和矩阵有何关系?或许写成矩阵更加容易看出一些端倪:
d
d
t
[
u
1
u
2
]
=
[
−
1
2
1
−
2
]
[
u
1
u
2
]
(14)
\frac{d}{dt}\begin{bmatrix} {u_1}\\ {u_2} \end{bmatrix}=\begin{bmatrix}-1&2\\1&-2\end{bmatrix}\begin{bmatrix}u_1\\u_2\end{bmatrix}\tag{14}
dtd[u1u2]=[−112−2][u1u2](14)
我们微分方程组的解
u
1
u_1
u1和
u
2
u_2
u2看成未知数列向量:
x
=
[
u
1
u
2
]
x=\begin{bmatrix}u_1\\u_2\end{bmatrix}
x=[u1u2],右侧的系数组合看成是系数矩阵
A
=
[
−
1
2
1
−
2
]
A=\begin{bmatrix}-1&2\\1&-2\end{bmatrix}
A=[−112−2]。一个矩阵作用于一个向量大概率会改变这个向量的方向,我们的目标是通过线性变换,这和将方程式左边的向量变成是与之同方向的向量是一样的,一旦能写成同方向的向量,这个方程就是一个容易求解的一阶线性微分方程。
啰里啰唆,其实就是想说明:我们可以利用特征值和特征向量的概念来求解微分方程组。下面来看看这个微分方程组是如何通过特征值和特征向量求解的。令
A
=
[
−
1
2
1
−
2
]
(15)
A=\begin{bmatrix} -1&2\\ 1&-2 \end{bmatrix}\tag{15}
A=[−112−2](15)
容易求得其特征值:
λ
1
=
0
\lambda_1=0
λ1=0
λ
2
=
−
3
\lambda_2=-3
λ2=−3,对应的特征向量为:
x
1
=
[
2
1
]
x_1=\begin{bmatrix}2\\1\end{bmatrix}
x1=[21]和
x
2
=
[
1
−
1
]
x_2=\begin{bmatrix}1\\-1\end{bmatrix}
x2=[1−1],根据通解公式有:
u
(
t
)
=
C
1
e
0
t
[
2
1
]
+
C
2
e
−
3
t
[
1
−
1
]
u(t)=C_1e^{0t}\begin{bmatrix}2\\1\end{bmatrix}+C_2e^{-3t}\begin{bmatrix}1\\-1\end{bmatrix}
u(t)=C1e0t[21]+C2e−3t[1−1]
如果给定初值:
u
0
=
[
1
0
]
u_0=\begin{bmatrix}1\\0\end{bmatrix}
u0=[10],可以确定
C
1
C_1
C1和
C
2
C_2
C2的具体数值。最终的解为:
u
(
t
)
=
1
3
e
0
t
[
2
1
]
+
1
3
e
−
3
t
[
1
−
1
]
u(t)=\frac{1}{3}e^{0t}\begin{bmatrix}2\\1\end{bmatrix}+\frac{1}{3}e^{-3t}\begin{bmatrix}1\\-1\end{bmatrix}
u(t)=31e0t[21]+31e−3t[1−1]
也就是:
u
1
(
t
)
=
2
3
e
0
t
+
1
3
e
−
3
t
u
2
(
t
)
=
1
3
e
0
t
−
1
3
e
−
3
t
u_1(t)=\frac{2}{3}e^{0t}+\frac{1}{3}e^{-3t}\\ u_2(t)=\frac{1}{3}e^{0t}-\frac{1}{3}e^{-3t}
u1(t)=32e0t+31e−3tu2(t)=31e0t−31e−3t
微分方程的两个解的趋势如何?
- 如果特征值为0,那么该分量是一个定值与时间无关;
- 如果特征值为负实数,随着时间的推移,该分量将会趋近于0;
- 如果特征值为正实数,随着时间的推移,该分量将会变得无穷大;
- 如果特征值为负数,只需要看实数部分正负即可,同23点,复数部分只是在指明方向,一直在单位圆上转圈圈;
最后讲一下解的稳定性问题:
- 稳定性(stability)。如果定义 u ( t ) → 0 u(t)\rightarrow 0 u(t)→0为稳定状态,那么特征值应该满足什么条件?答:实数部分都小于零;(模是收敛的)
- 稳态(steady state)。存在一个特征值为0,其他特征值实部小于0;
- 震荡(blow up)。如果存在任意特征值实属部分大于零。
对于一个
2
×
2
2\times2
2×2矩阵
A
=
[
a
b
c
d
]
A=\begin{bmatrix}a&b\\c&d\end{bmatrix}
A=[acbd]的稳定性条件是什么?
答:根据之前的讨论,矩阵需要满足稳定的条件是:
R
e
λ
1
<
0
Re \lambda_1<0
Reλ1<0
R
e
λ
2
<
0
Re \lambda_2<0
Reλ2<0。如果不计算特征值,我们是否可判断这个矩阵的稳定性?
- 迹 (trace)小于零。 a + d = λ 1 + λ 2 < 0 a+d=\lambda_1+\lambda_2<0 a+d=λ1+λ2<0
- 行列式(determinant)的值大于0 λ 1 λ 2 > 0 \lambda_1\lambda_2>0 λ1λ2>0
二、e的矩阵次方
回到原来的方程:
d
u
d
t
=
A
u
\frac{du}{dt}=Au
dtdu=Au
我们的目的是将方程组
u
u
u解耦,不妨设
u
=
S
v
u=Sv
u=Sv,其中
S
S
S为矩阵
A
A
A特征向量构成的特征矩阵。(将
u
u
u
v
v
v想象向量,因为
S
S
S是特征向量矩阵,故一定是线性无关,所以一定存在
v
v
v使得
u
=
S
v
u=Sv
u=Sv成立)。将条件
u
=
S
v
u=Sv
u=Sv带入方程有:
S
d
v
d
t
=
A
S
v
S\frac{dv}{dt}=ASv
Sdtdv=ASv
将
S
S
S移到右边有:
d
v
d
t
=
S
−
1
A
S
v
=
Λ
v
\frac{dv}{dt}=S^{-1}ASv=\Lambda v
dtdv=S−1ASv=Λv
为什么我们要大费周折的将一个方程式化简成对角矩阵?答案就是解耦,一旦系数矩阵变成了对角矩阵,微分方程之间的耦合将不再存在!不存在耦合求解微分方程简直不要太常规:
v
1
=
c
1
e
λ
1
t
v
2
=
c
2
e
λ
2
t
⋯
v_1=c_1e^{\lambda_1 t}\\ v_2=c_2e^{\lambda_2 t}\\ \cdots
v1=c1eλ1tv2=c2eλ2t⋯
将其写成矩阵形式:
[
v
1
v
2
⋮
v
n
]
=
[
e
λ
1
t
⋯
⋯
0
0
e
λ
2
t
⋯
0
⋮
⋮
⋱
⋮
0
0
0
e
λ
n
t
]
[
c
1
c
2
⋮
c
n
]
\begin{bmatrix}v_1\\v_2\\\vdots\\v_n\end{bmatrix}=\begin{bmatrix} e^{\lambda_1 t}&\cdots&\cdots&0\\ 0&e^{\lambda_2t}&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&0&e^{\lambda_nt} \end{bmatrix}\begin{bmatrix}c_1\\c_2\\\vdots\\c_n\end{bmatrix}
⎣
⎡v1v2⋮vn⎦
⎤=⎣
⎡eλ1t0⋮0⋯eλ2t⋮0⋯⋯⋱000⋮eλnt⎦
⎤⎣
⎡c1c2⋮cn⎦
⎤
也就是:
v
(
t
)
=
e
Λ
C
v(t)=e^{\Lambda }C
v(t)=eΛC,当
t
=
0
t=0
t=0时,系数矩阵变成单位矩阵,此时
V
(
0
)
=
C
V(0)=C
V(0)=C。
v
(
t
)
=
e
Λ
t
v
(
0
)
v(t)=e^{\Lambda t }v(0)
v(t)=eΛtv(0)
将
u
(
t
)
=
S
v
(
t
)
u(t)=Sv(t)
u(t)=Sv(t)代入上式有:
u
(
t
)
=
S
e
Λ
t
S
−
1
u
(
0
)
u(t)=Se^{\Lambda t}S^{-1}u(0)
u(t)=SeΛtS−1u(0)
事实上:
e
A
t
=
S
e
Λ
t
S
−
1
e^{A t}=Se^{\Lambda t}S^{-1}
eAt=SeΛtS−1
所以,最后的解为:
u
(
t
)
=
e
A
t
u
(
0
)
u(t)=e^{At}u(0)
u(t)=eAtu(0)
矩阵指数定义如下:
e
A
t
=
I
+
A
t
+
(
A
t
)
2
2
+
(
A
t
)
3
6
+
⋯
+
(
A
t
)
n
n
!
e^{At}=I+At+\frac{(At)^2}{2}+\frac{(At)^3}{6}+\cdots+\frac{(At)^n}{n!}
eAt=I+At+2(At)2+6(At)3+⋯+n!(At)n
上述的展开是收敛的,因为随着
n
n
n的增大,通项收敛于0;
这与高等数学里的 e x e^x ex对应: e x = ∑ n = 0 ∞ x n n ! e^x=\sum_{n=0}^{\infty}\frac{x^n}{n!} ex=n=0∑∞n!xn
利用高数极限的定义可证,当 n → + ∞ n\rightarrow+\infty n→+∞时, e x → 0 e^x\rightarrow0 ex→0。
(几何级数):
1 1 − x = ∑ n = 0 ∞ X n \frac{1}{1-x}=\sum_{n=0}^{\infty}X^n 1−x1=n=0∑∞Xn
类比几何级数有:
(
I
−
A
t
)
−
1
=
I
+
A
t
+
A
t
2
+
⋯
(I-At)^{-1}=I+At+At^2+\cdots
(I−At)−1=I+At+At2+⋯
这个性质可用来估计矩阵的逆,当
t
t
t比较小的时候,高阶项可以忽略。这个式子不一定收敛,收敛条件是
A
t
At
At的特征值小于1,求逆公式成立。
利用
e
A
t
e^{At}
eAt的定义,我们来推导当满足
A
A
A可对角化情况下的表达式:
e
A
t
=
I
+
A
t
+
(
A
t
)
2
2
+
(
A
t
)
3
6
+
⋯
+
(
A
t
)
n
n
!
=
S
Λ
0
S
−
1
+
S
Λ
1
S
−
1
t
+
1
2
!
S
Λ
2
S
−
1
t
2
+
⋯
+
1
n
!
S
Λ
n
S
−
1
t
n
=
S
(
I
+
Λ
t
+
1
2
!
Λ
2
t
2
+
1
3
!
Λ
3
t
3
+
⋯
+
1
n
!
Λ
n
t
n
)
S
−
1
=
S
e
Λ
t
S
−
1
\begin{aligned} e^{A t}&=I+At+\frac{(At)^2}{2}+\frac{(At)^3}{6}+\cdots+\frac{(At)^n}{n!}\\ &=S\Lambda^0S^{-1}+S\Lambda^1S^{-1}t+\frac{1}{2!}S\Lambda^2S^{-1}t^2+\cdots+\frac{1}{n!}S\Lambda^nS^{-1}t^n\\ &=S(I+\Lambda t+\frac{1}{2!}\Lambda^2 t^2+\frac{1}{3!}\Lambda^3 t^3+\cdots+\frac{1}{n!}\Lambda^n t^n)S^{-1}\\ &=Se^{\Lambda t}S^{-1} \end{aligned}
eAt=I+At+2(At)2+6(At)3+⋯+n!(At)n=SΛ0S−1+SΛ1S−1t+2!1SΛ2S−1t2+⋯+n!1SΛnS−1tn=S(I+Λt+2!1Λ2t2+3!1Λ3t3+⋯+n!1Λntn)S−1=SeΛtS−1
特征值构成的矩阵
Λ
\Lambda
Λ:
Λ
=
[
λ
1
0
⋯
0
0
λ
2
⋯
0
⋮
⋮
⋱
⋮
0
0
⋯
λ
n
]
\Lambda=\begin{bmatrix} \lambda_1&0&\cdots&0\\ 0&\lambda_2&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&\lambda_n \end{bmatrix}
Λ=⎣
⎡λ10⋮00λ2⋮0⋯⋯⋱⋯00⋮λn⎦
⎤
回到一开始的
v
(
t
)
=
e
Λ
t
v
(
0
)
v(t)=e^{\Lambda t}v(0)
v(t)=eΛtv(0),因为已经解耦,所以每一列都代表了对应解的形式,故:
e
Λ
t
=
[
e
λ
1
t
0
⋯
0
0
e
λ
2
t
⋯
0
⋮
⋮
⋱
⋮
0
0
⋯
e
λ
n
t
]
e^{\Lambda t}=\begin{bmatrix} e^{\lambda_1 t}&0&\cdots&0\\ 0&e^{\lambda_2 t}&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&e^{\lambda_n t} \end{bmatrix}
eΛt=⎣
⎡eλ1t0⋮00eλ2t⋮0⋯⋯⋱⋯00⋮eλnt⎦
⎤
对于,考察
u
(
t
)
u(t)
u(t),因为
C
=
S
−
1
u
(
0
)
C=S^{-1}u(0)
C=S−1u(0),所以:
u
(
t
)
=
e
A
t
u
(
0
)
=
[
x
1
x
2
⋯
x
n
]
[
e
λ
1
t
0
⋯
0
0
e
λ
2
t
⋯
0
⋮
⋮
⋱
⋮
0
0
⋯
e
λ
n
t
]
[
c
1
c
2
⋮
c
n
]
=
c
1
x
1
e
λ
1
t
+
c
2
x
2
e
λ
2
t
+
⋯
+
c
n
x
n
e
λ
n
t
\begin{aligned} u(t)&=e^{At}u(0)\\ &=\begin{bmatrix}x_1&x_2&\cdots&x_n\end{bmatrix} \begin{bmatrix} e^{\lambda_1 t}&0&\cdots&0\\ 0&e^{\lambda_2 t}&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&e^{\lambda_n t} \end{bmatrix}\begin{bmatrix}c_1\\c_2\\\vdots\\c_n\end{bmatrix}\\ &=c_1x_1e^{\lambda_1t}+c_2x_2e^{\lambda_2t}+\cdots+c_nx_ne^{\lambda_n t} \end{aligned}
u(t)=eAtu(0)=[x1x2⋯xn]⎣
⎡eλ1t0⋮00eλ2t⋮0⋯⋯⋱⋯00⋮eλnt⎦
⎤⎣
⎡c1c2⋮cn⎦
⎤=c1x1eλ1t+c2x2eλ2t+⋯+cnxneλnt
这个与我们认识的通解形式是一致的。
怎么样的特征值会使得微分方程有稳定解?
答:根据稳定性的定义,当微分方程的表达式趋于0时,微分方程具有稳定解。
u
(
t
)
=
S
e
Λ
t
S
−
1
u
(
0
)
u(t)=Se^{\Lambda t}S^{-1}u(0)
u(t)=SeΛtS−1u(0)
表达式
S
S
S和
S
−
1
S^{-1}
S−1不变,趋势和
e
Λ
t
e^{\Lambda t}
eΛt有关:
e
Λ
t
=
[
e
λ
1
t
0
⋯
0
0
e
λ
2
t
⋯
0
⋮
⋮
⋱
⋮
0
0
⋯
e
λ
n
t
]
e^{\Lambda t}=\begin{bmatrix} e^{\lambda_1 t}&0&\cdots&0\\ 0&e^{\lambda_2 t}&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&e^{\lambda_n t} \end{bmatrix}
eΛt=⎣
⎡eλ1t0⋮00eλ2t⋮0⋯⋯⋱⋯00⋮eλnt⎦
⎤
当且仅当,所有特征根都小于零时,微分方程的结果随着时间的增大会趋于一个稳定的值:0。在复平面上标记特征根,他应该出现在复平面的左半部分:
三、高阶常系数微分方程
对于一个二阶微分方程:
y
′
′
+
b
y
′
+
k
y
=
0
y''+by'+ky=0
y′′+by′+ky=0
一个常用的技巧就是降阶:
u
=
[
y
′
y
]
u=\begin{bmatrix}y'\\y\end{bmatrix}
u=[y′y]
于是,二阶方程可以写成:
u
′
=
[
y
′
′
y
′
]
=
[
−
b
−
k
1
0
]
[
y
′
y
]
u'=\begin{bmatrix}y''\\y'\end{bmatrix}=\begin{bmatrix}-b&-k\\1&0\end{bmatrix}\begin{bmatrix}y'\\y\end{bmatrix}
u′=[y′′y′]=[−b1−k0][y′y]
也就是
u
′
=
A
u
u'=Au
u′=Au
解法和前面讲到的一样,不过
u
u
u内容变成了解的各阶导数。
同理,如果是五阶微分方程,亦可用同样的方法。
[1] 没有看到详细的推导。
[2] https://blog.csdn.net/sunbobosun56801/article/details/103094021