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!

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

  • 相关阅读:
    Android AHandle AMessage
    android java 与C 通过 JNI双向通信
    android 系统给应用的jar
    UE4 unreliable 同步问题
    UE4 difference between servertravel and openlevel(多人游戏的关卡切换)
    UE4 Run On owing Client解析(RPC测试)
    UE4 TSubclassOf VS Native Pointer
    UE4 内容示例网络同步Learn
    UE4 多人FPS VR游戏制作笔记
    UE4 分层材质 Layerd Materials
  • 原文地址:https://www.cnblogs.com/ericxing/p/3660355.html
Copyright © 2011-2022 走看看