Виды дифференциальных уравнений

Дифференциальные уравнения образуют целый зоопарк, и прежде чем решать, полезно понять, с каким зверем мы имеем дело.

Порядок уравнения — это номер старшей производной, входящей в уравнение: y' даёт первый порядок, y'' — второй и так далее.

Когда говорят «дифференциальное уравнение», имеют в виду огромное семейство объектов с очень разными свойствами. Одни решаются формулой на бумаге, другие — только численно. Одни описывают функцию одной переменной, другие — поля в пространстве и времени. Чтобы не утонуть, математики ввели классификацию по нескольким независимым осям. Разберём каждую, а в конце соберём всё в таблицу.

ОДУ против ДУЧП

Первая и главная развилка — сколько независимых переменных у неизвестной функции. Если функция зависит от одной переменной (обычно времени), и в уравнении стоят обычные производные, это обыкновенное дифференциальное уравнение, ОДУ (ordinary differential equation). Пример: y' = -k*y, где y зависит только от t. Весь наш курс посвящён численному решению именно ОДУ.

Если же неизвестная функция зависит от нескольких переменных (например, температура стержня зависит и от координаты, и от времени), то в уравнении появляются частные производные, и это дифференциальное уравнение в частных производных, ДУЧП (partial differential equation). Классические примеры — уравнение теплопроводности и волновое уравнение. ДУЧП устроены сложнее, и обычно их сводят к большим системам ОДУ, поэтому понимание ОДУ — необходимый фундамент. Практический приём такой: пространство разбивают на узлы сетки, и в каждом узле температура становится отдельной функцией времени; производные по координате заменяют разностями между соседними узлами. Так одно ДУЧП превращается в сотни связанных ОДУ, которые мы и решаем методами этого курса. Поэтому, даже если ваша конечная цель — теплопроводность или гидродинамика, дорога к ней лежит через уверенное владение обыкновенными уравнениями.

Порядок уравнения

Порядок — это номер самой высокой производной. Уравнение y' = f(t, y) — первого порядка, потому что старшая производная — первая. Уравнение колебаний пружины y'' = -w*w*y — второго порядка, ведь в нём фигурирует вторая производная (ускорение). Важнейший приём всего курса: любое уравнение высокого порядка можно свести к системе уравнений первого порядка, введя новые переменные для производных. Покажем на пружине: обозначим скорость v = y'. Тогда вместо одного уравнения второго порядка получаем пару уравнений первого порядка: y' = v и v' = -w*w*y. Теперь неизвестных стало два — положение и скорость, — но каждое уравнение содержит только первую производную. Этот фокус универсален: уравнение порядка n превращается в систему из n уравнений первого порядка. Поэтому численные методы достаточно уметь применять к первому порядку — остальное сводится к нему, и именно поэтому весь курс мы концентрируемся на форме y' = f(t, y).

Линейные против нелинейных

Уравнение называется линейным, если неизвестная функция и её производные входят только в первой степени и не перемножаются между собой. Например, y' + 3*y = t линейно. А вот y' = y*y или y' = y*(1 - y) уже нелинейны: здесь y умножается само на себя. Линейные уравнения часто имеют красивые формульные решения и хорошо изучены. Нелинейные — гораздо богаче по поведению (хаос, скачки, насыщение) и почти всегда требуют численных методов. Логистический рост популяции — это как раз нелинейное уравнение.

Автономные против неавтономных

Если правая часть не зависит явно от времени, то есть имеет вид y' = f(y), уравнение называется автономным. Закон поведения один и тот же в любой момент: скорость определяется только текущим состоянием. Уравнение y' = -k*y автономно. Если же время входит явно, как в y' = y + sin(t) (внешнее периодическое воздействие), уравнение неавтономно. Автономные уравнения удобны тем, что у них есть точки равновесия — значения, где скорость равна нулю и система застывает.

Задача Коши против краевой задачи

Чтобы из закона скорости получить конкретную траекторию, нужны дополнительные условия. Если все они заданы в одной точке (обычно в начальный момент: y(t0) = y0), это задача Коши, она же начальная задача. Мы знаем, где стартуем, и шагаем вперёд. Если же условия заданы в разных точках (например, температура на обоих концах стержня), это краевая задача. Численные методы этого курса заточены под задачу Коши — про неё отдельный урок.

Таблица-классификация

ОсьОдин полюсДругой полюс
Число переменныхОДУ (одна переменная)ДУЧП (несколько)
ПорядокПервый (y')Второй и выше (y'', ...)
ЛинейностьЛинейноеНелинейное
Зависимость от tАвтономное f(y)Неавтономное f(t, y)
УсловияЗадача Коши (одна точка)Краевая (разные точки)

Поле направлений — геометрия ОДУ первого порядка

У ОДУ первого порядка y' = f(t, y) есть прекрасная геометрическая картинка. В каждой точке плоскости (t, y) уравнение говорит нам наклон будущей траектории: ведь y' — это и есть тангенс угла наклона касательной. Если в каждой точке нарисовать короткую чёрточку с этим наклоном, получится поле направлений. Любое решение — это кривая, которая в каждой своей точке касается этих чёрточек, скользя вдоль поля, как лодка по течению.

Как работает под капотом

Поле направлений — это просто таблица значений функции f(t, y). Посчитаем наклоны для уравнения y' = t - y в узлах сетки. Каждое число — это наклон, который примет траектория, проходя через данную точку.

print('  t\\y   0.0    1.0    2.0')
for t in [0.0, 1.0, 2.0]:
    row = 't=%.1f' % t
    for y in [0.0, 1.0, 2.0]:
        slope = t - y
        row += '  %+.1f ' % slope
    print(row)

Вывод:

  t\y   0.0    1.0    2.0
t=0.0  +0.0   -1.0   -2.0 
t=1.0  +1.0   +0.0   -1.0 
t=2.0  +2.0   +1.0   +0.0 

Прочитаем таблицу. Там, где наклон положительный (например, +2.0 при t=2, y=0), решение круто идёт вверх. Где он отрицательный — решение падает. По диагонали, где t = y, наклон равен нулю: траектория в этих точках на мгновение горизонтальна. Заметьте, что наклоны нулевые именно там, где y = t — это намёк, что прямая y = t - 1 играет особую роль, к ней решения притягиваются. Поле направлений позволяет увидеть поведение решений до того, как мы их вычислим, и это бесценная интуиция перед запуском численного метода.

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

Главная путаница — между порядком уравнения и степенью, в которой стоит функция. Порядок — это про производные (y, y', y''), а линейность — про степени и произведения функции. Уравнение y' = y*y первого порядка (старшая производная первая), но нелинейное (есть квадрат). Вторая ошибка — считать автономным уравнение только потому, что в нём нет буквы t в одном из слагаемых; нужно, чтобы времени не было нигде в правой части. Третья — путать поле направлений с самим решением: поле задаёт наклоны во всех точках сразу, а решение — это одна конкретная кривая, выбранная начальным условием и скользящая вдоль поля.

  • ОДУ — одна независимая переменная, ДУЧП — несколько; курс про ОДУ.
  • Порядок — это номер старшей производной; высокий порядок сводится к системе первого порядка.
  • Линейность — про степени функции, а не про порядок производных.
  • Автономное уравнение f(y) не зависит от времени явно и имеет точки равновесия.
  • Задача Коши задаёт условия в одной точке, краевая — в разных.
  • Поле направлений рисует наклоны во всей плоскости и даёт интуицию о решениях заранее.
Проверьте себя
1. Уравнение y' = y*y. Как его классифицировать по порядку и линейности?
AВторой порядок, линейное
BПервый порядок, нелинейное
CВторой порядок, нелинейное
DПервый порядок, линейное
2. Чем задача Коши отличается от краевой задачи?
AПорядком уравнения
BЧислом независимых переменных
CВ задаче Коши условия заданы в одной точке, в краевой — в разных
DЛинейностью правой части
3. Что показывает поле направлений ОДУ первого порядка y' = f(t, y)?
AТочное решение
BНаклон касательной траектории в каждой точке плоскости (t, y)
CЗначение начального условия
DПорядок уравнения
4. Какое из уравнений автономно?
Ay' = y + sin(t)
By' = t*y
Cy' = -k*y
Dy' = t - y