От физики к уравнению и разностной схеме

Как превратить физику объекта в уравнение, по которому можно его симулировать.

Модель объекта — это математическое описание того, как вход влияет на выход во времени. Чаще всего это дифференциальное уравнение, полученное из законов физики.

Зачем нужна модель

Чтобы спроектировать регулятор, нужно понимать, как объект реагирует на воздействие. Можно настраивать регулятор прямо на реальном устройстве, но это медленно, дорого и опасно (представьте «настройку методом тыка» на ракете). Поэтому инженеры строят модель — уравнение, которое предсказывает поведение объекта на компьютере. Хорошая модель позволяет тысячу раз прогнать симуляцию, перебрать коэффициенты регулятора и выкатить на железо уже почти готовое решение. Курс «Дифференциальные уравнения» даёт аппарат, а «Численные методы» — способы решать уравнения на компьютере; здесь мы применяем их к задаче управления.

От физики к дифференциальному уравнению

Модель почти всегда начинается с физического закона. Для нагрева — закон сохранения энергии: скорость изменения тепла равна разнице между подведённой мощностью и тепловыми потерями. Для механики — второй закон Ньютона: ускорение пропорционально силе. Для бака с водой — баланс расходов: скорость изменения объёма равна притоку минус отток. Запишем нагрев формально. Пусть T — температура, P — мощность нагревателя, Tamb — температура среды. Потери пропорциональны перегреву k·(T - Tamb). Тогда:

C * dT/dt = P - k * (T - Tamb)

Здесь C — теплоёмкость (инерция), dT/dt — скорость изменения температуры. Это дифференциальное уравнение первого порядка: производная выхода выражена через сам выход и вход. Точно так же выводятся модели для других объектов — меняется только физика.

ОбъектФизический законУравнение
Нагревбаланс энергииC·dT/dt = P - k·(T-Tamb)
Бак с водойбаланс объёмаA·dh/dt = q_in - c·sqrt(h)
Масса-пружина2-й закон Ньютонаm·x'' + b·x' + k·x = F
Двигательмомент = инерция·ускорениеJ·dw/dt = K·i - b·w

Как работает под капотом: разностная схема

Компьютер не умеет «решать» дифференциальное уравнение напрямую — он умеет складывать числа. Поэтому мы превращаем непрерывное уравнение в разностную схему: заменяем производную dT/dt на приращение за маленький шаг времени dt. Это метод Эйлера из курса численных методов: T(t+dt) = T(t) + (dT/dt)·dt. Получается простой цикл, который шаг за шагом «прокручивает» поведение объекта во времени.

# Модель нагрева как разностная схема (явный метод Эйлера)
C, k, Tamb, P = 50.0, 2.0, 20.0, 100.0
dt = 1.0
T = Tamb

print(" t   температура")
for step in range(0, 21):
    if step % 4 == 0:
        print(f"{step:3d}  {T:7.2f}")
    dTdt = (P - k*(T - Tamb)) / C   # правая часть уравнения
    T = T + dTdt * dt               # шаг Эйлера
print("устоявшаяся T =", Tamb + P/k, "(когда нагрев = потерям)")

Вывод:

 t   температура
  0    20.00
  4    27.53
  8    33.93
 12    39.36
 16    43.98
 20    47.90
устоявшаяся T = 70.0 (когда нагрев = потерям)

Обратите внимание на устоявшееся значение: когда температура перестаёт меняться, dT/dt = 0, значит P = k·(T - Tamb), откуда T = Tamb + P/k = 70. Это равновесие объекта без всякого регулятора — просто баланс нагрева и потерь. Регулятор понадобится, чтобы вывести систему на другую, нужную нам температуру.

Выбор шага dt

Шаг dt — компромисс. Слишком большой шаг делает симуляцию неточной и даже неустойчивой (значения начинают «разлетаться»). Слишком маленький — точнее, но медленнее. Хорошее правило: dt должен быть в несколько раз меньше самой быстрой постоянной времени объекта. Для нагрева с tau = C/k = 25 секунд шаг в 1 секунду вполне годится. В реальных микроконтроллерах dt — это период опроса регулятора, и его выбор напрямую влияет на качество управления (об этом будет отдельный урок).

Неявные схемы и устойчивость интегрирования

Мы использовали явный метод Эйлера — он прост и нагляден, но у него есть предел: при большом шаге он сам становится неустойчивым, даже если объект устойчив. Существуют более надёжные схемы из курса численных методов: неявный (обратный) Эйлер устойчив при любом шаге ценой решения уравнения на каждом шаге, а методы Рунге-Кутты дают высокую точность при умеренном шаге. Для учебных симуляций управления явного Эйлера с разумным шагом почти всегда хватает, но если вы видите, что выход «взрывается» без физических причин, первым делом уменьшите dt или смените схему — это типичный признак численной, а не физической неустойчивости.

Частые ошибки

  • Слишком большой dt. Явный Эйлер при большом шаге становится неустойчивым: выход начинает осциллировать и уходить в бесконечность, хотя реальный объект стабилен.
  • Забыть про равновесие. Полезно всегда находить устоявшееся значение аналитически (приравняв производную к нулю) — это проверка, что модель и симуляция согласованы.
  • Усложнять модель раньше времени. Для проектирования регулятора часто хватает грубой модели первого-второго порядка. Точность можно наращивать потом.

Итоги

  • Модель объекта — дифференциальное уравнение, выведенное из физического закона (энергия, Ньютон, баланс).
  • Для симуляции уравнение превращают в разностную схему методом Эйлера: T(t+dt)=T(t)+(dT/dt)·dt.
  • Устоявшееся значение находят, приравняв производную к нулю; шаг dt — компромисс точности и устойчивости.
Проверьте себя
1. Откуда обычно берётся модель объекта управления?
AИз подбора коэффициентов на реальном устройстве
BИз физического закона, записанного как дифференциальное уравнение
CИз таблицы стандартных регуляторов
DИз показаний датчика напрямую
2. Что делает разностная схема (метод Эйлера)?
AРешает уравнение аналитически
BЗаменяет производную приращением за шаг dt, превращая ОДУ в цикл сложений
CЛинеаризует нелинейный объект
DУбирает возмущения из модели
3. Как найти устоявшееся значение выхода?
AВзять максимум за время симуляции
BПриравнять производную к нулю и решить уравнение
CУдвоить уставку
DЭто всегда равно входу