跳到主要内容

微分方程

参考资料

引入

微分方程(Ordinary Differential Equation,ODE)是含 未知函数及其导数 的方程。求解就是反向地从「变化率」还原出 函数本身

现实中我们常常先知道一个量「怎么变」(变化率所满足的规律),而不知道它「是什么」。比如「人口增长率正比于当前人口」「物体降温速度正比于温差」——这些都是关于变化率的陈述,写成方程就是微分方程。解方程,就是把这些「局部规律」积分成「全局函数」。

基本概念

  • :方程中出现的最高阶导数的阶数。
  • 通解:含 nn 个相互独立任意常数的解(nn 为方程阶数)。这些常数对应「积分时丢失的信息」,每积一次分多出一个。
  • 特解:通解中常数被初始条件确定后的具体解。
  • 初值问题(Cauchy 问题):方程 + 初始条件,恰好定出唯一特解。

直观理解:通解是 一整族曲线(积分曲线),初始条件相当于「钉一颗钉子」,从这族曲线里挑出穿过该点的那一条。nn 阶方程需要 nn 个条件才能完全钉死。

一阶 ODE

一阶方程是基本功,关键是 识别类型、套对方法。下面按「优先尝试的顺序」排列。

可分离变量

dydx=f(x)g(y)dyg(y)=f(x)dx+C\frac{\mathrm{d}y}{\mathrm{d}x}=f(x)g(y)\Rightarrow \int\frac{\mathrm{d}y}{g(y)}=\int f(x)\,\mathrm{d}x+C

这是最理想的情形:把 xxyy 各自「分家」到等号两边,然后两边分别积分。所有一阶方程的求解,本质上都是想方设法 化归到可分离变量

例:解 dydx=2xy\dfrac{\mathrm{d}y}{\mathrm{d}x}=2xy。分离变量 dyy=2xdx\dfrac{\mathrm{d}y}{y}=2x\,\mathrm{d}x,两边积分得 lny=x2+C1\ln|y|=x^2+C_1,即

y=Cex2(C=±eC1R)y=Ce^{x^2}\quad(C=\pm e^{C_1}\in\mathbb{R})

注意分离时除以了 yyy0y\equiv 0 也是解,恰好被 C=0C=0 涵盖。积分常数尽早合并、并回头检查被除掉的解是否被通解覆盖。

齐次方程

形如 dydx=φ ⁣(yx)\dfrac{\mathrm{d}y}{\mathrm{d}x}=\varphi\!\left(\dfrac{y}{x}\right),右端只依赖比值 yx\dfrac{y}{x}。令 u=yxu=\dfrac{y}{x}(即 y=uxy=ux),则 y=u+xdudxy'=u+x\dfrac{\mathrm{d}u}{\mathrm{d}x},代入后变量恰好可分离。换元的着眼点是「右端只认比例」,所以引进比例当新变量。

例:解 dydx=yx+tanyx\dfrac{\mathrm{d}y}{\mathrm{d}x}=\dfrac{y}{x}+\tan\dfrac{y}{x}。令 u=yxu=\dfrac yxy=u+xuy'=u+xu',代入:

u+xdudx=u+tanudutanu=dxxu+x\frac{\mathrm{d}u}{\mathrm{d}x}=u+\tan u\Rightarrow \frac{\mathrm{d}u}{\tan u}=\frac{\mathrm{d}x}{x}

左边 cotudu=lnsinu\int\cot u\,\mathrm{d}u=\ln|\sin u|,积分得 lnsinu=lnx+C1\ln|\sin u|=\ln|x|+C_1,即 sinu=Cx\sin u=Cx。回代 u=yxu=\dfrac yx 得通解 sinyx=Cx\sin\dfrac yx=Cx齐次方程换元后那个 uu 总能消去、剩下可分离的 uuxx

一阶线性方程

dydx+P(x)y=Q(x)\frac{\mathrm{d}y}{\mathrm{d}x}+P(x)y=Q(x)

「线性」指 yyyy' 都只出现 一次方、不相乘。Q(x)0Q(x)\equiv 0 时叫 齐次(可分离变量),否则叫 非齐次

通解公式

y=ePdx(Q(x)ePdxdx+C)y=e^{-\int P\,\mathrm{d}x}\left(\int Q(x)\,e^{\int P\,\mathrm{d}x}\,\mathrm{d}x+C\right)

这个公式可由 常数变易法(Variation of Constants)推出:先解齐次方程得 y=CePdxy=Ce^{-\int P\,\mathrm{d}x},再把常数 CC 「变」成待定函数 C(x)C(x) 代回原方程,解出 C(x)C(x)。「变易常数」的思想——拿齐次解当骨架、让常数随 xx 浮动以吸收非齐次项——在后面高阶方程里还会重现。

例:解 dydx+1xy=sinxx\dfrac{\mathrm{d}y}{\mathrm{d}x}+\dfrac{1}{x}y=\dfrac{\sin x}{x}x>0x>0)。这里 P=1xP=\dfrac1xQ=sinxxQ=\dfrac{\sin x}{x}。积分因子 μ=e1xdx=x\mu=e^{\int\frac1x\,\mathrm{d}x}=x,方程两边乘 xx 后左边凑成 (xy)(xy)'

(xy)=sinxxy=cosx+Cy=Ccosxx(xy)'=\sin x\Rightarrow xy=-\cos x+C\Rightarrow y=\frac{C-\cos x}{x}

用积分因子时,乘 μ\mu 后立刻把左边认成 (μy)(\mu y)',比硬套通解公式更快、更不易错。

提示

记忆方式:「乘积求导」反推。把 μ(x)=ePdx\mu(x)=e^{\int P\,\mathrm{d}x} 视为 积分因子,乘到方程两边后左侧恰是 (yμ)(y\cdot\mu)',于是方程变成 (yμ)=Qμ(y\mu)'=Q\mu,两边直接积分即可。积分因子的作用,就是把杂乱的左边「凑成一个导数」。

伯努利方程

dydx+P(x)y=Q(x)yn(n0,1)\frac{\mathrm{d}y}{\mathrm{d}x}+P(x)y=Q(x)y^n\,(n\ne 0,1)

右端多了个 yny^n,破坏了线性。令 z=y1nz=y^{1-n} 作换元,方程化为关于 zz 的一阶线性方程,再套上面的公式。这是「换元把非线性掰回线性」的典型。

例:解 dydx+y=y2\dfrac{\mathrm{d}y}{\mathrm{d}x}+y=y^2n=2n=2)。令 z=y12=y1z=y^{1-2}=y^{-1},则 z=y2yz'=-y^{-2}y'。原方程两边除以 y2y^2y2y+y1=1y^{-2}y'+y^{-1}=1,即

z+z=1zz=1-z'+z=1\Rightarrow z'-z=-1

这是关于 zz 的一阶线性方程,积分因子 exe^{-x},解得 z=1+Cexz=1+Ce^{x},回代 z=1yz=\dfrac1y 得通解 y=11+Cexy=\dfrac{1}{1+Ce^{x}}

全微分方程

M(x,y)dx+N(x,y)dy=0M(x,y)\,\mathrm{d}x+N(x,y)\,\mathrm{d}y=0,若满足 恰当条件

My=Nx\frac{\partial M}{\partial y}=\frac{\partial N}{\partial x}

则左端恰是某个二元函数 u(x,y)u(x,y) 的全微分 du\mathrm{d}u,原方程即 du=0\mathrm{d}u=0,通解为 u(x,y)=Cu(x,y)=C。直觉上,这说明该方程的积分曲线是某个「势函数」uu 的等高线。求 uu 的方法是把 MMxx 积分、再用 NN 定出关于 yy 的待定部分。

例:解 (2xy+1)dx+(x2+4y)dy=0(2xy+1)\,\mathrm{d}x+(x^2+4y)\,\mathrm{d}y=0。验恰当:My=2x=Nx\dfrac{\partial M}{\partial y}=2x=\dfrac{\partial N}{\partial x},成立。把 MMxx 积分(yy 暂当常数):

u=(2xy+1)dx=x2y+x+ϕ(y)u=\int(2xy+1)\,\mathrm{d}x=x^2y+x+\phi(y)

再用 uy=x2+ϕ(y)=N=x2+4y\dfrac{\partial u}{\partial y}=x^2+\phi'(y)=N=x^2+4y 定出 ϕ(y)=4y\phi'(y)=4y,即 ϕ(y)=2y2\phi(y)=2y^2。故通解 x2y+x+2y2=Cx^2y+x+2y^2=C

可降阶的高阶 ODE

高阶方程一般更难,但若缺了某些项,可以 换元降阶,化成会解的低阶方程。

形式处理
y(n)=f(x)y^{(n)}=f(x)直接 nn 次积分
y=f(x,y)y''=f(x,y')(不显含 yyp=yp=y',化为关于 pp 的一阶方程
y=f(y,y)y''=f(y,y')(不显含 xxp=yp=y'y=pdpdyy''=p\dfrac{\mathrm{d}p}{\mathrm{d}y}

两种换元的区别在于「方程里没有谁」:不显含 yy 时把 p=yp=y' 当成 xx 的函数;不显含 xx 时改把 pp 当成 yy 的函数(用链式法则把 yy'' 改写成 pdpdyp\dfrac{\mathrm{d}p}{\mathrm{d}y}),从而消掉缺席的自变量。

例(不显含 yy):解 y=y+xy''=y'+x。令 p=yp=y',得一阶线性方程 pp=xp'-p=x。积分因子 exe^{-x},解得 p=Cexx1p=Ce^{x}-x-1。再积分一次:

y=pdx=C1exx22x+C2y=\int p\,\mathrm{d}x=C_1 e^{x}-\frac{x^2}{2}-x+C_2

例(不显含 xx):解 yy=(y)2yy''=(y')^2。令 p=yp=y'y=pdpdyy''=p\dfrac{\mathrm{d}p}{\mathrm{d}y},代入得 ypdpdy=p2yp\dfrac{\mathrm{d}p}{\mathrm{d}y}=p^2。约去 ppp0p\ne 0)后分离变量 dpp=dyy\dfrac{\mathrm{d}p}{p}=\dfrac{\mathrm{d}y}{y},得 p=C1yp=C_1 y,即 y=C1yy'=C_1 y,再解得 y=C2eC1xy=C_2 e^{C_1 x}

线性高阶 ODE

解的结构

nn 阶线性方程的解有一套漂亮的「叠加」结构,根源是 线性(解可以线性组合)。

二阶齐次线性方程 y+p(x)y+q(x)y=0y''+p(x)y'+q(x)y=0

  • y1,y2y_1,y_2 是两个 线性无关 解(即不成比例),则通解 y=C1y1+C2y2y=C_1y_1+C_2y_2 覆盖了全部解。两个独立解张成一个二维「解空间」。

二阶非齐次方程 y+py+qy=f(x)y''+py'+qy=f(x)

y=C1y1+C2y2齐次通解 yˉ+y一个特解y=\underbrace{C_1y_1+C_2y_2}_{\text{齐次通解 }\bar y}+\underbrace{y^*}_{\text{一个特解}}

通解 = 对应齐次方程通解 + 任一特解。直觉:齐次通解负责「满足左端结构、含自由常数」,特解负责「顶住右端的 f(x)f(x)」,两者相加既匹配输入又保留自由度。

提示

叠加原理:若右端 f=f1+f2f=f_1+f_2,可分别求 f1f_1f2f_2 对应的特解 y1y_1^*y2y_2^*,则 y1+y2y_1^*+y_2^*ff 的特解。复杂的非齐次项可以「拆开各个击破」。

常系数线性 ODE

系数为常数时,方程可以彻底求解——这是工程中最常用的一类(振动、电路、控制)。

二阶齐次

y+py+qy=0y''+py'+qy=0

由于 erxe^{rx} 求导只是自乘 rr,猜 y=erxy=e^{rx} 代入,得到 特征方程r2+pr+q=0r^2+pr+q=0。它把微分方程的求解 降格成一道二次方程,根据判别式 Δ=p24q\Delta=p^2-4q 分三种情形:

Δ\Delta通解
>0>0r1r2r_1\ne r_2 相异实根y=C1er1x+C2er2xy=C_1e^{r_1 x}+C_2e^{r_2 x}
=0=0r1=r2r_1=r_2 二重根y=(C1+C2x)erxy=(C_1+C_2 x)e^{rx}
<0<0α±βi\alpha\pm\beta i 共轭复根y=eαx(C1cosβx+C2sinβx)y=e^{\alpha x}(C_1\cos\beta x+C_2\sin\beta x)
提示

三种情形对应三类物理行为:相异实根是 过阻尼(不振荡地衰减),重根是 临界阻尼(恰好不振荡),复根是 欠阻尼(衰减振荡,实部 α\alpha 管衰减、虚部 β\beta 管振荡频率)。复根情形用欧拉公式 eiθ=cosθ+isinθe^{i\theta}=\cos\theta+i\sin\theta 把复指数解拆成实的正余弦。

例(相异实根):y5y+6y=0y''-5y'+6y=0,特征方程 r25r+6=(r2)(r3)=0r^2-5r+6=(r-2)(r-3)=0,根 r=2,3r=2,3,通解 y=C1e2x+C2e3xy=C_1 e^{2x}+C_2 e^{3x}

例(重根):y4y+4y=0y''-4y'+4y=0,特征方程 (r2)2=0(r-2)^2=0,二重根 r=2r=2,通解 y=(C1+C2x)e2xy=(C_1+C_2 x)e^{2x}。重根时第二个解要 多乘一个 xx,否则两个解线性相关。

例(共轭复根):y+2y+5y=0y''+2y'+5y=0,特征方程 r2+2r+5=0r^2+2r+5=0,根 r=1±2ir=-1\pm 2i,即 α=1,β=2\alpha=-1,\beta=2,通解 y=ex(C1cos2x+C2sin2x)y=e^{-x}(C_1\cos 2x+C_2\sin 2x)——衰减振荡。

非齐次特解(待定系数法)

当右端 f(x)f(x) 是几类「好」函数时,特解形式可直接 照猫画虎地猜——因为这些函数求导后形态不变。

f(x)=eλxPm(x)f(x)=e^{\lambda x}P_m(x)PmP_mmm 次多项式),特解形式:

y=xkeλxQm(x)y^*=x^k e^{\lambda x}Q_m(x)

其中 QmQ_m同次 待定多项式,kkλ\lambda 作为特征根的重数(不是根则 k=0k=0)。

f(x)=eλx[Pl(x)cosωx+Qn(x)sinωx]f(x)=e^{\lambda x}[P_l(x)\cos\omega x+Q_n(x)\sin\omega x],设 m=max(l,n)m=\max(l,n)

y=xkeλx[Rm(x)cosωx+Sm(x)sinωx]y^*=x^k e^{\lambda x}[R_m(x)\cos\omega x+S_m(x)\sin\omega x]

kkλ+ωi\lambda+\omega i 作为特征根的重数。

自由项类型对应表(最常见情形):

右端 f(x)f(x)特解 yy^* 的待定形式
Pm(x)P_m(x)(多项式)xkQm(x)x^k Q_m(x)
aeλxa\,e^{\lambda x}xkbeλxx^k b\,e^{\lambda x}
acosωx+bsinωxa\cos\omega x+b\sin\omega xxk(Acosωx+Bsinωx)x^k(A\cos\omega x+B\sin\omega x)
提示

那个因子 xkx^k 是关键、也最易漏。当猜测的指数 / 频率 恰好撞上特征根(发生「共振」),原始形式会被齐次解吸收、无法平衡右端,必须乘上 xkx^k 把它「抬」出齐次解空间。kk 取撞上的重数:单根乘 xx,重根乘 x2x^2

例(不共振):解 y3y+2y=2xy''-3y'+2y=2x。齐次特征根 r=1,2r=1,2,故齐次通解 yˉ=C1ex+C2e2x\bar y=C_1 e^x+C_2 e^{2x}。右端是一次多项式、λ=0\lambda=0 不是特征根(k=0k=0),设 y=ax+by^*=ax+b,则 y=ay^{*\prime}=ay=0y^{*\prime\prime}=0,代入:

3a+2(ax+b)=2x2a=2, 3a+2b=0a=1, b=32-3a+2(ax+b)=2x\Rightarrow 2a=2,\ -3a+2b=0\Rightarrow a=1,\ b=\frac32

y=x+32y^*=x+\dfrac32,通解 y=C1ex+C2e2x+x+32y=C_1 e^x+C_2 e^{2x}+x+\dfrac32

例(共振):解 y3y+2y=exy''-3y'+2y=e^{x}。右端 λ=1\lambda=1 恰是特征单根,故 k=1k=1,设 y=axexy^*=ax e^{x}。求导代入(利用 r=1r=1 使一阶项归并)解得 a=1a=-1,故 y=xexy^*=-x e^{x},通解 y=C1ex+C2e2xxexy=C_1 e^x+C_2 e^{2x}-x e^x漏掉那个 xx 会导致代入后恒等式两边对不上、解不出系数——这正是共振的信号。

欧拉方程

xny(n)+a1xn1y(n1)++any=f(x)x^n y^{(n)}+a_1 x^{n-1}y^{(n-1)}+\dots+a_n y=f(x)

特点是 每一项里导数的阶数与 xx 的幂次相等。令 x=etx=e^t(即 t=lnxt=\ln x),可把它化为常系数线性 ODE,再用上面的方法求解。

例:解 x2yxy+y=0x^2 y''-x y'+y=0x>0x>0)。直接试解 y=xry=x^ry=rxr1y'=rx^{r-1}y=r(r1)xr2y''=r(r-1)x^{r-2},代入约去 xrx^r特征方程

r(r1)r+1=r22r+1=(r1)2=0r(r-1)-r+1=r^2-2r+1=(r-1)^2=0

二重根 r=1r=1。重根时第二个解补乘 lnx\ln x(对应换元后 tt 域里的 xx 因子),故通解 y=(C1+C2lnx)xy=(C_1+C_2\ln x)x欧拉方程可直接代 y=xry=x^r 求特征方程,重根 / 复根的处理与常系数情形平行,只是把 xxlnx\ln x 当作对应的「指数 / 一次因子」。

建模直觉

微分方程真正的价值在于 从现实规律列方程。两个原型几乎涵盖所有入门模型:

  • 指数增长 / 衰减:变化率正比于现有量,dydt=ky\dfrac{\mathrm{d}y}{\mathrm{d}t}=ky,解为 y=y0ekty=y_0e^{kt}k>0k>0 是增长(人口、复利),k<0k<0 是衰减(放射性衰变、冷却、药物代谢)。「越多增得越快 / 越多减得越快」的现象都归此型。
  • 简谐振动:恢复力正比于位移且方向相反,d2ydt2+ω2y=0\dfrac{\mathrm{d}^2 y}{\mathrm{d}t^2}+\omega^2 y=0,解为 y=Acos(ωt+φ)y=A\cos(\omega t+\varphi)。弹簧振子、单摆小角度、LC 电路都是它。加上阻尼项 2βy2\beta y' 就回到上面三种判别情形——阻尼大小决定振是不振。

例(放射性衰变 / 半衰期):衰变率正比于现有量 dNdt=λN\dfrac{\mathrm{d}N}{\mathrm{d}t}=-\lambda N,解 N=N0eλtN=N_0 e^{-\lambda t}。半衰期 TT 满足 N02=N0eλT\dfrac{N_0}{2}=N_0 e^{-\lambda T},取对数得 T=ln2λT=\dfrac{\ln 2}{\lambda}——半衰期只由衰变常数决定,与初始量无关。

例(RC 电路充电):电源 EE 经电阻 RR 给电容 CC 充电,由基尔霍夫电压定律 RCdudt+u=ERC\dfrac{\mathrm{d}u}{\mathrm{d}t}+u=Euu 为电容电压),初值 u(0)=0u(0)=0。这是一阶线性方程,齐次解 et/(RC)\propto e^{-t/(RC)}、特解 u=Eu^*=E,故

u(t)=E(1et/(RC))u(t)=E\left(1-e^{-t/(RC)}\right)

电压从 00 按指数曲线逼近电源电压 EE时间常数 τ=RC\tau=RC 决定快慢(约 5τ5\tau 后基本充满)。放电过程把 EE 换成 00,得 u=u0et/(RC)u=u_0 e^{-t/(RC)} 的指数衰减。

例(简谐振动定振幅):弹簧振子 y+ω2y=0y''+\omega^2 y=0,初条件 y(0)=A0y(0)=A_0y(0)=0y'(0)=0。通解 y=C1cosωt+C2sinωty=C_1\cos\omega t+C_2\sin\omega t,代入得 C1=A0C_1=A_0C2=0C_2=0,故 y=A0cosωty=A_0\cos\omega t——从最大位移静止释放,做振幅 A0A_0、角频率 ω\omega 的纯余弦振动。