Численное моделирование остывания

Урок численно решает уравнение остывания и сверяет результат с точной формулой.

Закон охлаждения Ньютона: скорость остывания тела пропорциональна разности его температуры и температуры среды: $\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}$.
  • Метод Эйлера даёт близкий результат; точность растёт при малом шаге.
Проверьте себя
1. По какому закону остывает тело согласно закону Ньютона?
AЛинейно
BПо экспоненте к температуре среды
CПо параболе
DСкачком
2. Почему численное решение методом Эйлера слегка отличается от аналитического?
AЭйлер всегда даёт случайные значения
BМетод заменяет кривую ломаной из касательных, накапливая погрешность; она растёт с шагом Δt
CАналитическое решение неверно
DИз-за округления только последней цифры