之前介绍了求解一阶差分方程,本文介绍求解一阶导数常系数微分方程
常系数微分方程的解是指数形式的
e
λ
t
e^{\lambda t}
eλt,基于这个事实,我们得以将问题转为线性代数的问题,求解其指数和系数
另外,在微分方程中将会看到特征值的另一应用:除了可以帮助我们求矩阵的幂,还可以求矩阵的指数
对于一阶微分方程
{
d
u
1
d
t
=
−
u
1
+
2
u
2
d
u
2
d
t
=
u
1
−
2
u
2
\left\{
类比之前的差分方程,微分方程可以表示为一个方程组(未知量组成一个整体的列向量
u
\boldsymbol u
u,系数为
A
\mathbf A
A)
d
u
d
t
=
A
u
\frac{d \mathbf{u}}{d t} =\boldsymbol{A} \mathbf{u}
dtdu=Au其中
A
=
[
−
1
2
1
−
2
]
,
u
(
0
)
=
[
1
0
]
\boldsymbol{A}=\left[
我们的最终目标是找到
u
(
t
)
u(t)
u(t),或者说追踪
u
u
u随时间的变化及最终的值
[结论] 方程 d u d t = A u \frac{d \mathbf{u}}{d t} =\boldsymbol{A} \mathbf{u} dtdu=Au的通解形式为 u ( t ) = c 1 e λ 1 t x 1 + c 2 e λ 2 t x 2 ,其中系数 c i 由初值条件给出, x 1 和 x 2 为相应的特征向量 \mathbf{u}(\mathrm{t}) =c_{1} e^{\lambda_{1} t} \mathbf{x}_{1}+c_{2} e^{\lambda_{2} t} \mathbf{x}_{2},其中系数c_i由初值条件给出,\mathbf{x}_{1}和\mathbf{x}_{2}为相应的特征向量 u(t)=c1eλ1tx1+c2eλ2tx2,其中系数ci由初值条件给出,x1和x2为相应的特征向量
证明:方程的通解 u ( t ) = c 1 e λ 1 t x 1 + c 2 e λ 2 t x 2 \mathbf{u}(\mathrm{t}) =c_{1} e^{\lambda_{1} t} \mathbf{x}_{1}+c_{2} e^{\lambda_{2} t} \mathbf{x}_{2} u(t)=c1eλ1tx1+c2eλ2tx2 / 探究为何微分方程中出现指数函数
微分方程 d u d t = A u \frac{d \mathbf{u}}{d t} =\boldsymbol{A} \mathbf{u} dtdu=Au中的 d u d t \frac{d \mathbf{u}}{d t} dtdu,就相当于差分方程中前后两项之差 u k + 1 − u k \mathbf u _{k+1}-\mathbf u _{k} uk+1−uk,只不过两项的距离无限小;
或者说,从 u ( 0 ) u(0) u(0)到 u ( t ) u(t) u(t)认为经历了 N → ∞ N\rightarrow \infty N→∞个差分方程
那么,将某个时刻的值 u ( t ) ∣ t = k Δ u(t)|_{t=k\Delta} u(t)∣t=kΔ记为 u k u_k uk,则微分方程可以暂时视为 d u d t = u k + 1 − u k Δ t = u k + 1 − u k t / N = A u k \frac{d \mathbf{u}}{d t} =\frac{\mathbf{u}_{k+1}-\mathbf{u}_{k}}{\Delta t}=\frac{\mathbf{u}_{k+1}-\mathbf{u}_{k}}{t / N}=\boldsymbol{A} \mathbf{u}_{k} dtdu=Δtuk+1−uk=t/Nuk+1−uk=Auk
改写得到 u k + 1 = ( t N A + 1 ) u k \mathbf{u}_{k+1}=\left(\frac{t}{N} \boldsymbol{A}+1\right) \mathbf{u}_{k} uk+1=(NtA+1)uk这是上一节所学的内容,可以知道最终的值 u ( t ) \mathbf{u}(\mathrm{t}) u(t),等价于差分方程的最终值 u N \mathbf{u}_N uN u ( t ) = u N = c 1 ( t N λ 1 + 1 ) N x 1 + c 2 ( t N λ 2 + 1 ) N x 2 \mathbf{u}(t)=\mathbf{u}_{N}=c_{1}\left(\frac{t}{N} \lambda_{1}+1\right)^{N} \mathbf{x}_{1}+c_{2}\left(\frac{t}{N} \lambda_{2}+1\right)^{N} \mathbf{x}_{2} u(t)=uN=c1(Ntλ1+1)Nx1+c2(Ntλ2+1)Nx2,并且考虑到 lim k → ∞ ( 1 k + 1 ) k → e \lim _{k \rightarrow \infty}\left(\frac{1}{k}+1\right)^{k} \rightarrow e limk→∞(k1+1)k→e,从差分变为微分,得到其通解形式: u ( t ) = c 1 e λ 1 t x 1 + c 2 e λ 2 t x 2 \mathbf{u}(\mathrm{t})=c_{1} e^{\lambda_{1} t} \mathbf{x}_{1}+c_{2} e^{\lambda_{2} t} \mathbf{x}_{2} u(t)=c1eλ1tx1+c2eλ2tx2
求解
d
u
d
t
=
A
u
\frac{d \mathbf{u}}{d t} =\boldsymbol{A} \mathbf{u}
dtdu=Au,其中
A
=
[
−
1
2
1
−
2
]
,
u
(
0
)
=
[
1
0
]
\boldsymbol{A}=\left[
分析:随着 t t t的增大,答案中第二项会消失,而第一项为稳态(当有0特征值时,就出现稳态SteadyState)’
如果初态 u ( 0 ) = [ 1 0 ] \mathbf{u}(0)=\left[\right] u(0)=[10],那么最终的稳态就是 u ( t ) ∣ t = ∞ = 1 3 [ 2 1 ]" role="presentation" style="position: relative;"> 1 0 \right]\end{array} u(t)∣t=∞=31[21]" role="presentation" style="position: relative;"> \begin{array}{l} \mathbf{u}(\mathrm{t})|_{t=\infty}=\frac{1}{3}\left[\begin{array}{l}2 \\1\end{array}
对于通解
u
(
t
)
=
c
1
e
λ
1
t
x
1
+
c
2
e
λ
2
t
x
2
\mathbf{u}(\mathrm{t})=c_{1} e^{\lambda_{1} t} \mathbf{x}_{1}+c_{2} e^{\lambda_{2} t} \mathbf{x}_{2}
u(t)=c1eλ1tx1+c2eλ2tx2
矩阵的特征值给出了
u
(
t
)
\mathbf{u}(\mathrm{t})
u(t)的发展趋势(稳定性):
将 e λ 1 t e^{\lambda_{1} t} eλ1t视为 A e j ϕ Ae^{j\phi} Aejϕ的形式,则实部 R e { λ } Re\{\lambda\} Re{λ}决定了稳定性(即决定幅值的增长速度,因为 ∣ e a + j b ∣ = ∣ e a ∣ ∣ e j b ∣ = ∣ e a ∣ |e^{a+jb}|=|e^{a}||e^{jb}|=|e^{a}| ∣ea+jb∣=∣ea∣∣ejb∣=∣ea∣),虚部 I m { λ } Im\{\lambda\} Im{λ}对应了单位圆上的相位旋转
R e { λ } > 0 Re\{\lambda\}>0 Re{λ}>0,对应项发散; R e { λ } = 0 Re\{\lambda\}=0 Re{λ}=0,对应项幅值稳定不变; R e { λ } < 0 Re\{\lambda\}<0 Re{λ}<0,对应项消失( t → ∞ 时 u ( t ) → 0 t\rightarrow \infty 时\mathbf{u}(\mathrm{t})\rightarrow 0 t→∞时u(t)→0)
对比复习:
①之前的矩阵的幂的情况
如果其所有特征值 ∣ λ i ∣ < 1 |\lambda_i|<1 ∣λi∣<1,则 k → ∞ 时 A k → 0 k\rightarrow \infty时\boldsymbol{A}^k\rightarrow 0 k→∞时Ak→0(因为 Λ k → 0 \boldsymbol{\Lambda}^k\rightarrow 0 Λk→0,故 A k = S Λ k S − 1 → 0 \boldsymbol{A}^k=\boldsymbol{S}\boldsymbol{\Lambda}^k\boldsymbol{S}^{-1}\rightarrow 0 Ak=SΛkS−1→0)
②之前的差分方程的稳态情况(主要取决于幅值 ∣ λ i ∣ |\lambda_i| ∣λi∣)
对于实数特征值,特征值 ∣ λ i ∣ < 1 |\lambda_i|<1 ∣λi∣<1的项最终会消失,特征值 ∣ λ i ∣ = 1 |\lambda_i|=1 ∣λi∣=1的项恒定,特征值 ∣ λ i ∣ > 1 |\lambda_i|>1 ∣λi∣>1的项最终不断增长
对于复数特征值,虚部引入了复平面上的“旋转”,故特征值的幅值仍然确定稳态,而相位则对应了每次做矩阵乘法时特征向量的旋转角度
另外,我们比较关注二阶系统的稳定性,一个推论是:
下文一切讨论的前提: A \mathbf A A的特征向量矩阵 S \mathbf S S可逆/ A \mathbf A A有n个无关的特征向量,因为此时才能保证可对角化(从而用于解耦的特征向量数量是足够的)
将矩阵对角化(特征值分解)为 A = S Λ S − 1 \boldsymbol{A} =\boldsymbol{S} \boldsymbol{\Lambda} \boldsymbol{S}^{-1} A=SΛS−1
下面从另一角度考虑一般的一阶微分方程的求解原理,探究为什么一阶微分方程的解是指数函数 e λ t e^{\lambda t} eλt的和的形式(之前已经证明,这里从另一角度理解);
出发角度是:
将问题转换到另一坐标系(基向量为特征向量),从而解耦方程,得到解,再转换回原坐标系;
具体的解耦方法:
对于未知量相互耦合的方程组,用特征值和特征向量来对角化方程的系数矩阵,可以实现解耦(各未知量没有关系)
对于一阶微分方程 { d u 1 d t = − u 1 + 2 u 2 d u 2 d t = u 1 − 2 u 2 \left\{
\right. {dtdu1dtdu2=−u1+2u2=u1−2u2,也就是 d u d t = A u \frac{d \mathbf{u}}{d t} =\boldsymbol{A} \mathbf{u} dtdu=Au" role="presentation" style="position: relative;"> d u 1 d t = − u 1 + 2 u 2 d u 2 d t = u 1 − 2 u 2
- 原方程有两个相互耦合(coupled)的未知函数 u 1 , u 2 u_1,u_2 u1,u2;
- 找出 A \boldsymbol{A} A的特征值和特征向量(即对角化),可以实现解耦
这对应了 最后的通解 u ( t ) = c 1 e λ 1 t x 1 + c 2 e λ 2 t x 2 \mathbf{u}(\mathrm{t})=c_{1} e^{\lambda_{1} t} \mathbf{x}_{1}+c_{2} e^{\lambda_{2} t} \mathbf{x}_{2} u(t)=c1eλ1tx1+c2eλ2tx2有多个指数函数项,但他们之间互不相干;
并且,各个指数函数前面的系数 c i c_i ci完全由初始条件 u ( 0 ) u(0) u(0)确定,一旦确定后系数恒定不变
进一步的,下面研究如何将解表示为特征值矩阵 Λ \mathbf \Lambda Λ和特征向量矩阵 S \mathbf S S的形式
对于
d
u
d
t
=
A
u
\frac{d \mathbf{u}}{d t} =\boldsymbol{A} \mathbf{u}
dtdu=Au方程,原方程未知数
u
1
,
u
2
u_1,u_2
u1,u2耦合,即
A
\boldsymbol{A}
A不是对角阵
希望解耦,就是说希望将
A
\boldsymbol{A}
A对角化(出现对角的系数矩阵意味着各未知数互不干扰)
希望将
u
\mathbf{u}
u写为特征向量的线性组合形式
u
=
S
v
\mathbf{u}=\mathbf{S v}
u=Sv
其中
v
\mathbf{v}
v为新的未知量(代替原来的未知量
u
\mathbf{u}
u),
S
\mathbf S
S矩阵是
A
\boldsymbol{A}
A的特征向量矩阵
u
=
S
v
\mathbf{u}=\mathbf{S v}
u=Sv带入原方程
d
u
d
t
=
A
u
\frac{d \mathbf{u}}{d t} =\boldsymbol{A} \mathbf{u}
dtdu=Au,得到
S
d
v
d
t
=
A
S
v
⇒
d
v
d
t
=
S
−
1
A
S
v
=
Λ
v
可以理解为:
新方程组的系数矩阵 Λ \mathbf{\Lambda} Λ为对角阵,即方程组每一行都形如 d v i d t = λ i v i \frac{d v_{i}}{d t}=\lambda_{i} v_{i} dtdvi=λivi;
此时新方程组不存在耦合,或者说方程组各个未知量之间没有联系(系数矩阵为对角阵导致的)
新的 对角化方程组 d v d t = Λ v \frac{d \mathbf{v}}{d t}=\boldsymbol{\Lambda} \mathbf{v} dtdv=Λv的解为 v ( t ) = e Λ t v ( 0 ) \mathbf{v}(t)=e^{\Lambda t} \mathbf{v}(0) v(t)=eΛtv(0)
结论:
我们希望研究 e A t e^{\mathbf At} eAt,这是个矩阵,但是其元素没有显式计算表示,而是需要通过下面的幂级数公式来计算!!!
目标:证明 e A t e^{\mathbf At} eAt与 A \mathbf A A的特征值矩阵 Λ \mathbf \Lambda Λ和特征向量矩阵 S \mathbf S S的关系为 e A t = S e Λ t S − 1 e^{\mathbf At}=\boldsymbol{S} e^{\boldsymbol{\Lambda} t}\boldsymbol{S}^{-1} eAt=SeΛtS−1
利用指数函数的幂级数公式 e x = ∑ n = 0 ∞ x n n ! = 1 + x + x 2 2 + x 3 6 + ⋯ e^{x}=\sum_{n=0}^{\infty} \frac{x^{n}}{n !}=1+x+\frac{x^{2}}{2}+\frac{x^{3}}{6}+\cdots ex=∑n=0∞n!xn=1+x+2x2+6x3+⋯,可以将指数部分 e x e^{x} ex变为幂次项 x n x^{n} xn之和的形式,类比得到矩阵的指数函数 e A t e^{\mathbf At} eAt,可以写为 e A t = I + A t + ( A t ) 2 2 + ( A t ) 3 6 + ⋯ e^{\boldsymbol{A} t}=I+\boldsymbol{A} t+\frac{(\boldsymbol{A} t)^{2}}{2}+\frac{(\boldsymbol{A} t)^{3}}{6}+\cdots eAt=I+At+2(At)2+6(At)3+⋯利用 A k = S Λ k S − 1 \boldsymbol{A}^k=\boldsymbol{S} \boldsymbol{\Lambda}^k \boldsymbol{S}^{-1} Ak=SΛkS−1,可以得到 e A t = I + A t + ( A t ) 2 2 + ( A t ) 3 6 + ⋯ = S S − 1 + S Λ S − 1 t + S Λ 2 S − 1 2 t 2 + S Λ 3 S − 1 6 t 3 + ⋯ = S ( I + Λ t + Λ 2 2 t 2 + Λ 3 6 t 3 + ⋯ ) S − 1 = S e Λ t S − 1
eAt=I+At+2(At)2+6(At)3+⋯=SS−1+SΛS−1t+2SΛ2S−1t2+6SΛ3S−1t3+⋯=S(I+Λt+2Λ2t2+6Λ3t3+⋯)S−1=SeΛtS−1" role="presentation" style="position: relative;"> e A t = I + A t + ( A t ) 2 2 + ( A t ) 3 6 + ⋯ = S S − 1 + S Λ S − 1 t + S Λ 2 S − 1 2 t 2 + S Λ 3 S − 1 6 t 3 + ⋯ = S ( I + Λ t + Λ 2 2 t 2 + Λ 3 6 t 3 + ⋯ ) S − 1 = S e Λ t S − 1
注意,这里出现了 S − 1 \boldsymbol{S}^{-1} S−1,那么下面的一切成立的前提是,矩阵A必须具有n个线性无关的特征向量,从而矩阵才能对角化
最终,我们可以将
e
A
t
e^{\mathbf At}
eAt分解为
e
A
t
=
S
e
Λ
t
S
−
1
,
其中
e
Λ
t
=
[
e
λ
1
t
0
⋯
0
0
e
λ
2
t
0
⋮
⋱
⋮
0
⋯
0
e
λ
n
t
]
e^{\mathbf At}=\boldsymbol{S} e^{\boldsymbol{\Lambda} t} \boldsymbol{S}^{-1},其中e^{\Lambda t}=\left[
可见,若 A \mathbf A A有n个无关的特征向量方程,则 e A t e^{\mathbf At} eAt与 A \mathbf A A的特征值矩阵 Λ \mathbf \Lambda Λ和特征向量矩阵 S \mathbf S S的关系为 e A t = S e Λ t S − 1 e^{\mathbf At}=\boldsymbol{S} e^{\boldsymbol{\Lambda} t}\boldsymbol{S}^{-1} eAt=SeΛtS−1(给出了 e A t e^{\mathbf At} eAt的显式计算式)
像之前的Fibonacci数列的例子,可以从二阶差分方程构造一阶的差分方程
同样的,给出二阶微分方程(同时出现了前后三项)
y
′
′
+
b
y
′
+
k
y
=
0
y^{\prime \prime}+b y^{\prime}+k y=0
y′′+by′+ky=0,我们也可以增加一个方程,得到一个方程组(可表示为矩阵向量乘法),从而将整体列向量变为新的变量,得到一阶微分方程
构造方程组
{
y
′
′
=
−
b
y
′
−
k
y
y
′
=
y
′
\left\{
可以推广到k阶微分方程,我们仍然添加(k-1)个额外方程,则 u ′ = A u \mathbf{u}^{\prime}=\mathbf A\mathbf{u} u′=Au的系数矩阵 A \mathbf A A是一个k x k矩阵,这样k阶微分方程可以转化为一阶微分方程