1 00:00:00,300 --> 00:00:04,338 上一期,我们直接用指数公式画出出流曲线。 2 00:00:04,762 --> 00:00:07,788 但许多模型没有这么方便的解析解。 3 00:00:08,212 --> 00:00:11,775 计算机常用的方法,是从当前状态出发, 4 00:00:11,938 --> 00:00:15,962 估计接下来一小段时间的变化,再重复这个过程。 5 00:00:24,300 --> 00:00:29,125 当前入流减去出流,再除以K,就是曲线此刻的斜率。 6 00:00:29,538 --> 00:00:34,025 把斜率乘上步长,加到当前出流上,就得到下一步。 7 00:00:34,438 --> 00:00:38,462 这个动作相当于沿着切线走,而真正的曲线, 8 00:00:38,525 --> 00:00:40,100 已经在悄悄弯转。 9 00:00:48,300 --> 00:00:51,488 让时间步长从五分钟缩到一分钟。 10 00:00:51,912 --> 00:00:53,900 每一次沿切线走得更短, 11 00:00:54,062 --> 00:00:58,338 转弯时就更容易跟上真正的曲线。可是, 12 00:00:58,500 --> 00:01:03,462 计算次数也随之增加。我们追求的是经过检查的精度, 13 00:01:03,612 --> 00:01:06,038 而不是一味把步长调到最小。 14 00:01:12,300 --> 00:01:16,375 如果一步跨得太远,计算值可能直接越过目标。 15 00:01:16,800 --> 00:01:21,650 下一步斜率反向,又跨回另一边。对于这个线性方程, 16 00:01:21,775 --> 00:01:27,238 步长是K的一到两倍时,误差交替衰减。等于两倍时, 17 00:01:27,300 --> 00:01:31,612 误差不再衰减。再大一些,就可能越振越大。 18 00:01:36,300 --> 00:01:40,850 一个计算结果没有发散,并不说明它已经足够准确。 19 00:01:41,275 --> 00:01:45,275 稳定性、非负性和误差,是三个不同的问题。 20 00:01:45,700 --> 00:01:47,138 对这个显式更新, 21 00:01:47,262 --> 00:01:50,912 想保证非负输入和初值产生非负下一步, 22 00:01:51,125 --> 00:01:53,050 步长还需要不大于K。 23 00:02:00,300 --> 00:02:03,212 先检查物理边界,再把步长减半, 24 00:02:03,300 --> 00:02:07,875 比较峰值、峰现时间和总水量是否还有明显变化。 25 00:02:08,300 --> 00:02:13,088 有解析解时直接对照,没有解析解时做收敛检查。 26 00:02:13,512 --> 00:02:17,488 下一期,我们把同样的问题从时间移到空间: 27 00:02:17,650 --> 00:02:19,400 流域该切成多少块?