咖啡要凉多久?

牛顿冷却定律,一杯的分量

刚冲好的手冲大约 90∘C90^\circ\mathrm{C},而我喜欢在 60∘C60^\circ\mathrm{C} 左右喝。问题很朴素:到底要等多久?1实际上我通常等不及,舌头为此付出过不少代价。

一个过于简单的模型

牛顿给过一个很好用的经验法则:物体冷却的速度,和它与环境之间的温差成正比。写成方程就是

dTdt=−k (T−Troom).\frac{dT}{dt} = -k\,\bigl(T - T_{\text{room}}\bigr).

这里 TroomT_{\text{room}} 是室温,k>0k>0 是一个常数。2它和杯子关系很大。陶瓷杯、纸杯、保温杯的 kk 能差出一个数量级,保温杯的 kk 小到让人怀疑人生。负号的意思是:咖啡比室温热,温度就往下掉;温差越大,掉得越快。

定义 1(冷却常数)

称上式中的 kk 为冷却常数,单位是 min−1\text{min}^{-1}。它把杯子、桌面、空气流动等一切我们懒得建模的东西打包在一起。

解出来

引理 2(冷却曲线)

若 T(t)T(t) 满足上面的方程,且 T(0)=T0T(0)=T_0,则对一切 t≥0t\ge 0,

T(t)=Troom+(T0−Troom) e−kt.T(t) = T_{\text{room}} + \bigl(T_0 - T_{\text{room}}\bigr)\,e^{-kt}.

证明令 u=T−Troomu = T - T_{\text{room}},则 u′=−kuu' = -ku。于是 (u ekt)′=(u′+ku) ekt=0\bigl(u\,e^{kt}\bigr)' = (u' + ku)\,e^{kt} = 0,所以 u ektu\,e^{kt} 是常数,等于它在 t=0t=0 时的值 T0−TroomT_0 - T_{\text{room}}。

也就是说,温差按指数衰减。下面这张图里,拖动 5 分钟处的测量点,感受一下不同杯子的差别:

图 1 室温 22°C,初温 90°C。虚线是理想的入口温度。

算一算我的那杯

我用温度计量过一次:室温 22∘C22^\circ\mathrm{C},冲好时 90∘C90^\circ\mathrm{C},5 分钟后是 75∘C75^\circ\mathrm{C}。代入 引理 2:

e−5k=75−2290−22=5368⟹k=15ln⁡6853≈0.0498.e^{-5k} = \frac{75-22}{90-22} = \frac{53}{68} \quad\Longrightarrow\quad k = \frac{1}{5}\ln\frac{68}{53} \approx 0.0498.

再解 T(t)=60T(t) = 60:

t=1kln⁡6838≈11.7 min.t = \frac{1}{k}\ln\frac{68}{38} \approx 11.7\ \text{min}.

所以答案是:大约 11 分 40 秒。刚好够我回两封邮件,或者盯着杯子发呆。

from math import log

k = log(68 / 53) / 5   # 冷却常数,单位 1/min
t = log(68 / 38) / k
print(f"{t:.1f} min")  # 11.7 min

附赠:牛奶什么时候加?

假设你要等 10 分钟再喝,还要加一勺冷牛奶。是现在加,还是 10 分钟后再加?

推论 3

如果目标是让咖啡尽量凉,应当最后再加牛奶。

直觉是:热的时候温差大,散热快;先加奶会让咖啡一开始就“不够热”,白白浪费了散热最快的那段时间。严格的证明留作习题。3“留作习题”是数学家最古老的偷懒方式,我决定把这个传统发扬光大。