热咖啡放在桌上,十分钟后有多热?
房间温度 20°C,咖啡刚倒出时 90°C。一个简单模型是:咖啡越比房间热,降温越快。写成 ,时间以分钟计。
解为 ,所以 10 分钟后约 45.8°C。微分方程把“每一刻按什么规则变化”转成“整段时间的温度轨迹”。
如果只用每分钟一次的粗略更新,公式是 。这就是 Euler 法。它算起来简单,但每一步都积累近似误差;步子过大时,甚至可能算出咖啡温度在室温两侧来回乱跳。
咖啡降温方程怎样解出来
先令 ,把“比室温高多少”当作新变量。原方程成为 。在 的这条解上,除以 再积分:
初始超出室温 70°C,故 。最后把室温加回去,得到 。这里每一步都能检查:代回求导,看是否满足方程;代入零点,看是否满足初始条件。
不会解公式,也能一步步算
Euler 法每一步都假设“接下来这一小段继续按当前降温速率变化”。取步长 1 分钟,首步 ;第二步 。
精确模型在 1 分钟时为约 83.34°C,所以首步少算约 0.34°C。原因是这一分钟里温差不断变小,真实降温速度也在减小,而 Euler 法整分钟都沿用较快的初始速率。
步长改成半分钟可以减少这种局部失真,但计算步数增加。数值方法不是另一套神秘公式,而是反复使用“导数给局部直线”这个我们已经建立的想法。
存在、唯一和算得稳是三个问题
先问模型有没有轨迹,再问同一初始温度会不会有两条不同轨迹,最后问输入温度和数值舍入误差是否被放大。一个显式公式能同时帮你核对三者,但一般方程未必有公式。
这就是泛函分析值得学习的原因之一:它可以在没有写出解的情况下,通过空间结构证明解存在唯一,并给出误差上界。下一步的压缩映射,就是把迭代过程本身当成证明。
带你做:为什么一次走太远会把冷却算炸
对超出室温的温差 ,Euler 法步长为 分钟时,。
取 ,每步乘 0.5,温差保持正值并衰减。取 ,每步乘 ,数值上会在室温两边交替,虽然幅度衰减,却已经不符合这个冷却模型的实际单调行为。取 ,每步乘 ,误差幅度还会越来越大。
因此 只保证这条线性测试方程的幅度稳定;若还要求不出现符号翻转,需要 ,若要高精度通常还要更小。稳定、保留物理形态和足够准确,是逐渐加强的不同要求。
这里真正值得带走的习惯是:不能看到递推公式能跑就认为算法可靠。先拿一个有明确解的简单模型检查,再研究一般误差,这样的验证在今后的计算工作里也非常实用。
回头整理:定义、工具与练习
把未知数换成未知函数
初值问题
寻找整条轨道。若 在初始点附近连续,且对 局部 Lipschitz,则存在局部唯一解;连续性本身不足以保证唯一。
例如 、 既有恒零解,又有先保持零、从某个 开始取 的解。零点处缺少 Lipschitz 控制。
两种基本解法
可分离变量例:,由 验证通解。通过除以 推导时,应另外检查 ,最终它对应 。
一阶线性方程 ,乘以积分因子 ,变成 。例如 得 。
Picard 迭代连接泛函分析
把微分方程改写成
右边定义一个把函数变成函数的映射。若在合适的闭函数集合上它保持集合不变,且时间区间短到使 Lipschitz 常数乘区间长度小于 1,就能用压缩映射原理证明存在唯一解。学习 Banach 空间与压缩映射 后可重读这个过程。
数值近似的误差
显式 Euler 法:。在解和 具有足够光滑性与 Lipschitz 控制、固定有限时间区间的条件下,单步截断误差为 ,累计全局误差为 。
误差阶与稳定性不同。对 (),Euler 递推为 ;要数值衰减需 ,即 。步长过大会使本来衰减的问题数值爆炸。
综合练习与答案
- 求 。
- 在 的积分是多少?极限与积分在此例可否交换?
- 求 的唯一全局最小点。
- 解 ,并写出 Euler 法的稳定步长范围。
- 解释为什么 可能不随逐点极限一起趋零。
答案:1. 。2. 为 ,趋零;逐点极限只在端点为 1,积分也是零,所以此例可以交换,尽管不一致收敛。一致收敛是充分条件,不是必要条件。3. 梯度 ,解得原点;Hessian 特征值为 1、3,正定。4. ,。5. 质量可以集中在越来越窄的区域,逐点行为不能控制整体质量;取 即得积分恒为 1。
学习检查
进入泛函分析前,至少应能解释 Cauchy 序列、连续、一致收敛、绝对可积和局部线性近似。求复杂原函数的熟练度不是主要门槛,读清定义里的量词与条件更重要。下一条路线是 从箭头到函数空间,或在已有线性代数基础时进入 为什么要把函数当作点。