Дифференциальные уравнения
Обыкновенное дифференциальное уравнение
Пусть \(V\) — (конечномерное) векторное пространство, а \(T\) — подмножество \(\mathbb{R}\). Обыкновенным дифференциальным уравнением (ОДУ) называется задача поиска неизвестной функции \(x: T\to V\), удовлетворяющей соотношению, в котором фигурируют её производные. Обычно считают, что это соотношение имеет вид
\[ \dot{x}(t) = f(x(t),t) \]
где \(f:V\times T \to V\). Но иногда приходится иметь дело и с неявными уравнениями вида
\[ f(\dot{x}(t), x(t), t) = 0 \]
для \(f:V\times V\times T \to V\).
Задачей Коши называется ОДУ с начальным условием: дополнительным соотношением вида \(x(0) = x_0\). Обычно задача Коши имеет единственное решение (хотя бы в некоторой окрестности начального момента времени).
Уравнения высших порядков
Если в уравнении фигурируют высшие производные (хотя бы второго порядка), то его можно свести к уравнению первого порядка путём повышения размерности. Для этого для каждой из промежуточных производных вводится новая неизвестная с очевидным уравнением.
Например, уравнение
\[ \ddot{x}(t) = f(\dot{x}(t), x(t), t) \]
может быть преобразовано к виду \[ \begin{aligned} \dot{v}(t) & = f(v(t), x(t), t) \\ \dot{x}(t) & = v(t) \end{aligned} \]
Поэтому далее будем считать, что любое ОДУ является ОДУ первого порядка.
Автономные уравенения
ОДУ называется автономным, если оно имеет вид
\[ \dot{x}(t) = f(x(t)) \]
Опять же, любое уравнение можно сделать автономным, если считать время неизвестной функцией, заданной уравнением
\[ \dot{t} = 1 \]
и начальным условием \(t(0) = 0\). Далее будем считать любое ОДУ автономным.
Явный метод Эйлера
Самым простым способом численного решения дифференциальных уравнений является явный метод Эйлера: выбирается шаг по времени \(\tau\), после чего применяется итерационный процесс
\[ x_{n+1} = x_{n} + f(x_n) \tau \]
Вектор \(x_n\) соответствует значению функции \(x\) в момент времени \(t_n = n\cdot\tau\).
К сожалению, явный метод Эйлера (как и разнообразные его модификации, в том числе часто применяемые методы Рунге-Кутта) не слишком пригодны для моделирования физических систем на больших промежутках времени: они не сохраняют энергию системы.
Полунеявный метод Эйлера
Рассмотрим типичную механическую систему
\[ \ddot{x}(t) = F(x(t)) \]
с начальными условиями \(x(0) = x_0\), \(\dot{x}(0) = v_0\).
Преобразуем её в ОДУ первого порядка:
\[ \begin{aligned} \dot{v}(t) & = F(x(t)) \\ \dot{x}(t) & = v(t) \end{aligned} \]
Явный метод Эйлера для такого ОДУ имеет вид:
\[ \begin{aligned} v_{n+1} & = v_n + F(x_n)\cdot\tau \\ x_{n+1} & = x_n + v_n\cdot\tau \end{aligned} \]
У полунеявного метода ровно одно отличие (во втором уравнении):
\[ \begin{aligned} v_{n+1} & = v_n + F(x_n)\cdot\tau \\ x_{n+1} & = x_n + v_{n+1}\cdot\tau \end{aligned} \]
То есть теперь следующее состояние вычисляется не по предыдущему, а частично — по самому себе. Засчёт такой обратной связи полученный численный метод становится существенно стабильнее.