说在前面:这一章真的比较复杂,前前后后花了一天才理清楚,对应的视频是第23节,貌似网易公开课这集的评论普遍也是比较难。
微分方程
一阶微分方程
一句话总结:我已经给出公式 u(t)=C1eλ1tx1+C2eλ2tx2 u(t)=C1eλ1tx1+C2eλ2tx2 ,你们往里面带特征值λ和特征向量x就行了!
这章用线代方法找微分方程(组) du/dt=Au du/dt=Au 的“通解”。注意,通解≠所有解(具体百度之):
- u是标量时, du/dt=λu du/dt=λu的通解是 u=Ceλt u=Ceλt;u是向量时,每个分量 ui ui 的通解 是n个不同的 Cieλit Cieλit 的线性组合
- 当u二维时,向量 u 的通解: u(t)=C1eλ1tx1+C2eλ2tx2 u(t)=C1eλ1tx1+C2eλ2tx2 (λ是A的特征值;x是λ对应的特征向量;C是任意常数,可由u的初值确定)
- Strang没说怎么推理得到这个通解,只Check一下正确性:将解分别带入 du/dt=Au du/dt=Au的左右两侧,得到λx=Ax,完毕。我认为他是估计大家事先都知道解是什么(其实大家不一定见过微分方程),然后说这问题也能从线代来解决(之前他也用线代推出过一些图论和电路的公式)
这样,解微分方程=找A的特征值与特征向量。
Note我经常弄混的一个地方是u的分量的意义:
- 方程组中,du1 /dt = ...u1 + ... u2 + ...,这个是条件,用所有分量来对u1的变化趋势进行限制
- 解中, u1(t)=C1eλ1tx11+C2eλ2tx22=f(t) u1(t)=C1eλ1tx11+C2eλ2tx22=f(t),注意变量只有t;x是常量,C虽可变,但只有固定C之后,u才有意义,所以也视C为常量
二阶微分方程
在微分方程教材中,解my''+by'+ky=0这样的二阶微分方程的步骤是:
- 设y=eλt,将其带入原式得到:(mλ2+bλ+k)eλt=0
- 这样只能是(mλ2+bλ+k)=0了,解方程得到λ1与λ2,对应y1=eλ1t和y2=eλ2t
- 通解y=C1*y1+C2*y2
现在用线代的视角解二阶微分,注意一阶和二阶微分的不同:
- 一阶微分如果只有一个式子,可直接得到解;如果有两个式子,则通过上述方法来解
- (这里介绍的)二阶微分只有一个式子,技巧在于将y视为u1,y'视为u2,这样就将问题化为一阶微分方程了(时刻感到线代世界的奇妙)!解得的u包括u1(也就是y)与u2(也就是y')的通解,一举两得
例如这样,注意,第一个式子是为了构造出矩阵A而生拼硬凑的(但是是正确的)。
n阶微分方程
解法是类似的,多少阶都看成u的一个分量就可以了。
稳定性
当t→∞时,如果u=0,则系统趋于stability。由微分方程的通解可以看出:
- 假如λ是实数,如果对所有λ,都有λ<0(注意不能等于0),那么u=0
- 假如λ是复数,对于e(r+is)t,只需要实数r<0,就有u=0;虚数模长为1,没有影响:eist=cos st + i sin st
- 对于二阶矩阵,只需要:迹(主对角线元素之和)<0 且 行列式>0,即可满足稳定性
当t→∞时,如果u=某个常数,则系统趋于steady state,需要的条件是:某几个特征值为0,其余所有特征值<0(我觉得stability和steady state意思差不多,可能是为了强调steady state是一个临界状态吧)
如果有一个特征值大于0,则系统blow up!
关于eAt
将微分方程的解化为eAt
假如A有n个相互独立的特征向量,我们可以设微分方程的解为 u=Sv u=Sv,S的列向量是A的特征向量,其本质是一堆数字常量;v是变量。
因为S是一堆数字,所以可以直接提出,这样方程 du/dt=Au du/dt=Au变为:
S∗dv/dt=ASv S∗dv/dt=ASv
有:
dv/dt=S−1ASv=Λv dv/dt=S−1ASv=Λv
Λ Λ除了主对角线是特征值外,其余元素都是零。上式其实是将u的各个变量化成v,从而实现解耦合(像du1/dt的解和u1,u2...un都相关这样叫做耦合,现在dv1/dt只和v1相关,dv2/dt只和v2相关,这就没有耦合,从u到v的过程叫做“解耦合”)。解上式,得:
v(t)=eΛtv(0) v(t)=eΛtv(0) (只有Λ才能这么解,稍后解释)
通过v得到u:
u(t)=Sv(t)=SeΛtv(0)=SeΛtS−1u(0)=eAtu(0) u(t)=Sv(t)=SeΛtv(0)=SeΛtS−1u(0)=eAtu(0) (eAt与SeΛtS-1的关系稍后解释)
别急!什么是eAt
指数的幂是矩阵?!这需要用泰勒级数来解释,Strang提到有两个经典的泰勒展开公式(我们只需用到第一个):
- eAt=I+At+(At)2/2+(At)3/6+...+(At)n/(n!)+...=∑∞0(At)n/(n!) eAt=I+At+(At)2/2+(At)3/6+...+(At)n/(n!)+...=∑0∞(At)n/(n!)
- (I−At)−1=I+At+(At)2+(At)3+...+(At)n+...=∑∞0(At)n (I−At)−1=I+At+(At)2+(At)3+...+(At)n+...=∑0∞(At)n
用泰勒级数来解释eAt
(解释1)
回头再看, eΛt eΛt按照泰勒展开,得到 I+Λt+(Λt)2/2+(Λt)3/6+... I+Λt+(Λt)2/2+(Λt)3/6+...,由于是对角矩阵,Λ平方相当于对角元素各自平方,这样可知展开后的矩阵的每个对角线元素,是λ_i的展开式。
说了这么多废话就是想说: eΛt eΛt的对角线元素是 eλit eλit
(解释2)
我们再将 eAt eAt展开,并用 A=SΛS−1 A=SΛS−1带入,就有:
有什么用?
u(t)=SeΛtS−1u(0)=eAtu(0) u(t)=SeΛtS−1u(0)=eAtu(0)
这个公式将向量形式的解与标量形式的解统一了,方便记忆。注意, u(t)=eAtu(0) u(t)=eAtu(0)是一定成立的,但是 u(t)=SeΛtS−1u(0) u(t)=SeΛtS−1u(0)只有在A能对角化时才可以。
上式中,S是静止的,u(0)是给定的,所以变化的只有eΛt,微分方程的解是否稳定也在于eΛt的变化趋势。由于Λ是对角矩阵,eΛt的展开式也能很方便地看出(也是一个对角矩阵,对角线元素就是eλt),所以:
- 所有λ都小于0时,随着t增大,eΛt趋于0,u也趋于0
- 当有几个λ=0,其余都小于0时,随着t增大,eΛt只有一个元素等于1,其余都趋于0,u也趋于一个稳定的分布
- 只要有一个λ>0,u都会blow up!
(上面其实只是在新的视角上把前面的部分复述一遍。)