线性代数学习笔记(九)
说在前面:这一章真的比较复杂,前前后后花了一天才理清楚,对应的视频是第23节,貌似网易公开课这集的评论普遍也是比较难。
微分方程
一阶微分方程
一句话总结:我已经给出公式\( u(t)=C_1e^{\lambda_1t}x_1+C_2e^{\lambda_2t}x_2 \) ,你们往里面带特征值λ和特征向量x就行了!
这章用线代方法找微分方程(组)\( du/dt=Au \) 的“通解”。注意,通解≠所有解(具体百度之):
- u是标量时,\( du/dt = \lambda u \)的通解是 \( u=Ce^{λt} \);u是向量时,每个分量 \( u_i \) 的通解 是n个不同的\( C_ie^{λ_it} \) 的线性组合
- 当u二维时,向量 u 的通解:\( u(t)=C_1e^{\lambda_1t}x_1+C_2e^{\lambda_2t}x_2 \) (λ是A的特征值;x是λ对应的特征向量;C是任意常数,可由u的初值确定)
- Strang没说怎么推理得到这个通解,只Check一下正确性:将解分别带入 \( du/dt = Au \)的左右两侧,得到λx=Ax,完毕。我认为他是估计大家事先都知道解是什么(其实大家不一定见过微分方程),然后说这问题也能从线代来解决(之前他也用线代推出过一些图论和电路的公式)
这样,解微分方程=找A的特征值与特征向量。
Note我经常弄混的一个地方是u的分量的意义:
- 方程组中,du1 /dt = ...u1 + ... u2 + ...,这个是条件,用所有分量来对u1的变化趋势进行限制
- 解中,\( u_1(t)=C_1e^{\lambda_1t}x_{11}+C_2e^{\lambda_2t}x_{22} = 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 \),S的列向量是A的特征向量,其本质是一堆数字常量;v是变量。
因为S是一堆数字,所以可以直接提出,这样方程\( du/dt = Au \)变为:
\( S*dv/dt = ASv \)
有:
\( dv/dt = S^{-1}ASv=\Lambda v \)
\( \Lambda \)除了主对角线是特征值外,其余元素都是零。上式其实是将u的各个变量化成v,从而实现解耦合(像du1/dt的解和u1,u2...un都相关这样叫做耦合,现在dv1/dt只和v1相关,dv2/dt只和v2相关,这就没有耦合,从u到v的过程叫做“解耦合”)。解上式,得:
\(v(t)=e^{\Lambda t}v(0) \) (只有Λ才能这么解,稍后解释)
通过v得到u:
\( u(t)=Sv(t)=Se^{\Lambda t}v(0)=Se^{\Lambda t}S^{-1}u(0)=e^{At}u(0) \) (eAt与SeΛtS-1的关系稍后解释)
别急!什么是eAt
指数的幂是矩阵?!这需要用泰勒级数来解释,Strang提到有两个经典的泰勒展开公式(我们只需用到第一个):
- \( e^{At}= I+ At + (At)^2/2+(At)^3/6+...+(At)^n/(n!)+... =\sum_{0}^{\infty}(At)^n/(n!) \)
- \( (I-At)^{-1}= I+ At + (At)^2+(At)^3+...+(At)^n+... =\sum_{0}^{\infty}(At)^n \)
用泰勒级数来解释eAt
(解释1)
回头再看,\( e^{\Lambda t} \)按照泰勒展开,得到\( I+\Lambda t +(\Lambda t)^2/2+ (\Lambda t)^3/6+... \),由于是对角矩阵,Λ平方相当于对角元素各自平方,这样可知展开后的矩阵的每个对角线元素,是λ_i的展开式。
说了这么多废话就是想说:\( e^{\Lambda t} \)的对角线元素是\( e^{\lambda_i t} \)
(解释2)
我们再将\( e^{A t} \)展开,并用\( A=S\Lambda S^{-1} \)带入,就有:
有什么用?
\( u(t)=Se^{\Lambda t}S^{-1}u(0)=e^{At}u(0) \)
这个公式将向量形式的解与标量形式的解统一了,方便记忆。注意,\( u(t)=e^{At}u(0) \)是一定成立的,但是\( u(t)=Se^{\Lambda t}S^{-1}u(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!
(上面其实只是在新的视角上把前面的部分复述一遍。)
posted on 2014-04-12 13:54 eric.xing 阅读(1170) 评论(0) 编辑 收藏 举报