Skip to content

第二十三讲:微分方程和eAt

微分方程dudt=Au

本讲主要讲解解一阶方程(first-order system)一阶倒数(first derivative)常系数(constant coefficient)线性方程,上一讲介绍了如何计算矩阵的幂,本讲将进一步涉及矩阵的指数形式。我们通过解一个例子来详细介绍计算方法。

有方程组{du1dt=u1+2u2du2dt=u12u2,则系数矩阵是A=[1212],设初始条件为在0时刻u(0)=[u1u2]=[10]

  • 这个初始条件的意义可以看做在开始时一切都在u1中,但随着时间的推移,将有du2dt>0,因为u1项初始为正,u1中的事物会流向u2。随着时间的发展我们可以追踪流动的变化。

  • 根据上一讲所学的知识,我们知道第一步需要找到特征值与特征向量。A=[1212],很明显这是一个奇异矩阵,所以第一个特征值是λ1=0,另一个特征向量可以从迹得到tr(A)=3。当然我们也可以用一般方法计算|AλI|=|1λ212λ|=λ2+3λ=0

    (教授提前剧透,特征值λ2=3将会逐渐消失,因为答案中将会有一项为e3t,该项会随着时间的推移趋近于0。答案的另一部分将有一项为e0t,该项是一个常数,其值为1,并不随时间而改变。通常含有0特征值的矩阵会随着时间的推移达到稳态。)

  • 求特征向量,λ1=0时,即求A的零空间,很明显x1=[21]λ2=3时,求A+3I的零空间,[2211]的零空间为x2=[11]

  • 则方程组的通解为:u(t)=c1eλ1tx1+c2eλ2tx2,通解的前后两部分都是该方程组的纯解,即方程组的通解就是两个与特征值、特征向量相关的纯解的线性组合。我们来验证一下,比如取u=eλ1tx1带入dudt=Au,对时间求导得到λ1eλ1tx1=Aeλ1tx1,化简得λ1x1=Ax1

    对比上一讲,解uk+1=Auk时得到uk=c1λkx1+c2λkx2,而解dudt=Au我们得到u(t)=c1eλ1tx1+c2eλ2tx2

  • 继续求c1,c2u(t)=c11[21]+c2e3t[11],已知t=0时,[10]=c1[21]+c2[11]Sc=u(0)),所以c1=13,c2=13

  • 于是我们写出最终结果,u(t)=13[21]+13e3t[11]

稳定性:这个流动过程从u(0)=[10]开始,初始值1的一部分流入初始值0中,经过无限的时间最终达到稳态u()=[2313]。所以,要使得u(t)0,则需要负的特征值。但如果特征值为复数呢?如λ=3+6i,我们来计算|e(3+6i)t|,其中的|e6it|部分为|cos6t+isin6t|=1,因为这部分的模为cos2α+sin2α=1,这个虚部就在单位圆上转悠。所以只有实数部分才是重要的。所以我们可以把前面的结论改为需要实部为负数的特征值。实部会决定最终结果趋近于0,虚部不过是一些小杂音。

收敛态:需要其中一个特征值实部为0,而其他特征值的实部皆小于0

发散态:如果某个特征值实部大于0。上面的例子中,如果将A变为A,特征值也会变号,结果发散。

再进一步,我们想知道如何从直接判断任意二阶矩阵的特征值是否均小于零。对于二阶矩阵A=[abcd],矩阵的迹为a+d=λ1+λ2,如果矩阵稳定,则迹应为负数。但是这个条件还不够,有反例迹小于0依然发散:[2001],迹为1但是仍然发散。还需要加上一个条件,因为detA=λ1λ2,所以还需要行列式为正数。

总结:原方程组有两个相互耦合的未知函数,u1,u2相互耦合,而特征值和特征向量的作则就是解耦,也就是对角化(diagonalize)。回到原方程组dudt=Au,将u表示为特征向量的线性组合u=Sv,代入原方程有Sdvdt=ASv,两边同乘以S1dvdt=S1ASv=Λv。以特征向量为基,将u表示为Sv,得到关于v的对角化方程组,新方程组不存在耦合,此时{dv1dt=λ1v1dv2dt=λ2v2dvndt=λnvn,这是一个各未知函数间没有联系的方程组,它们的解的一般形式为v(t)=eΛtv(0),则原方程组的解的一般形式为u(t)=eAtu(0)=SeΛtS1u(0)。这里引入了指数部分为矩阵的形式。

指数矩阵eAt

在上面的结论中,我们见到了eAt。这种指数部分带有矩阵的情况称为指数矩阵(exponential matrix)。

理解指数矩阵的关键在于,将指数形式展开称为幂基数形式,就像ex=1+x22+x36+一样,将eAt展开成幂级数的形式为:

eAt=I+At+(At)22+(At)36++(At)nn!+

再说些题外话,有两个极具美感的泰勒级数:ex=xnn!11x=xn,如果把第二个泰勒级数写成指数矩阵形式,有(IAt)1=I+At+(At)2+(At)3+,这个式子在t非常小的时候,后面的高次项近似等于零,所以可以用来近似IAt的逆矩阵,通常近似为I+At,当然也可以再加几项。第一个级数对我们而言比第二个级数好,因为第一个级数总会收敛于某个值,所以ex总会有意义,而第二个级数需要A特征值的绝对值小于1(因为涉及矩阵的幂运算)。我们看到这些泰勒级数的公式对矩阵同样适用。

回到正题,我们需要证明SeΛtS1=eAt,继续使用泰勒级数:

eAt=I+At+(At)22+(At)36++(At)nn!+eAt=SS1+SΛS1t+SΛ2S12t2+SΛ3S16t3++SΛnS1n!tn+eAt=S(I+Λt+Λ2t22+Λ3t33++Λntnn+)S1eAt=SeΛtS1

需要注意的是,eAt的泰勒级数展开是恒成立的,但我们推出的版本却需要矩阵可对角化这个前提条件。

最后,我们来看看什么是eΛt,我们将eAt变为对角矩阵就是因为对角矩阵简单、没有耦合,eΛt=[eλ1t000eλ2t000eλnt]

有了u(t)=SeΛtS1u(0),再来看矩阵的稳定性可知,所有特征值的实部均为负数时矩阵收敛,此时对角线上的指数收敛为0。如果我们画出复平面,则要使微分方程存在稳定解,则特征值存在于复平面的左侧(即实部为负);要使矩阵的幂收敛于0,则特征值存在于单位圆内部(即模小于1),这是幂稳定区域。(上一讲的差分方程需要计算矩阵的幂。)

同差分方程一样,我们来看二阶情况如何计算,有y+by+k=0。我们也模仿差分方程的情形,构造方程组{y=bykyy=y,写成矩阵形式有[yy]=[bk10][yy],令u=[yy], u=[yy]

继续推广,对于5阶微分方程y′′′′′+by+cy+dy+ey+f=0,则可以写作[y′′′′′yyyy]=[bcdef10000010000010000010][yyyyy],这样我们就把一个五阶微分方程化为5×5一阶方程组了,然后就是求特征值、特征向量了步骤了。

本站没有备案,因为不需要备案