6.3 微分方程系统(1)

一、常系数微分方程

特征值与特征向量和 A=XΛX−1A=X\Lambda X^{-1}A=XΛX1 很适合求解 AkA^{k}Ak,对于微分方程 du/dt=Aud\boldsymbol u/dt=A\boldsymbol udu/dt=Au 的求解也很合适。本节大部分都是线性代数,但是需要知道微积分的一个知识:eλte^{\lambda t}eλt 的导数是 λeλt\lambda e^{\lambda t}λeλt。本节的重点是:把常系数微分方程转换成线性代数
常微分方程 dudt=u\displaystyle\frac{du}{dt}=udtdu=ududt=λu\displaystyle\frac{du}{dt}=\lambda udtdu=λu 的解是指数形式:dudt=u 的解是 u(t)=Cetdudt=λu 的解是 u(t)=Ceλt(6.3.1)\frac{du}{dt}=u\,的解是\,u(t)=Ce^t\kern 20pt\frac{du}{dt}=\lambda u\,的解是\,u(t)=Ce^{\lambda t}\kern 18pt(6.3.1)dtdu=u的解是u(t)=Cetdtdu=λu的解是u(t)=Ceλt(6.3.1)在时间 t=0t=0t=0 时这些解都包含 e0=1e^0=1e0=1,所以此时它们都简化成 u(0)=Cu(0)=Cu(0)=C,这个 “初始值(initial value)” 告诉我们 CCC 是什么。t=0t=0t=0 时从数字 u(0)u(0)u(0) 开始的上式的解是 u(t)=u(0)etu(t)=u(0)e^tu(t)=u(0)etu(t)=u(0)eλtu(t)=u(0)e^{\lambda t}u(t)=u(0)eλt
我们仅仅求解了 1×11\times11×1 的问题,线性代数会移到 n×nn\times nn×n。未知数是一个向量 u\boldsymbol uu(现在加粗了),它由给定的初始向量 u(0)\boldsymbol u(0)u(0) 开始。这 nnn 个方程包含一个方阵 AAA,我们希望从 nnnλ′s\lambda'sλs 得到 u(t)\boldsymbol u(t)u(t)nnn 个指数 eλte^{\lambda t}eλt

n 个方程的系统dudt=Au从 t=0 时的向量 u(0)=[u1(0)⋯un(0)]开始(6.3.2)\pmb{n\,个方程的系统}\kern 8pt{\color{blue}\frac{d\boldsymbol u}{dt}=A\boldsymbol u}\kern 5pt从\,t=0\,时的向量\,\boldsymbol u(0)=\begin{bmatrix}u_1(0)\\\cdots\\u_n(0)\end{bmatrix}开始\kern 10pt(6.3.2)n个方程的系统dtdu=Aut=0时的向量u(0)=u1(0)un(0)开始(6.3.2)

这些微分方程是线性的,如果 u(t)\boldsymbol u(t)u(t)v(t)\boldsymbol v(t)v(t) 是解,则 Cu(t)+Dv(t)C\boldsymbol u(t)+D\boldsymbol v(t)Cu(t)+Dv(t) 也是解。我们需要 nnn 个像 CCCDDD 一样的常数来匹配 u(0)\boldsymbol u(0)u(0) 的分量,第一份工作是使用 Ax=λxA\boldsymbol x=\lambda \boldsymbol xAx=λx 求出 nnn 个 “纯指数解(pure exponential solutions)” u=eλtx\boldsymbol u=e^{\lambda t}\boldsymbol xu=eλtx
注意 AAA 是常数矩阵,在其它的线性方程组中,AAA 随着 ttt 改变;非线性方程组中,AAA 随着 u\boldsymbol uu 改变。我们这里没有那么困难,du/dt=Aud\boldsymbol u/dt=A\boldsymbol udu/dt=Au 是 “线性且是常系数”。只有这样的微分方程组我们才能直接转换成线性代数,下面是关键:当 Ax=λx 时,用指数形式的 eλtx 求解线性常系数微分方程。\color{blue}当\,A\boldsymbol x=\lambda\boldsymbol x\,时,用指数形式的\,e^{\lambda t}\boldsymbol x\,求解线性常系数微分方程。Ax=λx时,用指数形式的eλtx求解线性常系数微分方程。

二、du/dt = Au 的解

我们的纯指数解是 eλte^{\lambda t}eλt 乘上一个固定的向量 x\boldsymbol xx,可以猜到这个 λ\lambdaλ 就是 AAA 的特征值,x\boldsymbol xx 是特征向量。将 u(t)=eλtx\boldsymbol u(t)=e^{\lambda t}\boldsymbol xu(t)=eλtx 代入到方程 du/dt=Aud\boldsymbol u/dt=A\boldsymbol udu/dt=Au 中可以验证这个猜测是正确的。因子 eλte^{\lambda t}eλt 会消去最终留下 λx=Ax\lambda\boldsymbol x=A\boldsymbol xλx=Ax

当 Ax=λx 时,令 u=eλtxdudt=λeλtx和Au=Aeλtx是一致的(6.3.3)\begin{array}{ll}当\,A\boldsymbol x=\lambda\boldsymbol x\,时,\\令\,\boldsymbol u=e^{\lambda t}\boldsymbol x\end{array}\kern 10pt{\color{blue}\frac{d\boldsymbol u}{dt}=\lambda e^{\lambda t}\boldsymbol x}\kern 5pt和\kern 5pt{\color{blue}A\boldsymbol u=Ae^{\lambda t}\boldsymbol x}\kern 5pt是一致的\kern 15pt(6.3.3)Ax=λx时,u=eλtxdtdu=λeλtxAu=Aeλtx是一致的(6.3.3)

u=eλtx\boldsymbol u=e^{\lambda t}\boldsymbol xu=eλtx 这个特解的所有分量都有相同的 eλte^{\lambda t}eλt。当 λ>0\lambda>0λ>0 时,解增长;当 λ<0\lambda<0λ<0 时解衰减。如果 λ\lambdaλ 是一个复数,它的实部决定增长或衰减;虚部 ω\omegaω 产生振荡,像正弦波一样。

例1】求解 dudt=Au=[0110]u\displaystyle\frac{d\boldsymbol u}{dt}=A\boldsymbol u=\begin{bmatrix}0&1\\1&0\end{bmatrix}\boldsymbol udtdu=Au=[0110]u,从 u(0)=[42]\boldsymbol u(0)=\begin{bmatrix}4\\2\end{bmatrix}u(0)=[42] 开始。
这是一个关于 u\boldsymbol uu 的向量方程,它含有两个分量分别是 yyyzzz 的数量方程。这两个方程 “耦合(coupled together)” 在了一起,因为矩阵 AAA 不是对角矩阵:dudt=Auddt[yz]=[0110][yz]表示dydt=z和dzdt=y\frac{d\boldsymbol u}{dt}=A\boldsymbol u\kern 15pt\frac{d}{dt}\begin{bmatrix}y\\z\end{bmatrix}=\begin{bmatrix}0&1\\1&0\end{bmatrix}\begin{bmatrix}y\\z\end{bmatrix}\kern 5pt表示\kern 5pt\frac{dy}{dt}=z\kern 5pt和\kern 5pt\frac{dz}{dt}=ydtdu=Audtd[yz]=[0110][yz]表示dtdy=zdtdz=y特征向量的思想是将这些方程以某种方式组合起来,然后回到 1×11\times11×1 的问题。本题可以组合成 y+zy+zy+zy−zy-zyz,将两个方程相加和相减:ddt(y+z)=z+y和ddt(y−z)=−(y−z)\frac{d}{dt}(y+z)=z+y\kern 10pt和\kern 10pt\frac{d}{dt}(y-z)=-(y-z)dtd(y+z)=z+ydtd(yz)=(yz)y+zy+zy+z 的组合像 ete^tet 一样增长,因为它的 λ=1\lambda=1λ=1y−zy-zyz 的组合像 e−te^{-t}et 一样衰减,因为它的 λ=−1\lambda=-1λ=1。重点是:我们没有必要用原始方程 du/dt=Aud\boldsymbol u/dt=A\boldsymbol udu/dt=Au 来找这些特殊的组合,AAA 和特征值和特征向量会给我们做好这件事。
矩阵 AAA 的特征值是 111−1-11,特征向量 x\boldsymbol xx(1,1)(1,1)(1,1)(1,−1)(1,-1)(1,1)。纯指数解 u1\boldsymbol u_1u1u2\boldsymbol u_2u2 都是指数 eλte^{\lambda t}eλt 的形式,其中 λ1=1,λ2=−1\lambda_1=1,\lambda_2=-1λ1=1λ2=1

u1(t)=eλ1tx1=et[11]和u2(t)=eλ2tx2=e−t[1−1](6.3.4)\boxed{\boldsymbol u_1(t)=e^{\lambda_1t}\boldsymbol x_1=e^t\begin{bmatrix}1\\1\end{bmatrix}}\kern 10pt和\kern 10pt \boxed{\boldsymbol u_2(t)=e^{\lambda_2t}\boldsymbol x_2=e^{-t}\begin{bmatrix}\kern 7pt1\\-1\end{bmatrix}}\kern 15pt(6.3.4)u1(t)=eλ1tx1=et[11]u2(t)=eλ2tx2=et[11](6.3.4)

注意:这些 u′s\boldsymbol u'sus 满足 Au1=u1A\boldsymbol u_1=\boldsymbol u_1Au1=u1Au2=−u2A\boldsymbol u_2=-\boldsymbol u_2Au2=u2,就如同 x1\boldsymbol x_1x1x2\boldsymbol x_2x2 一样。因子 ete^tete−te^{-t}et 随时间 ttt 改变。这些因子得到 du1/dt=u1=Au1d\boldsymbol u_1/dt=\boldsymbol u_1=A\boldsymbol u_1du1/dt=u1=Au1du2/dt=−u2=Au2d\boldsymbol u_2/dt=-\boldsymbol u_2=A\boldsymbol u_2du2/dt=u2=Au2。对于 du/dt=Aud\boldsymbol u/dt=A\boldsymbol udu/dt=Au我们得到了两个解。为了找到其它的所有解,用任意数字 CCCDDD 乘上这些特解,然后加起来全解u(t)=Cet[11]+De−t[1−1]=[Cet+De−tCet−De−t](6.3.5){\color{blue}全解}\kern 15pt\boldsymbol u(t)=Ce^t\begin{bmatrix}1\\1\end{bmatrix}+De^{-t}\begin{bmatrix}\kern 7pt1\\-1\end{bmatrix}=\begin{bmatrix}Ce^t+De^{-t\\}\\Ce^t-De^{-t}\end{bmatrix}\kern 10pt(6.3.5)全解u(t)=Cet[11]+Det[11]=[Cet+DetCetDet](6.3.5)有了这两个常数 CCCDDD,我们可以和任意的起始向量 u(0)=(u1(0),u2(0))\boldsymbol u(0)=(u_1(0),u_2(0))u(0)=(u1(0),u2(0)) 相匹配。令 t=0t=0t=0,则 e0=1e^0=1e0=1,例 111 要求的初始值是 u(0)=(4,2)\boldsymbol u(0)=(4,2)u(0)=(4,2)u(0) 决定 C 和 DC[11]+D[1−1]得到C=3和D=1\boldsymbol u(0)\,决定\,C\,和\,D\kern 15ptC\begin{bmatrix}1\\1\end{bmatrix}+D\begin{bmatrix}\kern 7pt1\\-1\end{bmatrix}\kern 5pt得到\kern 5ptC=3\kern 3pt和\kern 3ptD=1u(0)决定CDC[11]+D[11]得到C=3D=1解式(6.2.5)中的 C=3,D=1C=3,D=1C=3,D=1,初始值问题就完全解决了。
解微分方程 du/dt=Aud\boldsymbol u/dt=A\boldsymbol udu/dt=Au 和求解 uk+1=Auk\boldsymbol u_{k+1}=A\boldsymbol u_kuk+1=Auk 一样有三步:

  1. u(0)\boldsymbol u(0)u(0) 写成 AAA 特征向量的组合 c1x1+c2x2+⋯+cnxnc_1\boldsymbol x_1+c_2\boldsymbol x_2+\cdots+c_n\boldsymbol x_nc1x1+c2x2++cnxn
  2. 每个特征向量 xi\boldsymbol x_ixi 左边乘上它的增长因子 eλite^{\lambda_it}eλit.
  3. 解就是这些纯指数解 eλtxe^{\lambda t}\boldsymbol xeλtx 的组合,和步骤 111 的组合相同:dudt=Auu(t)=c1eλ1tx1+c2eλ2tx2+⋯+cneλntxn(6.3.6)\frac{d\boldsymbol u}{dt}=A\boldsymbol u\kern 20pt{\color{blue}\boldsymbol u(t)=c_1e^{\lambda_1t}\boldsymbol x_1+c_2e^{\lambda_2t}\boldsymbol x_2+\cdots+c_ne^{\lambda_nt}\boldsymbol x_n}\kern 15pt(6.3.6)dtdu=Auu(t)=c1eλ1tx1+c2eλ2tx2++cneλntxn(6.3.6)

注:不包含下面的情况:如果有两个 λ′s\lambda'sλs 相等,且它们只有一个特征向量,那么还需要另一个解(是 teλtxte^{\lambda t}\boldsymbol xteλtx)。步骤 111 需要对角化 A=XΛX−1A=X\Lambda X^{-1}A=XΛX1nnn 个特征向量构成一组基。

例2】求解 du/dt=Aud\boldsymbol u/dt=A\boldsymbol udu/dt=Au,已知 AAA 的特征值是 λ=1,2,3\lambda=1,2,3λ=1,2,3u 的方程的典型例题初始条件是 u(0)dudt=[111021003]u初始值 u(0)=[974]\begin{array}{l}\pmb{\boldsymbol u\,的方程的典型例题}\\\pmb{初始条件是\,\boldsymbol u(0)}\end{array}\kern 10pt\frac{d\boldsymbol u}{dt}=\begin{bmatrix}1&1&1\\0&2&1\\0&0&3\end{bmatrix}\boldsymbol u\kern 10pt初始值\,\boldsymbol u(0)=\begin{bmatrix}9\\7\\4\end{bmatrix}u的方程的典型例题初始条件是u(0)dtdu=100120113u初始值u(0)=974特征向量是 x1=(1,0,0)、x2=(1,1,0)\boldsymbol x_1=(1,0,0)、\boldsymbol x_2=(1,1,0)x1=(1,0,0)x2=(1,1,0)x3=(1,1,1)\boldsymbol x_3=(1,1,1)x3=(1,1,1)

步骤1: 向量 u(0)=(9,7,4)\boldsymbol u(0)=(9,7,4)u(0)=(9,7,4)2x1+3x2+4x32\boldsymbol x_1+3\boldsymbol x_2+4\boldsymbol x_32x1+3x2+4x3,因此 (c1,c2,c3)=(2,3,4)(c_1,c_2,c_3)=(2,3,4)(c1,c2,c3)=(2,3,4)
步骤2: 因子 eλte^{\lambda t}eλt 得到指数解 etx1、e2tx2e^t\boldsymbol x_1、e^{2t}\boldsymbol x_2etx1e2tx2e3tx3e^{3t}\boldsymbol x_3e3tx3
步骤3:u(0)\boldsymbol u(0)u(0) 开始的组合是 u(t)=2etx1+3e2tx2+4e3tx3\boldsymbol u(t)=2e^t\boldsymbol x_1+3e^{2t}\boldsymbol x_2+4e^{3t}\boldsymbol x_3u(t)=2etx1+3e2tx2+4e3tx3
系数 2,3,42,3,42,3,4 是解线性方程 c1x1+c2x2+c3x3=u(0)c_1\boldsymbol x_1+c_2\boldsymbol x_2+c_3\boldsymbol x_3=\boldsymbol u(0)c1x1+c2x2+c3x3=u(0) 得出的:[x1x2x3 ][c1c2c3]=[111011001][234]=[974]这个就是Xc=u(0)(6.3.7)\begin{bmatrix}\\\boldsymbol x_1&\boldsymbol x_2&\boldsymbol x_3\\\,\end{bmatrix}\begin{bmatrix}c_1\\c_2\\c_3\end{bmatrix}=\begin{bmatrix}1&1&1\\0&1&1\\0&0&1\end{bmatrix}\begin{bmatrix}2\\3\\4\end{bmatrix}=\begin{bmatrix}9\\7\\4\end{bmatrix}\kern 10pt这个就是\kern 10ptX\boldsymbol c=\boldsymbol u(0)\kern 15pt(6.3.7)x1x2x3c1c2c3=100110111234=974这个就是Xc=u(0)(6.3.7)现在已经有了如何求解 du/dt=Aud\boldsymbol u/dt=A\boldsymbol udu/dt=Au 的基本概念,后面会更深入些,求解的方程会包含二阶导数,因为这些在应用中经常出现。还有是如何决定 u(t)\boldsymbol u(t)u(t) 是趋近于零还是爆炸或振荡。
后面会有矩阵指数(matrix exponential) eAte^{At}eAt,短公式 eAtu(0)e^{At}\boldsymbol u(0)eAtu(0) 求解方程 du/dt=Aud\boldsymbol u/dt=A\boldsymbol udu/dt=AuAku0A^k\boldsymbol u_0Aku0 求解方程 uk+1=Auk\boldsymbol u_{k+1}=A\boldsymbol u_kuk+1=Auk 方式一样。例 3 会展示 “差分方程” 如何帮助求解微分方程。
这些步骤都使用到了 λ′s\lambda'sλsx′s\boldsymbol x'sxs,这节是将求解常系数的问题转换成线性代数的问题,它阐明了最简单但是最重要的微分方程 —— 它们的解都基于增长因子 eλte^{\lambda t}eλt

三、二阶方程

力学中最重要的方程是 my′′+by′+ky=0my''+by'+ky=0my′′+by+ky=0 第一项是质量 mmm 乘上加速度 a=y′′a=y''a=y′′mamama 这一项平衡了力 FFF(牛顿第二定律),这个方程包含了阻尼力 −by′-by'by 和正比于位移的弹性力 −ky-kyky。这个方程是一个二阶方程,因为它包含二阶导数 y′′=d2y/dt2y''=d^2y/dt^2y′′=d2y/dt2,它仍然是一个常系数为 m,b,km,b,km,b,k 的线性方程。
在微积分中,求解微分方程的方法是将 y=eλty=e^{\lambda t}y=eλt 代入进去,yyy 的每一阶导数都会提出一个 λ\lambdaλ,我们希望 y=eλty=e^{\lambda t}y=eλt 是这个方程的解:

md2ydt2+bdydt+ky=0变为(mλ2+bλ+k)eλt=0(6.3.8)\pmb{m\frac{d^2y}{dt^2}+b\frac{dy}{dt}+ky=0\kern 10pt}变为\kern 10pt\pmb{(m\lambda^2+b\lambda+k)e^{\lambda t}=0}\kern 15pt(6.3.8)mdt2d2y+bdtdy+ky=0变为(mλ2++k)eλt=0(6.3.8)

一切都与 mλ2+bλ+k=0m\lambda^2+b\lambda+k=0mλ2++k=0 有关,这个关于 λ\lambdaλ 的方程有两个根 λ1\lambda_1λ1λ2\lambda_2λ2,则关于 yyy 的方程有两个纯指数解 y1=eλ1ty_1=e^{\lambda_1t}y1=eλ1ty2=eλ2ty_2=e^{\lambda_2t}y2=eλ2t,当 λ1≠λ2\lambda_1\neq\lambda_2λ1=λ2 时,它们的组合 c1y1+c2y2c_1y_1+c_2y_2c1y1+c2y2 就是全解。
在线性代数中,我们希望有矩阵和特征值,因此我们将数量方程(带有 y′′y''y′′)转换成一个关于 yyyy′′y''y′′ 的向量方程:只含有一阶导数。假设质量 m=1m=1m=1,关于 u=(y,y′)\boldsymbol u=(y,y')u=(y,y) 的两个方程可以得到 du/dt=Aud\boldsymbol u/dt=A\boldsymbol udu/dt=Audy/dt=y′dy′/dt=−ky−by′转换成ddt[yy′]=[01−k−b][yy′]=Au(6.3.9)\begin{array}{l}\pmb{dy/dt =y'}\\\pmb{dy'/dt=-ky-by'}\end{array}\kern 10pt转换成\kern 10pt\frac{d}{dt}\begin{bmatrix}y\\y'\end{bmatrix}=\begin{bmatrix}\kern 7pt\pmb0&\kern 7pt\pmb1\\\pmb{-k}&\pmb{-b}\end{bmatrix}\begin{bmatrix}y\\y'\end{bmatrix}=A\boldsymbol u\kern 15pt(6.3.9)dy/dt=ydy/dt=kyby转换成dtd[yy]=[0k1b][yy]=Au(6.3.9)第一个方程 dy/dt=y′dy/dt=y'dy/dt=y 是个平凡方程,但是是成立的,第二个方程将 y′′、y′y''、y'y′′yyyy 联系起来,实际上就是方程(6.3.8)。将它们结合起来,可以将 u′\boldsymbol u'uu\boldsymbol uu 联系起来,所以我们可以通过 AAA 的特征值来求解 u′=Au\boldsymbol u'=A\boldsymbol uu=Au

A−λI=[−λ1−k−b−λ]的行列式λ2+bλ+k=0\boxed{A-\lambda I=\begin{bmatrix}-\lambda&1\\-k&-b-\lambda\end{bmatrix}}\kern 10pt的行列式\kern 10pt\boxed{\lambda^2+b\lambda+k=0}AλI=[λk1bλ]的行列式λ2++k=0

这个关于 λ′s\lambda'sλs 的方程和方程(6.3.8)一样!它仍然是 λ2+bλ+k=0\lambda^2+b\lambda+k=0λ2++k=0,因为 m=1m=1m=1λ1\lambda_1λ1λ2\lambda_2λ2 现在是 AAA 的特征值,所有也称为特征根。特征向量和解是:x1=[1λ1]x1=[1λ2]u(t)=c1eλ1t[1λ1]+c2eλ2t[1λ2]\boldsymbol x_1=\begin{bmatrix}1\\\lambda_1\end{bmatrix}\kern 10pt\boldsymbol x_1=\begin{bmatrix}1\\\lambda_2\end{bmatrix}\kern 10pt\boldsymbol u(t)=c_1e^{\lambda_1t}\begin{bmatrix}1\\\lambda_1\end{bmatrix}+c_2e^{\lambda_2t}\begin{bmatrix}1\\\lambda_2\end{bmatrix}x1=[1λ1]x1=[1λ2]u(t)=c1eλ1t[1λ1]+c2eλ2t[1λ2]u(t)\boldsymbol u(t)u(t) 的第一分量是 y=c1eλ1t+c2eλ2ty=c_1e^{\lambda_1t}+c_2e^{\lambda_2t}y=c1eλ1t+c2eλ2t,和前面的解是一样的,也不可能是其它的解。u(t)\boldsymbol u(t)u(t) 的第二分量是速度 dy/dtdy/dtdy/dt。向量问题与数量问题是完全一致的,2×22\times22×2 的 矩阵AAA 称为友矩阵(companion matrix)—— 一个带有 y′′y''y′′ 的二阶方程的伴随。

例3绕一个圆运动的方程 y′′+y=0 和 y=cos⁡t\color{blue}绕一个圆运动的方程\,y''+y=0\,和\,y=\cos t绕一个圆运动的方程y′′+y=0y=cost
这就是主方程,其中质量 m=1m=1m=1,刚度系数 k=1k=1k=1,且 b=0b=0b=0:没有阻尼 。将 y=eλty=e^{\lambda t}y=eλt 代入 y′′+y=0y''+y=0y′′+y=0 得到 λ2+1=0\pmb{\lambda^2+1=0}λ2+1=0,根是 λ=i\pmb{\lambda=i}λ=iλ=−i\pmb{\lambda=-i}λ=ieit+e−ite^{it}+e^{-it}eit+eit 的一半得到解 y=cos⁡ty=\cos ty=cost
作为一个一阶系统,初始值 y(0)=1,y′(0)=0y(0)=1,y'(0)=0y(0)=1y(0)=0 进入 u(0)=(1,0)\boldsymbol u(0)=(1,0)u(0)=(1,0)使用 y′′=−ydudt=ddt[yy′]=[01−10][yy′]=Au(6.3.10)\pmb{使用\,y''=-y}\kern 15pt\frac{d\boldsymbol u}{dt}=\frac{d}{dt}\begin{bmatrix}y\\y'\end{bmatrix}=\begin{bmatrix}\kern 7pt\pmb0&\pmb1\\\pmb{-1}&\pmb0\end{bmatrix}\begin{bmatrix}y\\y'\end{bmatrix}=A\boldsymbol u\kern 15pt(6.3.10)使用y′′=ydtdu=dtd[yy]=[0110][yy]=Au(6.3.10)AAA 的特征值和 λ=i\lambda=iλ=iλ=−i\lambda=-iλ=i 一样,这符合预期,AAA 是一个反对称(anti-symmetric)矩阵,特征向量是 x1=(1,i)\boldsymbol x_1=(1,i)x1=(1,i)x2=(1,−i)\boldsymbol x_2=(1,-i)x2=(1,i),适配 u(0)=(1,0)\boldsymbol u(0)=(1,0)u(0)=(1,0) 的组合是 12(x1+x2)\displaystyle\frac{1}{2}(\boldsymbol x_1+\boldsymbol x_2)21(x1+x2),步骤 222eite^{it}eite−ite^{-it}eit 分别乘上 x′s\boldsymbol x'sxs,步骤 333 是组合纯振荡函数进入 u(t)\boldsymbol u(t)u(t),如期望的得到 y=cos⁡ty=\cos ty=costu(t)=12eit[1i]+12e−it[1−i]=[cos⁡t−sin⁡t]这就是[y(t)y′(t)]\boldsymbol u(t)=\frac{1}{2}e^{it}\begin{bmatrix}1\\i\end{bmatrix}+\frac{1}{2}e^{-it}\begin{bmatrix}\kern 7pt1\\-i\end{bmatrix}=\begin{bmatrix}\pmb{\kern 7pt\cos t}\\\pmb{-\sin t}\end{bmatrix}\kern 15pt这就是\kern 5pt\begin{bmatrix}y(t)\\y'(t)\end{bmatrix}u(t)=21eit[1i]+21eit[1i]=[costsint]这就是[y(t)y(t)]向量 u=(cos⁡t,−sin⁡t)\boldsymbol u=(\cos t,-\sin t)u=(cost,sint) 环绕一个圆(Figure 6.3),由于 cos⁡2t+sin⁡2t=1\cos^2t+\sin^2t=1cos2t+sin2t=1,所以这个圆的半径为 111

四、微分方程的注解

常系数线性方程很容易求解,这里只是微分方程的一部分,微分方程还有更多的内容:

  1. 二阶方程 mu′′+bu′+ku=0mu''+bu'+ku=0mu′′+bu+ku=0 在应用上非常重要,解 u=eλtu=e^{\lambda t}u=eλt 的指数 λ\lambdaλmλ2+bλ+k=0m\lambda^2+b\lambda+k=0mλ2++k=0 的解,阻尼系数 bbb 很关键:
    欠阻尼(Underdamping)b2<4mk\kern 5ptb^2<4mk\kern 5ptb2<4mk临界阻尼(Critical damping)b2=4mk\kern 5ptb^2=4mk\kern 5ptb2=4mk过阻尼(Overdamping)b2>4mk\kern 5ptb^2>4mkb2>4mk
    这个决定了 λ1\lambda_1λ1λ2\lambda_2λ2 是实根、重根还是复数根。如果 λ′s\lambda'sλs 是复数,则解 u(t)u(t)u(t) 会边振荡边衰减。
  2. 我们的方程没有外力的项 f(t)f(t)f(t),我们是求 “零空间解”。除了 un(t)\boldsymbol u_n(t)un(t) 我们还需要一个平衡外力 f(t)f(t)f(t) 的特解 up(t)u_p(t)up(t)时间 s 时输入 f(s)增长因子 eA(t−s)累加在一起得到时间 t 时的输出uparticular=∫0teA(t−s)f(s)ds\begin{array}{l}\pmb{时间\,s\,时输入\,f(s)}\\\pmb{增长因子\,e^{A(t-s)}}\\\pmb{累加在一起得到时间\,t\,时的输出}\end{array}\kern 15pt\boldsymbol u_{\textrm{particular}}=\int_0^te^{A(t-s)}f(s)ds时间s时输入f(s)增长因子eA(ts)累加在一起得到时间t时的输出uparticular=0teA(ts)f(s)ds

在实际应用中,非线性微分方程都是使用数值方法求解,有一个标准且准确的方法龙格-库塔法 “Rung-Kutta”,这个方法是以它的发现者命名的。通过分析可以发现 du/dt=f(u)du/dt=f(u)du/dt=f(u) 的常数解,是 u(t)=Yu(t)=Yu(t)=Yf(Y)=0f(Y)=0f(Y)=0du/dt=0du/dt=0du/dt=0 的解:没有移动。我们也能够了解接近 u=Yu=Yu=Y 是稳定还是不稳定,远离 YYY 的,使用计算机来做。

五、差分方程

要将一个圆显示在屏幕上,我们用一个差分方程来代替 y′′=−yy''=-yy′′=y,在使用 Y(t+Δt)−2Y(t)+Y(t−Δt)Y(t+\Delta t)-2Y(t)+Y(t-\Delta t)Y(t+Δt)2Y(t)+Y(tΔt) 除以 (Δt)2(\Delta t)^2(Δt)2 来近似 y′′y''y′′ 时有三种选择:

F从 n−1 向前C中心在时间 nB从 n+1 向后Yn+1−2Yn+Yn−1(Δt)2=−Yn−1−Yn−Yn+1(6.3.11 F)(6.3.11 C)(6.3.11 B)\begin{array}{ll}\textrm {\pmb F}&\pmb{从\,n-1\,向前}\\\pmb{\textrm C}&\pmb{中心在时间\,n}\\\pmb{\textrm B}&\pmb{从\,n+1\,向后}\end{array}\kern 15pt{\color{blue}\frac{Y_{n+1}-2Y_n+Y_{n-1}}{(\Delta t)^2}=\begin{array}{l}-Y_{n-1}\\-Y_n\\-Y_{n+1}\end{array}}\kern 18pt\begin{matrix}(6.3.11\,\textrm {\pmb F})\\(6.3.11\,\textrm{\pmb C})\\(6.3.11\,\textrm{\pmb B})\end{matrix}FCBn1向前中心在时间nn+1向后(Δt)2Yn+12Yn+Yn1=Yn1YnYn+1(6.3.11F)(6.3.11C)(6.3.11B)

Figure 6.3 显示 y(t)=cos⁡ty(t)=\cos ty(t)=cost 确实在 t=2πt=2\pit=2π 时完成一个圆,在时间步长 Δt=2π/32\Delta t=2\pi/32Δt=2π/32 时,这三种差分方法在 323232 个时间步长并不能完成一个完美的圆。这些图片可以用特征值来解释:前向∣λ∣>1(螺旋向外 spiral out)中心∣λ∣=1(最优)后向∣λ∣<1(螺旋向内 spiral in){\color{blue}前向\kern 5pt|\lambda|>1}\kern 3pt(\pmb{螺旋向外\,\textrm{spiral\,out}})\kern 10pt{\color{blue}{中心}\kern 5pt|\lambda|=1}\kern 3pt(\pmb{最优})\kern 10pt{\color{blue}后向\kern 5pt|\lambda|<1}\kern 3pt(\pmb{螺旋向内\,\textrm{spiral\,in}})前向λ>1(螺旋向外spiralout)中心λ=1(最优)后向λ<1(螺旋向内spiralin)222 步的方程(6.3.11)简化成 111 步的系统 Un+1=AUn\boldsymbol U_{n+1}=A\boldsymbol U_nUn+1=AUn,由离散的未知数 Un=(Yn,Zn)\boldsymbol U_n=(Y_n,Z_n)Un=(Yn,Zn) 代替 u=(y,y′)\boldsymbol u=(y,y')u=(y,y),从 U(0)\boldsymbol U(0)U(0) 开始,我们取 nnn 个时间步长 Δt\Delta tΔt

前向(6.3.11 F)Yn+1=Yn+Δt ZnZn+1=Zn−Δt Yn变为Un+1=[1Δt−Δt1][YnZn]=AUn(6.3.12)前向\kern 4pt(6.3.11\,\textrm{\pmb F})\kern 10pt\boxed{\begin{matrix}Y_{n+1}=Y_n+\Delta t \,Z_n\\Z_{n+1}=Z_n-\Delta t\,Y_n\end{matrix}}\kern 10pt变为\kern 10pt\boxed{\boldsymbol U_{n+1}=\begin{bmatrix}1&\Delta t\\-\Delta t&1\end{bmatrix}\begin{bmatrix}Y_n\\Z_n\end{bmatrix}=A\boldsymbol U_n}\kern 15pt(6.3.12)前向(6.3.11F)Yn+1=Yn+ΔtZnZn+1=ZnΔtYn变为Un+1=[1ΔtΔt1][YnZn]=AUn(6.3.12)

这些和 Y′=Z、Z′=−YY'=Z、Z'=-YY=ZZ=Y 很像,它们是包含时间 nnnn+1n+1n+1 的一阶方程组,将 ZZZ 消去会还原到 “前向” 的二阶方程(6.3.11 F\textrm{\pmb F}F)。
问题:点 (Yn,Zn)(Y_n,Z_n)(Yn,Zn) 是在圆 Y2+Z2=1Y^2+Z^2=1Y2+Z2=1 上吗?答案是不在,它们会如 Figure 6.3 所示的无限长大。我们取幂 AnA^nAn 而不是 eAte^{At}eAt,所以我们检验的是 ∣λ∣|\lambda|λ 的大小而不是特征值的实部。

A 的特征值λ=1±iΔt则 ∣λ∣>1 且 (Yn,Zn) 螺旋向外\pmb{A\,的特征值}\kern 15pt{\color{blue}{\lambda}=1±i\Delta t}\kern 15pt{\color{blue}则\,|\lambda|>1\,且\,(Y_n,Z_n)\,螺旋向外}A的特征值λ=1±iΔtλ>1(Yn,Zn)螺旋向外

在这里插入图片描述
如果选择后向(6.3.11 B\textrm{\pmb B}B)将会得到相反的结果,如 Figure 6.4,注意新的 AAA后向Yn+1=Yn+Δt Zn+1Zn+1=Zn−Δt Yn+1就是[1−ΔtΔt1][Yn+1Zn+1]=[YnZn]=Un(6.3.13)\pmb{后向}\kern 12pt\begin{matrix}Y_{n+1}=Y_n+\Delta t\,Z_{n+1}\\Z_{n+1}=Z_n-\Delta t\,Y_{n+1}\end{matrix}\kern 12pt就是\kern 10pt\begin{bmatrix}1&-\Delta t\\\Delta t&1\end{bmatrix}\begin{bmatrix}Y_{n+1}\\Z_{n+1}\end{bmatrix}=\begin{bmatrix}Y_n\\Z_n\end{bmatrix}=\boldsymbol U_n\kern 16pt(6.3.13)后向Yn+1=Yn+ΔtZn+1Zn+1=ZnΔtYn+1就是[1ΔtΔt1][Yn+1Zn+1]=[YnZn]=Un(6.3.13)这个矩阵的特征值是 1±iΔt1±i\Delta t1±iΔt,但是我们要取它的逆从 Un\boldsymbol U_nUn 得到 Un+1\boldsymbol U_{n+1}Un+1,则 ∣λ∣<1|\lambda|<1λ<1,这个就可以解释为什么后向差分的解螺旋向内到 (0,0)。(0,0)。(0,0)
如果选择中心的方程,可以得到下面的差分方程:中心Yn+1=Yn+Δt ZnZn+1=Zn−Δt Yn+1即[10Δt1][Yn+1Zn+1]=[1Δt01][YnZn]\pmb{中心}\kern 10pt\begin{array}{l}Y_{n+1}=Y_n+\Delta t\,Z_n\\Z_{n+1}=Z_n-\Delta t\,Y_{n+1}\end{array}\kern 10pt即\kern 5pt\begin{bmatrix}1&0\\\Delta t&1\end{bmatrix}\begin{bmatrix}Y_{n+1}\\Z_{n+1}\end{bmatrix}=\begin{bmatrix}1&\Delta t\\0&1\end{bmatrix}\begin{bmatrix}Y_n\\Z_{n}\end{bmatrix}中心Yn+1=Yn+ΔtZnZn+1=ZnΔtYn+1[1Δt01][Yn+1Zn+1]=[10Δt1][YnZn]将上式左边的矩阵取逆,转换成 Un+1=AUn\boldsymbol U_{n+1}=A\boldsymbol U_nUn+1=AUn 的模式:[Yn+1Zn+1]=[1Δt−Δt−(Δt)2+1][YnZn]=AUn\begin{bmatrix}Y_{n+1}\\Z_{n+1}\end{bmatrix}=\begin{bmatrix}1&\Delta t\\-\Delta t&-(\Delta t)^2+1\end{bmatrix}\begin{bmatrix}Y_n\\Z_n\end{bmatrix}=A\boldsymbol U_n[Yn+1Zn+1]=[1ΔtΔt(Δt)2+1][YnZn]=AUnFigure 6.4 的右侧是 323232 步的中心选择,如果 Δt<2\Delta t<2Δt<2 时解很接近圆,这个是经常使用的蛙跳法(leapfrog method),第二差分 Yn+1−2Yn+Yn−1Y_{n+1}-2Y_n+Y_{n-1}Yn+12Yn+Yn1 跳过了式(6.3.11)的中心值 YnY_nYn

在这里插入图片描述
这是化学家研究分子运动的方法(分子动力学有海量的计算);计算机科学一直生机勃发是因为一个微分方程可以被很多差分方程所代替 —— 有些不稳定,有些稳定,有些中性。
实际的工程和实际的物理处理的都是系统(不仅仅是某一点的单个质量),未知数 y\boldsymbol yy 是一个向量,y′′\boldsymbol y''y′′ 的系数是 nnn 个质量的质量矩阵 MMMy\boldsymbol yy 的系数是一个刚度矩阵 KKK,不是一个数字 kkky′\boldsymbol y'y 的系数一个有可能是零的阻尼矩阵。
向量方程 My′′+ky=fMy''+ky=\boldsymbol fMy′′+ky=f 是计算力学的主要部分,它由 Kx=λMxK\boldsymbol x=\lambda M\boldsymbol xKx=λMxM−1KM^{-1}KM1K 的特征值控制。

六、2 × 2 矩阵的稳定性

du/dt=Aud\boldsymbol u/dt=A\boldsymbol udu/dt=Au 是一个基础问题,当 t→∞t\rightarrow\inftyt 时,它的解趋近于 u=0\boldsymbol u=\boldsymbol 0u=0 吗?这个问题通过消耗能量稳定吗?包含 ete^tet 的解是不稳定的,解的稳定性与 AAA 的特征值有关。
全解 u(t)\boldsymbol u(t)u(t) 是由纯解 eλtxe^{\lambda t}\boldsymbol xeλtx 得到的,如果特征值 λ\lambdaλ 是实数,则我们可以很明确的得知 eλte^{\lambda t}eλt 趋近于零的条件:数字 λ\lambdaλ 要为负数。如果特征值是复数 λ=r+is\lambda=r+isλ=r+is,实部的 rrr 一定要是负数,此时 eλte^{\lambda t}eλt 可分解成 erteiste^{rt}e^{ist}erteist,因子 eiste^{ist}eist 的绝对值固定为 111eist=cos⁡st+isin⁡st有∣eist∣2=cos⁡2st+sin⁡2st=1e^{ist}=\cos st+i\sin st\kern 10pt有\kern 10pt|e^{ist}|^2=\cos^2st+\sin^2st=1eist=cosst+isinsteist2=cos2st+sin2st=1λ\lambdaλ 的实部控制着增长( r>0r>0r>0)或衰减(r<0r<0r<0)。
问题是:哪些矩阵都是负特征值? 更准确的说,何时 λ′s\lambda'sλs 的实部都是负数2×22\times22×2 的矩阵这个答案很清楚:

稳定 \kern 6pt当所有的特征值 λ\lambdaλ 都有负实部时,AAA 稳定u(t)→0\boldsymbol u(t)\rightarrow\boldsymbol 0u(t)0。则 2×22\times22×2 的矩阵 A=[abcd]A=\begin{bmatrix}a&b\\c&d\end{bmatrix}A=[acbd] 一定满足下面两个条件:λ1+λ2<0迹 T=a+d一定是负数λ1λ2>0行列式 D=ad−bc 一定时正数\begin{array}{ll}\pmb{\lambda_1+\lambda_2<0}&\color{blue}迹\,T=a+d一定是负数\\\pmb{\lambda_1\lambda_2>0}&\color{blue}行列式\,D=ad-bc\,一定时正数\end{array}λ1+λ2<0λ1λ2>0T=a+d一定是负数行列式D=adbc一定时正数

原因: 如果 λ′s\lambda'sλs 都是实数且都为负数,则它们的和一定是负数,这个就是迹 TTT;它们的积是正数,这是行列式 DDD。这个命题反向也成立,如果 D=λ1λ2D=\lambda_1\lambda_2D=λ1λ2 是正数,则 λ1\lambda_1λ1λ2\lambda_2λ2 同号;如果 T=λ1+λ2T=\lambda_1+\lambda_2T=λ1+λ2 是负数,则符号一定是负。我们可以验证 TTTDDD
如果 λ′s\lambda'sλs 都是复数,它们的形式一定是 r+isr+isr+isr−isr-isris,否则 TTTDDD 将不会是实数( AAA 是实矩阵)。行列式 DDD 直接满足正数的条件,因为 (r+is)(r−is)=r2+s2(r+is)(r-is)=r^2+s^2(r+is)(ris)=r2+s2;迹 TTTr+is+r−is=2rr+is+r-is=2rr+is+ris=2r,所以迹 TTT 是负数,这说明实部 rrr 是负数且矩阵是稳定的。证毕!
Figure 6.5 是抛物线 T2=4DT^2=4DT2=4D 将实数 λ′s\lambda'sλs 和复数 λ′s\lambda'sλs 分割开来,因为 λ2−Tλ+D=0\lambda^2-T\lambda+D=0λ2Tλ+D=0 的解包含有平方根 T2−4D\sqrt{T^2-4D}T24D,抛物线下面是实数,上面是虚数。稳定的区域是图形的左上方的四分之一区域 —— 这里迹 TTT 是负数行列式 DDD 是正数。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值