从直觉到证明3Blue1Brown 中文导学教材
4.1 微分方程与向量场

4.1 微分方程与向量场

先从状态画速度箭头,再讨论轨迹;不要把方向场当成唯一性证明。

例题练习Lean 对照原课

一步一步建立直观

先预测,再点“演示本步”核对右图。每一步都重设到指定情形,随后可以自由修改参数。

01规则先告诉你下一瞬间往哪里走

微分方程给出当前位置对应的速度,而不是直接给出整条路线。右图的小箭头标示当地速度方向;选定一个初始点后,轨线必须处处沿着这些方向前进。先选择纯旋转场,比较沿轨线的切向方向与经过位置上的速度箭头是否一致。

02同一旋转可以叠加径向收缩

加入负的径向增长率,轨线向内盘旋。角度继续变化,半径却按指数缩小,因此“在转动”和“向平衡点靠近”并不冲突。这里使用有显式解的线性系统,便于把局部方程、整体轨迹和实时坐标三者直接核对。

03初值与稳定性是不同问题

把径向增长率改为正,同样的旋转伴随向外增长。拖动初始点可得到同一方程的另一条解;修改增长率则已经改变方程本身。靠近原点的初始状态能否始终保持接近,是稳定性问题,不能仅凭某个初值恰好静止来判断。

4.1.1 先知道变化规则,也能研究运动

很多问题先给出的不是位置公式,而是当前位置决定的速度。例如 x′=kxx'=kx 说“量越大,单位时间的变化越大”。微分方程的未知对象是一条函数轨迹;初值告诉我们从哪里出发,变化规则告诉我们之后往哪里走。

在每个状态处画一根速度箭头,解曲线就必须沿箭头前进。即使没有简单显式解,也可观察平衡点、增长方向或长期趋势。二阶摆方程同时依赖角度和角速度,把它们合成状态 (θ,ω)(\theta,\omega),就能在相平面中画一阶系统的箭头。

4.1.2 公式解、几何观察与数值近似各做什么

猜测 x=x0ektx=x_0\mathrm e^{kt} 后,对它求导并代回,能验证它满足方程与初值。但“找到了一个解”与“证明只有这一个解”仍是两件事,唯一性需要相应定理条件。

欧拉法在当前点沿速度走一个有限小步,再重新估计速度。它把局部直线近似串起来,并不精确遵循曲线;步长过大可能改变定性行为。减小步长并比较结果,是检查数值可信度的基本方式。

读本章时坚持三个层次:规则是什么,哪些轨迹符合规则,从初值能否确定唯一轨迹。方向场提供直觉,代回提供局部验证,分析定理给存在与唯一性保证。后续热方程会把有限维状态变成整条温度分布,但这种提问方式不变。

定义 4.1.1 线性平面速度场

考虑 x′=λx−ωyx'=\lambda x-\omega y、y′=ωx+λyy'=\omega x+\lambda y,其中 λ,ω\lambda,\omega 为常数。前者控制径向伸缩,后者控制角向转动。

命题 4.1.1 长度平方的增长只由径向项控制

沿任意可微解,ddt(x2+y2)=2λ(x2+y2)\dfrac d{dt}(x^2+y^2)=2\lambda(x^2+y^2)。特别地,λ=0\lambda=0 时长度不变。

证明 · 展开纸笔推导

由乘积法则,导数为 2xx′+2yy′2xx'+2yy'。代入速度场,两个交叉项 −2ωxy-2\omega xy 与 2ωxy2\omega xy 抵消,剩下 2λ(x2+y2)2\lambda(x^2+y^2)。

因此转动不会单独改变长度,正负径向项则分别使长度平方增长或衰减。这是本线性系统的精确计算,并非任意速度场都可如此分离。

□

数学表述 4.1.1

与其先寻找闭式解,不如在每个状态处画出速度。解曲线必须始终沿着这些箭头前进;相空间把位置和速度合并为状态。

一阶系统写成 x′=F(t,x)x'=F(t,x)。二阶摆方程 θ″=−(g/L)sinθ\theta''=-(g/L)\sin\theta 可改写为 θ′=ω,ω′=−(g/L)sinθ\theta'=\omega,\ \omega'=-(g/L)\sin\theta。

例 4.1.1 把概念用于具体计算

最简单的 x′=kxx'=kx 有解 x(t)=x0ektx(t)=x_0\mathrm{e}^{kt}。若 k<0k<0,它趋近零;若 k>0k>0,非零初值的绝对值增大。

练习 4.1.1

x′=2x,x(0)=3x'=2x,x(0)=3 的解?

展开解答与检查

3e2t3\mathrm{e}^{2t},代回可直接检查。

Lean 对照 4.1.1 命题、证明与适用边界

完整验证 ekt\mathrm{e}^{kt} 的导数等于 kektk\mathrm{e}^{kt};不是对所有微分方程的存在唯一性证明。

DifferentialEquations.exponential_solution

theorem exponential_solution (k t : ℝ) :
    HasDerivAt (fun s : ℝ => Real.exp (k*s)) (k*Real.exp (k*t)) t := by
  convert (Real.hasDerivAt_exp (k*t)).comp t ((hasDerivAt_id t).const_mul k) using 1
  ring

查看完整定义与上下文 ↗ · 全书证明范围

原课对照 观课问题、视频与图示

先从状态画速度箭头,再讨论轨迹;不要把方向场当成唯一性证明。

官方课程与图示 ↗ · 原视频 ↗

点击后连接 YouTube;播放器不可用时可通过上方原链接观看。