Научно-исследовательский сайт Вячеслава Горчилина
2018-05-30
Все заметки/Математика
Таблица алгоритмов численных решений некоторых дифференциальных уравнений
Для улучшения визуального представления алгоритмов введём некоторые упрощения. Например, \(\dot Y = \frac{dY(x)}{dx}\), а значения функций в точке \(x_i\) будут записываться так: \[Y(x_i) = Y_i \quad f(x_i) = f_i \quad g(x_i) = g_i \quad h(x_i) = h_i\] Расстояние между точками стандартное и неизменное на всём интервале: \(\Delta x = x_i - x_{i-1}\). Оно выбирается в зависимости от требований решаемой задачи и вычислительных возможностей процессора. От него также зависит и общее число итераций: \(i \in 1, 2, 3, ..., N\). Само значение координаты находится просто: \(x_i = i\,\Delta x\). Символами \(a, b, \omega, \alpha\) обозначаются константы, а символом \(\mathbf{i}\) — мнимая единица.

Название Уравнение Численное решение
Линейное уравнение Бернулли \[g(x)\,\dot Y = f(x)\,Y + h(x)\] \[Y_i = {g_i\,Y_{i-1} + h_i\,\Delta x \over g_i - f_i\,\Delta x}, \quad Y_0 = Y(0)\]
Искомая функция находится в показателе экспоненты \[\dot Y = f(x) \exp(a\,Y) + h(x)\] \[Y_i = Y_{i-1} + {f_i \exp(a\,Y_{i-1}) + h_i \over 1 + a\,f_i \exp(a\,Y_{i-1}) \Delta x } \Delta x, \quad Y_0 = Y(0)\]
Искомая функция находится под логарифмом \[\dot Y = f(x) \ln(1+a\,Y) + h(x) \\ a\,Y \ge 0 \] \[Y_i = Y_{i-1} + \left[ f_i \ln(1+a\,Y_{i-1}) - {a\,f_i\,Y_{i-1} \over 1+a\,Y_{i-1}} + h_i \right] \Delta x \\ a\,Y_i \ge 0, \quad Y_0 = Y(0)\]
Искомая функция находится под синусом \[\dot Y = f(x) \sin(\omega\,Y + \alpha) + h(x)\] \[Y_i = Y_{i-1} + {f_i \sin(A) + h_i \over 1 - f_i\,\omega\cos(A) } \Delta x \\ A = \omega\,Y_{i-1} + \alpha, \quad Y_0 = Y(0)\]
Уравнение с квадратом производной \[(\dot Y)^2 = f(x)\,Y + h(x)\] \[Y_i = \begin{cases} Y_{i-1} \pm \Delta x \sqrt{A}, & A \ge 0 \\ Y_{i-1} \pm \mathbf{i} \Delta x \sqrt{|A|}, & A \lt 0 \end{cases} \\ A = f_i\,Y_{i-1} + h_i \\ Y_0 = Y(0)\]
Уравнение с квадратным корнем из искомой функции \[\dot Y = f(x) \sqrt{Y} + h(x)\] \[Y_i = \begin{cases} A + \Delta x\,f_i \sqrt{Y_{i-1}}, & Y_{i-1} \ge 0 \\ A + \mathbf{i}\Delta x\,f_i \sqrt{|Y_{i-1}|}, & Y_{i-1} \lt 0 \end{cases} \\ A = Y_{i-1} + h_i\,\Delta x \\ Y_0 = Y(0)\]
Уравнение Абеля второго рода \[\dot Y\,(Y + a) = f(x)\,Y + g(x) \] \[ Y_i = \begin{cases} A + \sqrt{B}, & A \ge 0, B \ge 0 \\ A + \mathbf{i}\sqrt{|B|}, & A \ge 0, B \lt 0 \\ A - \sqrt{B}, & A \lt 0, B \ge 0 \\ A - \mathbf{i}\sqrt{|B|}, & A \lt 0, B \lt 0 \end{cases} \\ A = {Y_{i-1} + f_i\,\Delta x - a \over 2} \\ B = A^2 + a\,Y_{i-1} + g_i\,\Delta x \\ Y_0 = Y(0) \]
Обыкновенное дифф. уравнение второго порядка \[\ddot Y = f(x)\,Y + a\] \[Y_i = {2Y_{i-1} - Y_{i-2} + a\,\Delta x^2 \over 1 - f_i\,\Delta x^2} \\ Y_0 = Y(0), \quad Y_{-1} = Y(0) - \dot Y(0)\,\Delta x\]
Уравнение синус-Гордона. Искомая функция находится под синусом \[\ddot Y = f(x)\,\sin(\omega\,Y + \alpha)\] \[Y_i = Y_{i-1} + {Y_{i-1} - Y_{i-2} + \Delta x^2 f_i \sin(A) \over 1 - \Delta x^2 f_i\,\omega\cos(A) } \\ A = \omega\,Y_{i-1} + \alpha \\ Y_0 = Y(0), \quad Y_{-1} = Y(0) - \dot Y(0)\,\Delta x\]
Если в процессе расчёта возникает мнимая составляющая, то её нужно будет сохранять в отдельной переменной. Лучше всего в задачах, где такая составляющая может появляться, сразу разделить возможную действительную и мнимую части в отдельные переменные.
 
1 2 3