Численное моделирование остывания
Урок численно решает уравнение остывания и сверяет результат с точной формулой.
Закон охлаждения Ньютона: скорость остывания тела пропорциональна разности его температуры и температуры среды: $\dfrac{dT}{dt} = -k\,(T - T_{\text{ср}})$.
Горячий чай остывает быстро, пока он горячий, и медленно — у комнатной температуры. Это и описывает закон Ньютона: чем больше разрыв с окружением, тем быстрее идёт теплоотдача. Уравнение дифференциальное, но решить его можно и численно — шаг за шагом.
Аналитическое решение
Уравнение интегрируется в экспоненту:
$$T(t) = T_{\text{ср}} + (T_0 - T_{\text{ср}})\,e^{-k t}$$
Температура приближается к $T_{\text{ср}}$ по экспоненте, никогда формально не достигая её. Коэффициент $k$ задаёт скорость: чем он больше, тем быстрее остывание.
import math
Tenv = 20.0; T0 = 90.0; k = 0.05
for tmin in [10, 20, 30]:
T = Tenv + (T0 - Tenv) * math.exp(-k * tmin)
print("t =", tmin, "мин: T =", round(T, 2), "C")Вывод:
t = 10 мин: T = 62.46 C t = 20 мин: T = 45.75 C t = 30 мин: T = 35.62 C
Численное решение методом Эйлера
Если решение неизвестно, его получают по шагам: на каждом шаге $\Delta t$ прибавляют $\dfrac{dT}{dt}\,\Delta t$. Это метод Эйлера — простейший численный интегратор.
T = 90.0 # начальная температура, C
Tenv = 20.0 # окружение, C
k = 0.05 # 1/мин
dt = 1.0 # шаг, мин
t = 0.0
print("t, мин | T, C")
while t <= 30:
if int(t) % 5 == 0:
print(int(t), " |", round(T, 2))
T = T + (-k * (T - Tenv)) * dt
t += dtВывод:
t, мин | T, C 0 | 90.0 5 | 74.16 10 | 61.91 15 | 52.43 20 | 45.09 25 | 39.42 30 | 35.02
Численный результат (61.91 при $t=10$) близок к аналитическому (62.46). Расхождение — погрешность метода Эйлера: чем меньше шаг $\Delta t$, тем точнее совпадение.
Как работает под капотом
Метод Эйлера заменяет кривую на ломаную из касательных. На каждом шаге он экстраполирует по текущей производной, поэтому слегка «срезает» экспоненту и даёт чуть заниженную температуру. Уменьшая $\Delta t$ вдвое, мы примерно вдвое уменьшаем ошибку — это первый порядок точности. Для инженерных оценок остывания такой простоты обычно достаточно.
Частые ошибки
- Брать слишком большой шаг $\Delta t$ — численное решение заметно расходится с точным.
- Забывать знак минус в производной: без него «остывание» превратится в нагрев.
- Считать численное решение точным; это всегда приближение с контролируемой погрешностью.
Итог
- Закон Ньютона: $dT/dt = -k(T - T_{\text{ср}})$, остывание по экспоненте.
- Аналитика: $T(t) = T_{\text{ср}} + (T_0 - T_{\text{ср}})e^{-kt}$.
- Метод Эйлера даёт близкий результат; точность растёт при малом шаге.