Виды дифференциальных уравнений
Дифференциальные уравнения образуют целый зоопарк, и прежде чем решать, полезно понять, с каким зверем мы имеем дело.
Порядок уравнения — это номер старшей производной, входящей в уравнение: 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)не зависит от времени явно и имеет точки равновесия. - Задача Коши задаёт условия в одной точке, краевая — в разных.
- Поле направлений рисует наклоны во всей плоскости и даёт интуицию о решениях заранее.