1517 字
8 分钟
微积分 10|微分方程、数值方法与复习

数学总导航 · 本课程目录 · ← 上一章

热咖啡放在桌上,十分钟后有多热?#

房间温度 20°C,咖啡刚倒出时 90°C。一个简单模型是:咖啡越比房间热,降温越快。写成 T′(t)=−0.1(T(t)−20)T'(t)=-0.1(T(t)-20),时间以分钟计。

解为 T(t)=20+70e−0.1tT(t)=20+70e^{-0.1t},所以 10 分钟后约 45.8°C。微分方程把“每一刻按什么规则变化”转成“整段时间的温度轨迹”。

如果只用每分钟一次的粗略更新,公式是 Tk+1=Tk−0.1(Tk−20)T_{k+1}=T_k-0.1(T_k-20)。这就是 Euler 法。它算起来简单,但每一步都积累近似误差;步子过大时,甚至可能算出咖啡温度在室温两侧来回乱跳。

咖啡降温方程怎样解出来#

先令 z=T−20z=T-20,把“比室温高多少”当作新变量。原方程成为 z′=−0.1zz'=-0.1z。在 z>0z>0 的这条解上,除以 zz 再积分:

z′z=−0.1⟹log⁡z=−0.1t+C⟹z=Ce−0.1t.\frac{z'}z=-0.1 \Longrightarrow\log z=-0.1t+C \Longrightarrow z=Ce^{-0.1t}.

初始超出室温 70°C,故 C=70C=70。最后把室温加回去,得到 T=20+70e−0.1tT=20+70e^{-0.1t}。这里每一步都能检查:代回求导,看是否满足方程;代入零点,看是否满足初始条件。

不会解公式,也能一步步算#

Euler 法每一步都假设“接下来这一小段继续按当前降温速率变化”。取步长 1 分钟,首步 T1=90−0.1(90−20)=83T_1=90-0.1(90-20)=83;第二步 T2=83−0.1(83−20)=76.7T_2=83-0.1(83-20)=76.7。

精确模型在 1 分钟时为约 83.34°C,所以首步少算约 0.34°C。原因是这一分钟里温差不断变小,真实降温速度也在减小,而 Euler 法整分钟都沿用较快的初始速率。

步长改成半分钟可以减少这种局部失真,但计算步数增加。数值方法不是另一套神秘公式,而是反复使用“导数给局部直线”这个我们已经建立的想法。

存在、唯一和算得稳是三个问题#

先问模型有没有轨迹,再问同一初始温度会不会有两条不同轨迹,最后问输入温度和数值舍入误差是否被放大。一个显式公式能同时帮你核对三者,但一般方程未必有公式。

这就是泛函分析值得学习的原因之一:它可以在没有写出解的情况下,通过空间结构证明解存在唯一,并给出误差上界。下一步的压缩映射,就是把迭代过程本身当成证明。

带你做:为什么一次走太远会把冷却算炸#

对超出室温的温差 z′=−0.1zz'=-0.1z,Euler 法步长为 hh 分钟时,zk+1=(1−0.1h)zkz_{k+1}=(1-0.1h)z_k。

取 h=5h=5,每步乘 0.5,温差保持正值并衰减。取 h=15h=15,每步乘 −0.5-0.5,数值上会在室温两边交替,虽然幅度衰减,却已经不符合这个冷却模型的实际单调行为。取 h=25h=25,每步乘 −1.5-1.5,误差幅度还会越来越大。

因此 0<h<200<h<20 只保证这条线性测试方程的幅度稳定;若还要求不出现符号翻转,需要 h≤10h\le10,若要高精度通常还要更小。稳定、保留物理形态和足够准确,是逐渐加强的不同要求。

这里真正值得带走的习惯是:不能看到递推公式能跑就认为算法可靠。先拿一个有明确解的简单模型检查,再研究一般误差,这样的验证在今后的计算工作里也非常实用。

回头整理:定义、工具与练习#

把未知数换成未知函数#

初值问题

y′(t)=F(t,y(t)),y(0)=y0y'(t)=F(t,y(t)),\qquad y(0)=y_0

寻找整条轨道。若 FF 在初始点附近连续,且对 yy 局部 Lipschitz,则存在局部唯一解;连续性本身不足以保证唯一。

例如 y′=2∣y∣y'=2\sqrt{|y|}、y(0)=0y(0)=0 既有恒零解,又有先保持零、从某个 c≥0c\ge0 开始取 (t−c)2(t-c)^2 的解。零点处缺少 Lipschitz 控制。

两种基本解法#

可分离变量例:y′=tyy'=ty,由 y(t)=Cet2/2y(t)=Ce^{t^2/2} 验证通解。通过除以 yy 推导时,应另外检查 y=0y=0,最终它对应 C=0C=0。

一阶线性方程 y′+a(t)y=b(t)y'+a(t)y=b(t),乘以积分因子 μ(t)=e∫a(t)dt\mu(t)=e^{\int a(t)dt},变成 (μy)′=μb(\mu y)'=\mu b。例如 y′+y=1,y(0)=0y'+y=1,y(0)=0 得 y=1−e−ty=1-e^{-t}。

Picard 迭代连接泛函分析#

把微分方程改写成

y(t)=y0+∫0tF(s,y(s)) ds.y(t)=y_0+\int_0^tF(s,y(s))\,ds.

右边定义一个把函数变成函数的映射。若在合适的闭函数集合上它保持集合不变,且时间区间短到使 Lipschitz 常数乘区间长度小于 1,就能用压缩映射原理证明存在唯一解。学习 Banach 空间与压缩映射 后可重读这个过程。

数值近似的误差#

显式 Euler 法:yk+1=yk+hF(tk,yk)y_{k+1}=y_k+hF(t_k,y_k)。在解和 FF 具有足够光滑性与 Lipschitz 控制、固定有限时间区间的条件下,单步截断误差为 O(h2)O(h^2),累计全局误差为 O(h)O(h)。

误差阶与稳定性不同。对 y′=−λyy'=-\lambda y(λ>0\lambda>0),Euler 递推为 yk+1=(1−hλ)yky_{k+1}=(1-h\lambda)y_k;要数值衰减需 ∣1−hλ∣<1|1-h\lambda|<1,即 0<hλ<20<h\lambda<2。步长过大会使本来衰减的问题数值爆炸。

综合练习与答案#

  1. 求 lim⁡x→0(sin⁡x−x)/x3\lim_{x\to0}(\sin x-x)/x^3。
  2. fn(x)=xnf_n(x)=x^n 在 [0,1][0,1] 的积分是多少?极限与积分在此例可否交换?
  3. 求 f(x,y)=x2+xy+y2f(x,y)=x^2+xy+y^2 的唯一全局最小点。
  4. 解 y′=−2y,y(0)=3y'=-2y,y(0)=3,并写出 Euler 法的稳定步长范围。
  5. 解释为什么 ∫01nf(nx)dx\int_0^1nf(nx)dx 可能不随逐点极限一起趋零。

答案:1. −1/6-1/6。2. 为 1/(n+1)1/(n+1),趋零;逐点极限只在端点为 1,积分也是零,所以此例可以交换,尽管不一致收敛。一致收敛是充分条件,不是必要条件。3. 梯度 (2x+y,x+2y)(2x+y,x+2y),解得原点;Hessian 特征值为 1、3,正定。4. 3e−2t3e^{-2t},0<h<10<h<1。5. 质量可以集中在越来越窄的区域,逐点行为不能控制整体质量;取 f=1(0,1)f=\mathbf1_{(0,1)} 即得积分恒为 1。

学习检查#

进入泛函分析前,至少应能解释 Cauchy 序列、连续、一致收敛、绝对可积和局部线性近似。求复杂原函数的熟练度不是主要门槛,读清定义里的量词与条件更重要。下一条路线是 从箭头到函数空间,或在已有线性代数基础时进入 为什么要把函数当作点。


数学总导航 · 本课程目录 · ← 上一章

微积分 10|微分方程、数值方法与复习
https://f1yingwhite.github.io/posts/数学/微积分/10-微分方程、数值方法与复习/
作者
F1yingWhite
发布于
2026-11-03
许可协议
CC BY-NC-SA 4.0