Автор: Шамиль Мамедов Редактура: Марк Страхов
Дифференциальные уравнения — естественный язык физики и природы. Вспомните, как в школе нам объясняли второй закон Ньютона о движении: $F = ma$. Ускорение $a$ представляет собой вторую производную позиции $x$. Следовательно, $F = m \ddot x$, что является обыкновенным дифференциальным уравнением (ОДУ) второго порядка. Благодаря своей эффективности дифференциальные уравнения нашли широкое применение в различных областях, например, в биологии, экономике и социологии.
Однако методы машинного обучения и другие методы, основанные на данных, доказали свою способность успешно предсказывать поведение сложных систем. Возникает вопрос: а как мы можем объединить машинное обучение с дифференциальными уравнениями для создания более надежных моделей?
В общем случае дифференциальное уравнение может быть записано в таком виде:
$$ \frac{d}{dt}z(t) := \dot z(t) = f\left(t,z(t), \theta\right) $$
где $z(t)$ представляет состояние, $f(\cdot)$ обозначает так называемое векторное поле, $t$ соответствует времени, а $\theta$ — параметрам. Говоря простым языком, ОДУ моделируют скорость изменения переменных.
Рисунок 1. Схематический рисунок маятника
Например, дифференциальное уравнение, описывающее простой маятник, выглядит следующим образом:
$$ \dot z(t) = \begin{bmatrix} z_2(t)\\ -\frac{g}{L} \sin(z_1(t)) \end{bmatrix} $$
где $z_1(t):=\theta$ соответствует углу отклонения маятника от вертикали, $z_2(t):=\dot \theta$ представляет угловую скорость, $g$ обозначает гравитационную постоянную, а $L$ — длину маятника. Интуитивно, ОДУ маятника показывают изменения угла и угловой скорости маятника.
При работе с ОДУ крайне важно указывать начальное состояние. Без знания начального условия $z(t_0)$ невозможно решить дифференциальное уравнение, то есть проинтегрировать его. Говоря об интегрировании, следует отметить, что большинство значимых дифференциальных уравнений не имеет аналитических решений. Однако есть численные методы для приближенного нахождения решений в дискретных точках. Эти методы включают интегрирование уравнения на заданном интервале:
$$ z(t_1) = z(t_0) + \int_{t_0}^{t_1} f(t, z(t), \theta)\ dt = \text{ODESolve}(z(t_0), f, \theta, t_0, t_1) $$
И сейчас мы рассмотрим два простых численных метода для решения ОДУ, а затем коротко обсудим более продвинутые методы.
Один из самых простых методов численного интегрирования — это метод Эйлера. Он вытекает из базового определения касательной аппроксимации градиента в точке:
$$ \frac{dz(t)}{dt} \approx \frac{z(t+\Delta t) - z(t)}{\Delta t} $$
Рисунок 2. Визуализация метода Эйлера для интегрирования ОДУ
где $\Delta t$ — фиксированная длина шага. Перегруппировав это выражение, получаем выражение для интегратора Эйлера: