zoukankan      html  css  js  c++  java
  • 线性代数学习笔记(九)

    说在前面:这一章真的比较复杂,前前后后花了一天才理清楚,对应的视频是第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提到有两个经典的泰勒展开公式(我们只需用到第一个):

    1. ( e^{At}= I+ At + (At)^2/2+(At)^3/6+...+(At)^n/(n!)+... =sum_{0}^{infty}(At)^n/(n!) ) 
    2. ( (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=SLambda 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!

    (上面其实只是在新的视角上把前面的部分复述一遍。)

  • 相关阅读:
    FineUIPro v5.1.0 发布了!
    FineUI十周年纪念版即将发布(基于像素的响应式布局,独此一家)!
    FineUIPro/Mvc/Core/JS v4.2.0 发布了(老牌ASP.NET控件库,WebForms,ASP.NET MVC,Core,JavaScript)!
    选择IT公司的雇主提问
    项目管理趋势
    突发事件下的项目管理
    12-Factor与微服务
    CQRS(Command and Query Responsibility Segregation)与EventSources实例
    阅读理解力的四个层次
    2018年Code Review状态报告
  • 原文地址:https://www.cnblogs.com/ericxing/p/3660355.html
Copyright © 2011-2022 走看看