TT Lab

한국어 English 日本語 中文

开始
博客

博客

工程数学完全征服 第1篇:常微分方程(ODE)——从基础到拉普拉斯变换

对话收听 · 11分钟两位主持人为你讲解本文

工程数学完全征服 第1篇:常微分方程(ODE)

对工科学生来说,工程数学是一门绕不开的课程。特别是常微分方程(ODE,Ordinary Differential Equation),是电子电路分析、控制系统设计、机械振动解析等几乎所有工程领域的数学基础。本文将从 ODE 的基础概念到拉普拉斯变换,以工程应用例题为中心系统讲解。


1. 微分方程基础

什么是微分方程?

微分方程是表示未知函数与其导数之间关系的方程。例如:

dydx=2x,y′′+3y′+2y=0,∂u∂t=k∂2u∂x2\frac{dy}{dx} = 2x, \quad y'' + 3y' + 2y = 0, \quad \frac{\partial u}{\partial t} = k\frac{\partial^2 u}{\partial x^2}

微分方程是对自然现象和工程系统进行数学建模的核心工具。

分类:ODE vs PDE

常微分方程(ODE):只包含对一个自变量的导数。

d2xdt2+2dxdt+x=0\frac{d^2x}{dt^2} + 2\frac{dx}{dt} + x = 0

偏微分方程(PDE):包含对两个及以上自变量的偏导数。

∂u∂t=c2∂2u∂x2\frac{\partial u}{\partial t} = c^2\frac{\partial^2 u}{\partial x^2}

本文聚焦于 ODE。

阶数(Order)与次数(Degree)

阶数是方程中出现的最高阶导数的阶。

次数(degree)是最高阶导数的指数。在大多数工程问题中,次数为 1。

线性 vs 非线性

线性 ODE:未知函数及其导数只以一次项出现。

an(x)y(n)+an−1(x)y(n−1)+⋯+a1(x)y′+a0(x)y=f(x)a_n(x)y^{(n)} + a_{n-1}(x)y^{(n-1)} + \cdots + a_1(x)y' + a_0(x)y = f(x)

非线性 ODE:包含 y2y^2、y⋅y′y \cdot y'、sin⁡(y)\sin(y) 等非线性项。

y′′+sin⁡(y)=0(单摆方程)y'' + \sin(y) = 0 \quad \text{(单摆方程)}

通解、特解、奇异解

ODE 在工程中的应用

工程系统大多用 ODE 来描述。

RC 充电电路: RCdvdt+v=VsRC\frac{dv}{dt} + v = V_s

弹簧-质量-阻尼器系统: mx¨+cx˙+kx=F(t)m\ddot{x} + c\dot{x} + kx = F(t)

人口增长模型: dPdt=kP\frac{dP}{dt} = kP

RL 电路: Ldidt+Ri=E(t)L\frac{di}{dt} + Ri = E(t)

以上全部都是 ODE,掌握其求解方法,就能够完整分析工程系统的动态行为。


2. 一阶常微分方程

2.1 变量分离法(Separation of Variables)

形式:dydx=f(x)g(y)\frac{dy}{dx} = f(x)g(y)

求解过程:

dyg(y)=f(x)dx\frac{dy}{g(y)} = f(x)dx

两边同时积分:

∫dyg(y)=∫f(x)dx+C\int \frac{dy}{g(y)} = \int f(x)dx + C

例题:RC 充电电路

电路方程: dvdt=Vs−vRC\frac{dv}{dt} = \frac{V_s - v}{RC}

分离变量: dvVs−v=dtRC\frac{dv}{V_s - v} = \frac{dt}{RC}

积分: −ln⁡∣Vs−v∣=tRC+C1-\ln|V_s - v| = \frac{t}{RC} + C_1

代入初始条件 v(0)=0v(0) = 0:

Vs−v=Vse−t/(RC)V_s - v = V_s e^{-t/(RC)}

v(t)=Vs(1−e−t/(RC))\boxed{v(t) = V_s\left(1 - e^{-t/(RC)}\right)}

该结果表示 RC 电路的暂态响应(transient response)。电压以时间常数 τ=RC\tau = RC 决定的速度收敛到 VsV_s。

物理意义:

2.2 积分因子法(Integrating Factor Method)

线性一阶 ODE 的标准形: dydx+P(x)y=Q(x)\frac{dy}{dx} + P(x)y = Q(x)

积分因子:μ(x)=e∫P(x)dx\mu(x) = e^{\int P(x)dx}

推导过程:

两边同乘 μ(x)\mu(x): μ(x)dydx+μ(x)P(x)y=μ(x)Q(x)\mu(x)\frac{dy}{dx} + \mu(x)P(x)y = \mu(x)Q(x)

左边由乘积求导法则可写成: ddx[μ(x)y]=μ(x)Q(x)\frac{d}{dx}[\mu(x)y] = \mu(x)Q(x)

积分后: μ(x)y=∫μ(x)Q(x)dx+C\mu(x)y = \int \mu(x)Q(x)dx + C

y=1μ(x)[∫μ(x)Q(x)dx+C]\boxed{y = \frac{1}{\mu(x)}\left[\int \mu(x)Q(x)dx + C\right]}

例题:RL 电路

Ldidt+Ri=EL\frac{di}{dt} + Ri = E

化为标准形: didt+RLi=EL\frac{di}{dt} + \frac{R}{L}i = \frac{E}{L}

积分因子:μ(t)=e(R/L)t\mu(t) = e^{(R/L)t}

ddt[e(R/L)t⋅i]=ELe(R/L)t\frac{d}{dt}\left[e^{(R/L)t} \cdot i\right] = \frac{E}{L}e^{(R/L)t}

积分: e(R/L)t⋅i=ERe(R/L)t+Ce^{(R/L)t} \cdot i = \frac{E}{R}e^{(R/L)t} + C

代入初始条件 i(0)=0i(0) = 0:

i(t)=ER(1−e−(R/L)t)\boxed{i(t) = \frac{E}{R}\left(1 - e^{-(R/L)t}\right)}

电流以时间常数 τ=L/R\tau = L/R 收敛到稳态值 E/RE/R。

2.3 恰当微分方程(Exact ODE)

形式:M(x,y)dx+N(x,y)dy=0M(x,y)dx + N(x,y)dy = 0

恰当条件: ∂M∂y=∂N∂x\frac{\partial M}{\partial y} = \frac{\partial N}{\partial x}

若满足该条件,则存在使 F(x,y)=CF(x,y) = C 成立的势函数 FF。

求解方法:

  1. 由 ∂F∂x=M\frac{\partial F}{\partial x} = M,对 xx 积分求出 FF
  2. 用 ∂F∂y=N\frac{\partial F}{\partial y} = N 这一条件确定积分常数
  3. 通解:F(x,y)=CF(x,y) = C

例题:

(2xy+y2)dx+(x2+2xy)dy=0(2xy + y^2)dx + (x^2 + 2xy)dy = 0

验证是否恰当: ∂M∂y=2x+2y=∂N∂x\frac{\partial M}{\partial y} = 2x + 2y = \frac{\partial N}{\partial x}

是恰当方程,因此: F=∫M dx=∫(2xy+y2)dx=x2y+xy2+g(y)F = \int M\,dx = \int (2xy + y^2)dx = x^2y + xy^2 + g(y)

由 ∂F∂y=x2+2xy+g′(y)=N=x2+2xy\frac{\partial F}{\partial y} = x^2 + 2xy + g'(y) = N = x^2 + 2xy,得 g′(y)=0g'(y) = 0,g(y)=Cg(y) = C

通解:x2y+xy2=Cx^2y + xy^2 = C

2.4 伯努利方程(Bernoulli Equation)

形式: dydx+P(x)y=Q(x)yn(n≠0,1)\frac{dy}{dx} + P(x)y = Q(x)y^n \quad (n \neq 0, 1)

换元:令 v=y1−nv = y^{1-n},即可化为线性 ODE。

由 v′=(1−n)y−ny′v' = (1-n)y^{-n}y',将原方程两边除以 yny^n:

y−ndydx+P(x)y1−n=Q(x)y^{-n}\frac{dy}{dx} + P(x)y^{1-n} = Q(x)

11−ndvdx+P(x)v=Q(x)\frac{1}{1-n}\frac{dv}{dx} + P(x)v = Q(x)

dvdx+(1−n)P(x)v=(1−n)Q(x)\frac{dv}{dx} + (1-n)P(x)v = (1-n)Q(x)

这是关于 vv 的线性一阶 ODE,可用积分因子法求解。

应用:逻辑斯蒂增长模型 dPdt=rP(1−PK)\frac{dP}{dt} = rP\left(1 - \frac{P}{K}\right) 就是 n=2n=2 的伯努利方程。


3. 二阶线性常微分方程

3.1 齐次方程(Homogeneous)

标准形: ay′′+by′+cy=0ay'' + by' + cy = 0

特征方程的推导:代入 y=erxy = e^{rx}。

ar2erx+brerx+cerx=0a r^2 e^{rx} + b r e^{rx} + c e^{rx} = 0

ar2+br+c=0\boxed{ar^2 + br + c = 0}

根据判别式 Δ=b2−4ac\Delta = b^2 - 4ac 的符号,会出现三种情形。

情形 1:两个不同实根(Δ>0\Delta > 0)

若 r1≠r2r_1 \neq r_2: y=C1er1x+C2er2xy = C_1 e^{r_1 x} + C_2 e^{r_2 x}

情形 2:重根(Δ=0\Delta = 0)

若 r1=r2=r=−b/(2a)r_1 = r_2 = r = -b/(2a): y=(C1+C2x)erxy = (C_1 + C_2 x)e^{rx}

之所以要加上 C2xerxC_2 x e^{rx},是因为需要构造出另一个线性无关的解,使朗斯基行列式(Wronskian)不为零。

情形 3:共轭复根(Δ<0\Delta < 0)

若 r=α±iβr = \alpha \pm i\beta(其中 α=−b/(2a)\alpha = -b/(2a),β=4ac−b2/(2a)\beta = \sqrt{4ac - b^2}/(2a)): y=eαx(C1cos⁡βx+C2sin⁡βx)y = e^{\alpha x}(C_1\cos\beta x + C_2\sin\beta x)

这是借助欧拉公式 eiβx=cos⁡βx+isin⁡βxe^{i\beta x} = \cos\beta x + i\sin\beta x,转换为实数解之后的形式。

3.2 RLC 电路完整分析

电路方程(以电荷 q(t)q(t) 表示): Ld2qdt2+Rdqdt+qC=0L\frac{d^2q}{dt^2} + R\frac{dq}{dt} + \frac{q}{C} = 0

化为标准形: q′′+RLq′+1LCq=0q'' + \frac{R}{L}q' + \frac{1}{LC}q = 0

特征方程: r2+RLr+1LC=0r^2 + \frac{R}{L}r + \frac{1}{LC} = 0

r=−R2L±(R2L)2−1LCr = -\frac{R}{2L} \pm \sqrt{\left(\frac{R}{2L}\right)^2 - \frac{1}{LC}}

定义阻尼系数 α=R/(2L)\alpha = R/(2L)、谐振频率 ω0=1/LC\omega_0 = 1/\sqrt{LC},则:

r=−α±α2−ω02r = -\alpha \pm \sqrt{\alpha^2 - \omega_0^2}

过阻尼(Overdamped):α>ω0\alpha > \omega_0(R>2L/CR > 2\sqrt{L/C})

q(t)=C1er1t+C2er2t(r1,r2<0)q(t) = C_1 e^{r_1 t} + C_2 e^{r_2 t} \quad (r_1, r_2 < 0)

由两个指数项之和构成,没有振荡,单调递减。

临界阻尼(Critically Damped):α=ω0\alpha = \omega_0(R=2L/CR = 2\sqrt{L/C})

q(t)=(C1+C2t)e−αtq(t) = (C_1 + C_2 t)e^{-\alpha t}

没有振荡,以最快速度回到平衡状态。在控制系统设计中极为重要。

欠阻尼(Underdamped):α<ω0\alpha < \omega_0(R<2L/CR < 2\sqrt{L/C})

定义衰减振荡频率 ωd=ω02−α2\omega_d = \sqrt{\omega_0^2 - \alpha^2},则:

q(t)=e−αt(C1cos⁡ωdt+C2sin⁡ωdt)q(t) = e^{-\alpha t}(C_1\cos\omega_d t + C_2\sin\omega_d t)

一边振荡一边衰减。在通信电路、振动系统中很常见。

物理意义总结:

条件名称响应特性
R>2L/CR > 2\sqrt{L/C}过阻尼无振荡,缓慢衰减
R=2L/CR = 2\sqrt{L/C}临界阻尼无振荡,最快衰减
R<2L/CR < 2\sqrt{L/C}欠阻尼振荡衰减
R=0R = 0无阻尼持续振荡

3.3 非齐次方程(Non-homogeneous)

形式: ay′′+by′+cy=f(x)ay'' + by' + cy = f(x)

完全解:y=yh+ypy = y_h + y_p

待定系数法(Method of Undetermined Coefficients)

根据 f(x)f(x) 的形式,猜测 ypy_p 的形式。

f(x)f(x) 的形式ypy_p 的猜测形式
keaxke^{ax}AeaxAe^{ax}
kxnkx^nAnxn+⋯+A1x+A0A_n x^n + \cdots + A_1 x + A_0
kcos⁡ωxk\cos\omega x 或 ksin⁡ωxk\sin\omega xAcos⁡ωx+Bsin⁡ωxA\cos\omega x + B\sin\omega x
keaxcos⁡ωxke^{ax}\cos\omega xeax(Acos⁡ωx+Bsin⁡ωx)e^{ax}(A\cos\omega x + B\sin\omega x)

注意:若 ypy_p 的猜测形式与 yhy_h 中的项重合,需要乘以 xx 来修正。

例题:y′′+4y=3cos⁡2xy'' + 4y = 3\cos 2x

齐次解:yh=C1cos⁡2x+C2sin⁡2xy_h = C_1\cos 2x + C_2\sin 2x

由于 ypy_p 的猜测形式与 yhy_h 重合,需要修正: yp=x(Acos⁡2x+Bsin⁡2x)y_p = x(A\cos 2x + B\sin 2x)

代入后计算得:A=0A = 0,B=3/4B = 3/4

yp=34xsin⁡2xy_p = \frac{3}{4}x\sin 2x

这是共振(resonance)现象,振幅随时间成正比增大。

受迫振动响应:

mx¨+cx˙+kx=F0cos⁡ωtm\ddot{x} + c\dot{x} + kx = F_0\cos\omega t

稳态特解: xp(t)=F0/k(1−r2)2+(2ζr)2cos⁡(ωt−ϕ)x_p(t) = \frac{F_0/k}{\sqrt{(1-r^2)^2 + (2\zeta r)^2}}\cos(\omega t - \phi)

其中频率比 r=ω/ωnr = \omega/\omega_n,阻尼比 ζ=c/(2mk)\zeta = c/(2\sqrt{mk})。

在 r=1r = 1(共振条件)时振幅达到最大。

参数变易法(Variation of Parameters)

用于待定系数法无法适用的一般 f(x)f(x)。

已知 yh=C1y1+C2y2y_h = C_1 y_1 + C_2 y_2 时:

yp=−y1∫y2fWdx+y2∫y1fWdxy_p = -y_1 \int \frac{y_2 f}{W}dx + y_2 \int \frac{y_1 f}{W}dx

朗斯基行列式(Wronskian):W=y1y2′−y1′y2W = y_1 y_2' - y_1' y_2

该公式适用于任意连续函数 f(x)f(x)。


4. 微分方程组

4.1 矩阵表示

由 nn 个一阶 ODE 组成的方程组:

dXdt=AX\frac{d\mathbf{X}}{dt} = A\mathbf{X}

其中 X=[x1,x2,…,xn]T\mathbf{X} = [x_1, x_2, \ldots, x_n]^T,AA 为 n×nn \times n 系数矩阵。

4.2 特征值/特征向量解法

解的形式:X=veλt\mathbf{X} = \mathbf{v}e^{\lambda t}

代入后得:λv=Av\lambda \mathbf{v} = A\mathbf{v}

也就是说,λ\lambda 是 AA 的特征值,v\mathbf{v} 是对应的特征向量。

特征方程:det⁡(A−λI)=0\det(A - \lambda I) = 0

例题:两个相连的水箱系统

ddt(x1x2)=(−211−2)(x1x2)\frac{d}{dt}\begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = \begin{pmatrix} -2 & 1 \\ 1 & -2 \end{pmatrix}\begin{pmatrix} x_1 \\ x_2 \end{pmatrix}

特征方程:(λ+2)2−1=0(\lambda+2)^2 - 1 = 0

λ1=−1,λ2=−3\lambda_1 = -1, \quad \lambda_2 = -3

特征向量:v1=[1,1]T\mathbf{v}_1 = [1, 1]^T,v2=[1,−1]T\mathbf{v}_2 = [1, -1]^T

通解: X=C1(11)e−t+C2(1−1)e−3t\mathbf{X} = C_1 \begin{pmatrix} 1 \\ 1 \end{pmatrix} e^{-t} + C_2 \begin{pmatrix} 1 \\ -1 \end{pmatrix} e^{-3t}

4.3 电路网络分析应用

带有两个回路的电路(基尔霍夫电压定律):

L1di1dt+R1i1−Mdi2dt=E1(t)L_1\frac{di_1}{dt} + R_1 i_1 - M\frac{di_2}{dt} = E_1(t) L2di2dt+R2i2−Mdi1dt=E2(t)L_2\frac{di_2}{dt} + R_2 i_2 - M\frac{di_1}{dt} = E_2(t)

其中 MM 为互感。将其整理为矩阵形式后,可用特征值法或拉普拉斯变换求解。


5. 拉普拉斯变换(Laplace Transform)

5.1 定义与收敛

定义: L{f(t)}=F(s)=∫0∞f(t)e−stdt\mathcal{L}\{f(t)\} = F(s) = \int_0^\infty f(t)e^{-st}dt

s=σ+jωs = \sigma + j\omega 是复变量,积分要收敛,需要满足 Re(s)>σc\text{Re}(s) > \sigma_c(收敛域右侧边界)。

为什么要用拉普拉斯变换?

5.2 主要变换对

f(t)f(t)F(s)=L{f(t)}F(s) = \mathcal{L}\{f(t)\}
11(单位阶跃)1s\dfrac{1}{s}
tt1s2\dfrac{1}{s^2}
tnt^nn!sn+1\dfrac{n!}{s^{n+1}}
eate^{at}1s−a\dfrac{1}{s-a}
sin⁡ωt\sin\omega tωs2+ω2\dfrac{\omega}{s^2+\omega^2}
cos⁡ωt\cos\omega tss2+ω2\dfrac{s}{s^2+\omega^2}
eatsin⁡ωte^{at}\sin\omega tω(s−a)2+ω2\dfrac{\omega}{(s-a)^2+\omega^2}
eatcos⁡ωte^{at}\cos\omega ts−a(s−a)2+ω2\dfrac{s-a}{(s-a)^2+\omega^2}
δ(t)\delta(t)(冲激函数)11
u(t−a)u(t-a)(延迟阶跃)e−ass\dfrac{e^{-as}}{s}

推导示例:L{eat}\mathcal{L}\{e^{at}\}

L{eat}=∫0∞eate−stdt=∫0∞e−(s−a)tdt=[e−(s−a)t−(s−a)]0∞=1s−a\mathcal{L}\{e^{at}\} = \int_0^\infty e^{at} e^{-st} dt = \int_0^\infty e^{-(s-a)t} dt = \left[\frac{e^{-(s-a)t}}{-(s-a)}\right]_0^\infty = \frac{1}{s-a}

当 s>as > a 时收敛。

5.3 主要性质

线性性: L{af(t)+bg(t)}=aF(s)+bG(s)\mathcal{L}\{af(t) + bg(t)\} = aF(s) + bG(s)

时移(第一移位定理): L{eatf(t)}=F(s−a)\mathcal{L}\{e^{at}f(t)\} = F(s-a)

频移(第二移位定理): L{f(t−a)u(t−a)}=e−asF(s)\mathcal{L}\{f(t-a)u(t-a)\} = e^{-as}F(s)

导数变换(最重要的性质): L{f′(t)}=sF(s)−f(0)\mathcal{L}\{f'(t)\} = sF(s) - f(0) L{f′′(t)}=s2F(s)−sf(0)−f′(0)\mathcal{L}\{f''(t)\} = s^2F(s) - sf(0) - f'(0) L{f(n)(t)}=snF(s)−sn−1f(0)−sn−2f′(0)−⋯−f(n−1)(0)\mathcal{L}\{f^{(n)}(t)\} = s^nF(s) - s^{n-1}f(0) - s^{n-2}f'(0) - \cdots - f^{(n-1)}(0)

初始条件会在 ss 域中被自动纳入。

积分变换: L{∫0tf(τ)dτ}=F(s)s\mathcal{L}\left\{\int_0^t f(\tau)d\tau\right\} = \frac{F(s)}{s}

卷积定理(Convolution Theorem): L{(f∗g)(t)}=F(s)G(s)\mathcal{L}\{(f*g)(t)\} = F(s)G(s)

其中 (f∗g)(t)=∫0tf(τ)g(t−τ)dτ(f*g)(t) = \int_0^t f(\tau)g(t-\tau)d\tau

该定理从数学上证明了:系统的冲激响应与输入信号的卷积,就是系统的输出。

终值定理: lim⁡t→∞f(t)=lim⁡s→0sF(s)\lim_{t\to\infty} f(t) = \lim_{s\to 0} sF(s)

不必在 tt 域求解,就能直接得到稳态值。

初值定理: lim⁡t→0+f(t)=lim⁡s→∞sF(s)\lim_{t\to 0^+} f(t) = \lim_{s\to\infty} sF(s)

5.4 拉普拉斯逆变换

部分分式分解(Partial Fraction Decomposition):

将 F(s)=P(s)/Q(s)F(s) = P(s)/Q(s) 的分母因式分解,再拆解为变换表中各项之和。

情形 1:不同的实数极点

F(s)=N(s)(s−p1)(s−p2)⋯(s−pn)=A1s−p1+A2s−p2+⋯F(s) = \frac{N(s)}{(s-p_1)(s-p_2)\cdots(s-p_n)} = \frac{A_1}{s-p_1} + \frac{A_2}{s-p_2} + \cdots

Ak=lim⁡s→pk(s−pk)F(s)A_k = \lim_{s\to p_k}(s-p_k)F(s)

情形 2:重极点(s=ps = p 为 mm 重根)

F(s)=⋯+Am(s−p)m+Am−1(s−p)m−1+⋯+A1s−pF(s) = \cdots + \frac{A_m}{(s-p)^m} + \frac{A_{m-1}}{(s-p)^{m-1}} + \cdots + \frac{A_1}{s-p}

Ak=1(m−k)![dm−kdsm−k(s−p)mF(s)]s=pA_k = \frac{1}{(m-k)!}\left[\frac{d^{m-k}}{ds^{m-k}}(s-p)^m F(s)\right]_{s=p}

情形 3:共轭复极点

As+Bs2+2αs+(α2+β2)⇒e−αt(C1cos⁡βt+C2sin⁡βt)\frac{As + B}{s^2 + 2\alpha s + (\alpha^2 + \beta^2)} \Rightarrow e^{-\alpha t}(C_1\cos\beta t + C_2\sin\beta t)

亥维赛展开定理(Heaviside Expansion):

当分母是不同一次因式的乘积时: F(s)=∑k=1nN(pk)Q′(pk)⋅1s−pkF(s) = \sum_{k=1}^n \frac{N(p_k)}{Q'(p_k)} \cdot \frac{1}{s - p_k}

5.5 用拉普拉斯变换求解 ODE

例题:RLC 串联电路暂态响应

Ld2idt2+Rdidt+iC=E0δ(t)L\frac{d^2i}{dt^2} + R\frac{di}{dt} + \frac{i}{C} = E_0\delta(t)

初始条件:i(0)=0i(0) = 0,i′(0)=0i'(0) = 0(电容上无电荷)

求解:

两边应用拉普拉斯变换:

I(s)=E0/Ls2+(R/L)s+1/(LC)I(s) = \frac{E_0/L}{s^2 + (R/L)s + 1/(LC)}

定义 α=R/(2L)\alpha = R/(2L)、ω0=1/LC\omega_0 = 1/\sqrt{LC}、ωd=ω02−α2\omega_d = \sqrt{\omega_0^2 - \alpha^2}(欠阻尼情形):

I(s)=E0/L(s+α)2+ωd2I(s) = \frac{E_0/L}{(s+\alpha)^2 + \omega_d^2}

拉普拉斯逆变换(查表:L{e−αtsin⁡ωdt}=ωd/[(s+α)2+ωd2]\mathcal{L}\{e^{-\alpha t}\sin\omega_d t\} = \omega_d/[(s+\alpha)^2+\omega_d^2]):

i(t)=E0Lωde−αtsin⁡ωdti(t) = \frac{E_0}{L\omega_d}e^{-\alpha t}\sin\omega_d t

这就是 RLC 电路的冲激响应,同时也是它的格林函数。


6. 用 Python 数值求解 ODE

6.1 使用 scipy.integrate.solve_ivp

import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt

# RLC 电路仿真(2阶 ODE -> 1阶 ODE 方程组)
# L * q'' + R * q' + q/C = Vs(阶跃输入)
# 状态变量: y[0] = q(电荷),y[1] = i = dq/dt(电流)

def rlc_circuit(t, y, R, L, C, Vs):
    q, dq_dt = y
    # q'' = (Vs - R*i - q/C) / L
    d2q_dt2 = (Vs - R * dq_dt - q / C) / L
    return [dq_dt, d2q_dt2]

# 电路参数
R = 100      # 电阻 (Ohm)
L = 0.1      # 电感 (H)
C = 1e-6     # 电容 (F)
Vs = 10.0    # 电源电压 (V)

# 计算谐振频率与阻尼比
omega_0 = 1.0 / np.sqrt(L * C)
alpha = R / (2 * L)
zeta = alpha / omega_0
print(f"谐振频率: {omega_0/(2*np.pi):.1f} Hz")
print(f"阻尼比 zeta: {zeta:.3f}")
if zeta > 1:
    print("-> 过阻尼")
elif zeta == 1:
    print("-> 临界阻尼")
else:
    print("-> 欠阻尼")

# 数值求解
y0 = [0.0, 0.0]  # 初始条件: q(0) = 0, i(0) = 0
t_span = (0, 0.01)
t_eval = np.linspace(0, 0.01, 2000)

sol = solve_ivp(
    rlc_circuit, t_span, y0,
    t_eval=t_eval,
    args=(R, L, C, Vs),
    method='RK45',
    rtol=1e-8,
    atol=1e-10
)

# 计算电压: v_C = q/C
v_C = sol.y[0] / C
i = sol.y[1]

# 可视化
fig, axes = plt.subplots(2, 1, figsize=(10, 8))

axes[0].plot(sol.t * 1e3, v_C, 'b-', linewidth=2, label='电容电压')
axes[0].axhline(y=Vs, color='r', linestyle='--', label=f'稳态 {Vs}V')
axes[0].set_xlabel('时间 (ms)')
axes[0].set_ylabel('电压 (V)')
axes[0].set_title('RLC 串联电路 - 阶跃响应')
axes[0].legend()
axes[0].grid(True, alpha=0.3)

axes[1].plot(sol.t * 1e3, i * 1e3, 'g-', linewidth=2, label='电流')
axes[1].set_xlabel('时间 (ms)')
axes[1].set_ylabel('电流 (mA)')
axes[1].set_title('RLC 电路电流')
axes[1].legend()
axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('rlc_response.png', dpi=150)
plt.show()

6.2 用 SymPy 求解析解

import sympy as sp

# 定义符号
t, s = sp.symbols('t s')
R_sym, L_sym, C_sym = sp.symbols('R L C', positive=True)
Vs_sym = sp.Symbol('Vs')

# RC 电路解析解(用 sympy 求解微分方程)
v = sp.Function('v')
tau = sp.Symbol('tau', positive=True)

# dv/dt = (Vs - v) / (R*C)
ode = sp.Eq(v(t).diff(t), (Vs_sym - v(t)) / (R_sym * C_sym))

# 初始条件 v(0) = 0
solution = sp.dsolve(ode, v(t), ics={v(0): 0})
print("RC 电路解:")
print(solution)
sp.pprint(solution)

# 计算拉普拉斯变换
f = sp.exp(-t) * sp.sin(2*t)
F = sp.laplace_transform(f, t, s, noconds=True)
print(f"\nL{{e^(-t) sin(2t)}} = {F}")

# 拉普拉斯逆变换
F_inv = sp.inverse_laplace_transform(
    1 / (s**2 + 2*s + 5), s, t
)
print(f"L^(-1){{1/(s^2+2s+5)}} = {F_inv}")

6.3 比较不同积分器

import numpy as np
import matplotlib.pyplot as plt

# 欧拉法 vs RK4 比较
# 例题: y' = -y, y(0) = 1, 精确解 y = e^(-t)

def f(t, y):
    return -y

def euler_method(f, t0, y0, h, n):
    t = np.zeros(n+1)
    y = np.zeros(n+1)
    t[0], y[0] = t0, y0
    for i in range(n):
        y[i+1] = y[i] + h * f(t[i], y[i])
        t[i+1] = t[i] + h
    return t, y

def rk4_method(f, t0, y0, h, n):
    t = np.zeros(n+1)
    y = np.zeros(n+1)
    t[0], y[0] = t0, y0
    for i in range(n):
        k1 = h * f(t[i], y[i])
        k2 = h * f(t[i] + h/2, y[i] + k1/2)
        k3 = h * f(t[i] + h/2, y[i] + k2/2)
        k4 = h * f(t[i] + h, y[i] + k3)
        y[i+1] = y[i] + (k1 + 2*k2 + 2*k3 + k4) / 6
        t[i+1] = t[i] + h
    return t, y

h = 0.5
n = 10
t0, y0 = 0.0, 1.0

t_euler, y_euler = euler_method(f, t0, y0, h, n)
t_rk4, y_rk4 = rk4_method(f, t0, y0, h, n)
t_exact = np.linspace(0, n*h, 200)
y_exact = np.exp(-t_exact)

plt.figure(figsize=(10, 5))
plt.plot(t_exact, y_exact, 'k-', linewidth=2, label='精确解')
plt.plot(t_euler, y_euler, 'r--o', label=f'欧拉法 (h={h})')
plt.plot(t_rk4, y_rk4, 'b--s', label=f'RK4 (h={h})')
plt.xlabel('t')
plt.ylabel("y(t)")
plt.title("欧拉法 vs RK4 比较: y' = -y")
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

# 误差比较
print(f"t=5时欧拉法误差: {abs(y_euler[-1] - np.exp(-5)):.6f}")
print(f"t=5时RK4误差: {abs(y_rk4[-1] - np.exp(-5)):.6f}")

6.4 用 Python 自动化拉普拉斯变换

import sympy as sp

s, t = sp.symbols('s t', real=True)
a, omega = sp.symbols('a omega', positive=True)

# 自动生成拉普拉斯变换表
functions = {
    '1': sp.Integer(1),
    't': t,
    't^2': t**2,
    't^n': t**3,
    'e^(at)': sp.exp(a*t),
    'sin(wt)': sp.sin(omega*t),
    'cos(wt)': sp.cos(omega*t),
    't*e^(at)': t * sp.exp(a*t),
    'e^(at)*sin(wt)': sp.exp(a*t) * sp.sin(omega*t),
}

print("拉普拉斯变换表:")
print("-" * 50)
for name, func in functions.items():
    F = sp.laplace_transform(func, t, s, noconds=True)
    print(f"L{{{name}}} = {sp.simplify(F)}")

7. 工程应用综合例题

7.1 带电源的 RLC 电路暂态分析

问题:一个 R=50 ΩR = 50\,\Omega、L=0.2 HL = 0.2\,\text{H}、C=100 μFC = 100\,\mu\text{F} 的 RLC 串联电路,在 t=0t=0 时接入 Vs=100 VV_s = 100\,\text{V} 的直流电源。初始条件为 vC(0)=0v_C(0) = 0,i(0)=0i(0) = 0。

用拉普拉斯变换求解:

基尔霍夫电压定律: Ldidt+Ri+1C∫i dt=Vsu(t)L\frac{di}{dt} + Ri + \frac{1}{C}\int i\,dt = V_s u(t)

用 i=CdvC/dti = C dv_C/dt 代换,整理为电荷 qq 的方程: Lq¨+Rq˙+qC=VsL\ddot{q} + R\dot{q} + \frac{q}{C} = V_s

拉普拉斯变换: (Ls2+Rs+1C)Q(s)=Vss\left(Ls^2 + Rs + \frac{1}{C}\right)Q(s) = \frac{V_s}{s}

Q(s)=Vss(Ls2+Rs+1C)=Vs/Ls(s2+RLs+1LC)Q(s) = \frac{V_s}{s\left(Ls^2 + Rs + \frac{1}{C}\right)} = \frac{V_s/L}{s\left(s^2 + \frac{R}{L}s + \frac{1}{LC}\right)}

代入数值:α=R/(2L)=125 s−1\alpha = R/(2L) = 125\,\text{s}^{-1},ω0=1/LC≈223.6 s−1\omega_0 = 1/\sqrt{LC} \approx 223.6\,\text{s}^{-1}

由于 ω0>α\omega_0 > \alpha,属于欠阻尼。

ωd=ω02−α2≈185.0 s−1\omega_d = \sqrt{\omega_0^2 - \alpha^2} \approx 185.0\,\text{s}^{-1}

经部分分式分解后做拉普拉斯逆变换:

vC(t)=Vs[1−e−αt(cos⁡ωdt+αωdsin⁡ωdt)]v_C(t) = V_s\left[1 - e^{-\alpha t}\left(\cos\omega_d t + \frac{\alpha}{\omega_d}\sin\omega_d t\right)\right]

=100[1−e−125t(cos⁡185t+0.676sin⁡185t)] V= 100\left[1 - e^{-125t}\left(\cos 185t + 0.676\sin 185t\right)\right]\,\text{V}

7.2 弹簧-质量-阻尼器共振分析

问题:m=1 kgm = 1\,\text{kg},k=100 N/mk = 100\,\mathrm{N/m},c=4 N⋅s/mc = 4\,\mathrm{N \cdot s/m},F(t)=10cos⁡ωt NF(t) = 10\cos\omega t\,\mathrm{N}

固有频率:ωn=k/m=10 rad/s\omega_n = \sqrt{k/m} = 10\,\text{rad/s}

阻尼比:ζ=c/(2mk)=0.2\zeta = c/(2\sqrt{mk}) = 0.2(欠阻尼)

稳态响应振幅: X=F0/k(1−r2)2+(2ζr)2X = \frac{F_0/k}{\sqrt{(1-r^2)^2 + (2\zeta r)^2}}

当 r=ω/ωn=1r = \omega/\omega_n = 1(共振)时: Xres=F0/k2ζ=10/1002×0.2=0.25 mX_{\mathrm{res}} = \frac{F_0/k}{2\zeta} = \frac{10/100}{2 \times 0.2} = 0.25\,\text{m}

是无共振时静态挠度 F0/k=0.1 mF_0/k = 0.1\,\text{m} 的 2.5 倍。这就是共振的危险之处。


总结与下一步

本文涉及的内容:

  1. 微分方程基础:分类、阶数、线性性、解的种类
  2. 一阶 ODE 解法:变量分离法、积分因子法、恰当 ODE、伯努利方程
  3. 二阶线性 ODE:特征方程、三种情形、RLC 电路完整分析
  4. 非齐次方程:待定系数法、参数变易法、受迫振动
  5. 微分方程组:矩阵表示、特征值/特征向量解法
  6. 拉普拉斯变换:定义、变换对、性质、逆变换、求解 ODE
  7. Python 实现:用 scipy、sympy 求数值解与解析解

下一篇将讲解傅里叶级数/变换与偏微分方程(PDE)。这是信号处理与电磁学的核心数学工具。


参考资料

登录后即可点赞

评论

还没有评论。

登录后即可发表评论