Одношаговые методы Рунге-Кутта#

Явные методы Рунге-Кутта#

Рассмотрим хитрую запись с внутренними вычислениями. Сначала вычисляем \(k_i\) по порядку, потом обновляем \(y_{n+1}\).

\[\begin{split} \begin{aligned} &\left\{\begin{array}{l} k_{1}=f\left(t_{n}, \, y_{n}\right) \\ k_{2}=f\left(t_{n}+\alpha_{2} \cdot \tau, \;\; y_{n}+\tau \cdot \beta_{21} \cdot k_{1}\right) \\ \vdots \\ k_{r}=f\left(t_{n}+\alpha_{r}\cdot \tau, \;\; y_{n}+\tau \cdot\left(\beta_{r 1} \cdot k_{1}+\ldots+\beta_{r, \, r-1} k_{r}\right)\right) \end{array}\right. \end{aligned} \end{split}\]
\[y_{n+1}=y_{n}+\tau \cdot\left(\gamma_{1}\cdot k_{1}+\ldots+\gamma_{r}\cdot k_{n}\right)\]

Для удобной записи коэффициентов используют таблицы Бутчера:

\[\begin{split}\\ \left[\begin{array}{l|llll} 0 & & & & \\ \alpha_{2} & \beta_{21} & & & \\ \alpha_{3} & \beta_{31} & \beta_{32} & & \\ \cdots &\cdots &\cdots &\cdots &\\ \alpha_{r} & \beta_{r 1} & \beta_{r, 2} & \cdots & \beta_{r, r-1} & \\ \hline& \gamma_{1} & \gamma_{2} & \cdots & \gamma_{r-1} & \gamma_{r} \end{array}\right]\end{split}\]

Метод, задаваемый такой таблицей, называется r-стадийным. Все методы Рунге-Кутта являются разновидностью одношаговых методов, перепеписанными в удобном виде. Общие свойства этой таблицы Бутчера опишем ниже, когда введём неявные методы.

Явными их делаем аналитическая возможность решить написанную выше систему - по сути мы по порядку вычисляем все поправки.

Приведём некоторые примеры (за точные коэффициенты здесь не ручаюсь):

Модифицированный метод Эйлера:

\[\begin{split} \begin{aligned} &y_{n+1}=y_{n}+h f_{2}, \\ &f_{1}=f\left(x_{n}, y_{n}\right) \\ &f_{2}=f\left(x_{n}+\frac{h}{2} ; y_{n}+\frac{h f_{n}}{2}\right) \end{aligned} \end{split}\]
\[\begin{split} \begin{array}{l|ll} 0 & 0 & 0 \\ 1 / 2 & 1 / 2 & 0 \\ \hline & 0 & 1 \end{array} \end{split}\]

Метод Эйлера с пересчётом:

\[\begin{split} \begin{aligned} &y_{n+1}=y_{n}+h \cdot \frac{f_{1}+f_{2}}{2} \\ &f_{1}=f\left(x_{1}, y_{n}\right) \\ &f_{2}=f\left(x_{n}+h, y_{n}+h f_{1}\right) \end{aligned} \end{split}\]
\[\begin{split} \begin{array}{l|ll} 0 & 0 & 0 \\ 1 & 1 & 0 \\ \hline & 1 / 2 & 1 / 2 \end{array} \end{split}\]

Метод Хойна:

\[\begin{split} \begin{aligned} &y_{n+1}=y_{n}+h\left(f_{1}+3 f_{3}\right) \cdot \frac{1}{4} \\ &f_{1}=f\left(x_{n}, y_{n}\right) ; \\ &f_{2}=f\left(x_{n}+\frac{h}{3} ; y_{n}+\frac{h f_{1}}{3}\right) \\ &f_{3}=f\left(x_{n}+\frac{2 h}{3} ; y_{n}+2 h \frac{f_{2}}{3}\right) \end{aligned} \end{split}\]
\[\begin{split} \begin{array}{l|ccc} 0 & 0 & 0 & 0 \\ 1 / 3 & 1 / 3 & 0 & 0 \\ 2 / 3 & 0 & 2 / 3 & 0 \\ \hline & 1 / 4 & 0 & 1 / 4 \end{array} \end{split}\]

Классический метод Рунге-Кутта 4-го порядка:

\[\begin{split} \begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0 \\ 1 / 2 & 1 / 2 & 0 & 0 & 0 \\ 1 / 2 & 0 & 1 / 2 & 0 & 0 \\ 1 & 0 & 0 & 1 & 0 \\ \hline & 1 / 6 & 2 / 6 & 2 / 6 & 1 / 6 \end{array} \end{split}\]

Метод Дормана-Принса 5(4)

При компьютерных вычисления чаще всего используют метод Дормана-Принса. В 1980-м году Дорман и Принс построили вложенный метод 5(4)-го порядка, в котором решение 5-го порядка используется в качестве начального значения для следующего шага, а решение 4-го порядка – для определения локальной погрешности выполненного шага интегрирования (с целью последующего использования в механизме управления длинной шага).

\[\begin{split} \begin{array}{c|cccccccc} 0 & & & & & & \\ \frac{1}{5} & \frac{1}{5} & & & & & \\ \frac{3}{10} & \frac{3}{40} & \frac{9}{40} & & & & & \\ \frac{4}{5} & \frac{44}{45} & -\frac{56}{15} & \frac{32}{9} & & & & \\ \frac{8}{9} & \frac{19372}{6561} & -\frac{25360}{2187} & \frac{64448}{6561} & -\frac{212}{729} & & & \\ 1 & \frac{9017}{3168} & -\frac{355}{33} & \frac{46732}{5247} & \frac{49}{176} & -\frac{5103}{18656} & & \\ 1 & \frac{35}{384} & 0 & \frac{500}{1113} & \frac{125}{192} & -\frac{2187}{6784} & \frac{11}{84} & \\ \hline x_1 & \frac{35}{384} & 0 & \frac{500}{1113} & \frac{125}{192} & -\frac{2187}{6784} & \frac{11}{84} & 0 \\ \hline \hat{x}_1 & \frac{5179}{57600} & 0 & \frac{7571}{16695} & \frac{393}{640} & -\frac{92097}{339200} & \frac{187}{2100} & \frac{1}{40} \end{array} \end{split}\]

Первая строка коэффициентов b дает решение пятого порядка точности, а вторая строка дает альтернативное решение, которое при вычитании из первого решения дает оценку ошибки. Поэтому его часто называют методом «4-5-го порядка».

Примечание. Несложно обобщить данный класс методов на неявный случай. Если таблица Бутчера на нижнетреугольная, то в общем случае на каждом шаге придётся решать нелинейную систему, чтобы найти все \(k_i\).

Неявные методы Рунге-Кутта#

Гораздо лучшую устойчивость имеют неявные методы Рунге-Кутта. Они вполне себе пригодны для решения жестких задач.

Пусть таблица для r-стадийного неявного метода Рунге-Кутта имеет следующий __не__нижнетреугольный вид:

\[\begin{split}\\ \left[\begin{array}{l|llll} \alpha_{1} & \beta_{11} & \beta_{12} & \cdots & \beta_{1, r-1} & \beta_{1r} \\ \alpha_{2} & \beta_{21} & \beta_{22} & \cdots & \beta_{2, r-1} & \beta_{2r} \\ \alpha_{3} & \beta_{31} & \beta_{32} & \cdots & \beta_{3, r-1} & \beta_{3r} \\ \cdots &\cdots &\cdots &\cdots & \cdots & \cdots \\ \alpha_{r} & \beta_{r, 1} & \beta_{r, 2} & \cdots & \beta_{r,\; r-1} & \beta_{r,\; r} \\ \hline & \gamma_{1} & \gamma_{2} & \cdots & \gamma_{r-1} & \gamma_{r} \end{array}\right]\end{split}\]

Тогда соответствующая ей система (вообще говоря нелинейная), которую необходимо решать на каждом шаге:

\[\begin{split} \left\{\begin{array}{l} k_1=f\left(t_n+\alpha_1 \cdot \tau, \quad y_n+\tau \cdot\left(\beta_{11} \cdot k_1+\beta_{12} \cdot k_2+\cdots+\beta_{1 r} \cdot k_r\right)\right) \\ k_2=f\left(t_n+\alpha_2 \cdot \tau, \quad y_n+\tau \cdot\left(\beta_{21} \cdot k_1+\beta_{22} \cdot k_2+\cdots+\beta_{2 r} \cdot k_r\right)\right) \\ k_3=f\left(t_n+\alpha_3 \cdot \tau, \quad y_n+\tau \cdot\left(\beta_{31} \cdot k_1+\beta_{32} \cdot k_2+\cdots+\beta_{3 r} \cdot k_r\right)\right) \\ \vdots \\ k_r=f\left(t_n+\alpha_r \cdot \tau, \quad y_n+\tau \cdot\left(\beta_{r 1} \cdot k_1+\beta_{r 2} \cdot k_2+\cdots+\beta_{r, r-1} \cdot k_{r-1}+\beta_{r, r} \cdot k_r\right)\right) \\ \end{array}\right. \end{split}\]
\[ y_{n+1}=y_n+\tau \cdot\left(\gamma_1 \cdot k_1+\gamma_2 \cdot k_2+\cdots+\gamma_r \cdot k_r\right) \]

Как правило, эту систему решают методом простой итерации (см. прошлый семестр).

Общее свойство всех таблиц Бутчера - свойство Кутты:

\[ \sum_{j=1}^{r} \beta_{i j}=\alpha_i \]

Для обеспечения нужного порядка аппроксимации \(p\), также необходимы определенные условия на коэффициента таблицы Бутчера. Их несложно вывести, раскладывая \([y(x)]_{n+1}\) в ряд Тейлора и зануляя коэффициенты перед ненужными степенями \(h\) методом неопределенных коэффициентов:

\[\begin{split} \begin{aligned} & p=1 \hookrightarrow \sum_{i=1}^s \gamma_i=1, \\ & p=2 \hookrightarrow \sum_{i=1}^s \gamma_i \alpha_i=1 / 2, \\ & p=3 \hookrightarrow \sum_{i=1}^s \gamma_i \alpha_i^2=1 / 3, \quad \sum_{i, j=1}^s b_i \beta_{i j} \alpha_j=1 / 6, \\ & p=4 \hookrightarrow \sum_{i=1}^s \gamma_i \alpha_i^3=1 / 4, \quad \sum_{i, j=1}^s b_i \alpha_i \beta_{i j} \alpha_j=1 / 8, \quad \sum_{i, j=1}^s \gamma_i \beta_{i j} \alpha_j^2=1 / 12, \quad \sum_{i, j, k=1}^s \gamma_i \beta_{i j} \beta_{j k} \alpha_k=1 / 24 . \end{aligned} \end{split}\]

Например, для порядка аппроксимации \(p=4\) - нужно выполнения всех строчек выше. А для \(p=3\), только первых трёх.

Методы Гаусса соответственно 2-го, 4-го, и 6-го порядков аппроксимации. Второй метод называется методом (4-го порядка) называется методом Хаммера - Холлинсворта:

\[\begin{split}\left[ \begin{array}{l|l} 1 / 2 & 1 / 2 \\ \hline & 1 \end{array}\right] \end{split}\]
\[\begin{split}\left[ \begin{array}{c|cc} \frac{1}{2}-\frac{\sqrt{3}}{6} & \frac{1}{4} & \quad \frac{1}{4}-\frac{\sqrt{3}}{6} \\ \frac{1}{2}+\frac{\sqrt{3}}{6} & \frac{1}{4}+\frac{\sqrt{3}}{6} & \frac{1}{4} \\ \hline &\frac{1}{2} & \frac{1}{2} \\ \end{array}\right] \end{split}\]
\[\begin{split}\left[ \begin{array}{c|cccc} \frac{1}{2}-\frac{\sqrt{15}}{10} & \frac{5}{36} & \frac{2}{9}-\frac{\sqrt{15}}{15} &\frac{5}{36}-\frac{\sqrt{15}}{30} \\ \frac{1}{2} & \frac{5}{36}+\frac{\sqrt{15}}{24} &\frac{2}{9} & \frac{5}{36}-\frac{\sqrt{15}}{24} \\ \frac{1}{2}+\frac{\sqrt{15}}{10} & \frac{5}{36}+\frac{\sqrt{15}}{30} &\frac{2}{9}+\frac{\sqrt{15}}{15} & \frac{5}{36} \\ \hline &\frac{5}{18} & \frac{4}{9} & \frac{5}{18}\\ \end{array}\right] \end{split}\]

Методы Лобатто IIIА 2-го, 4-го и 6-го порядков точности:

\[\begin{split}\left[ \begin{array}{l|ll} 0 & 0 & 0 \\ 1 & 1 / 2 & 1 / 2 \\ \hline & 1 / 2 & 1 / 2 \\ \end{array}\right] \end{split}\]
\[\begin{split}\left[ \begin{array}{l|lll} 0 & 0 & 0 & 0 \\ 1 / 2 & 5 / 24 & 1 / 3 & -1 / 24 \\ 1 & 1 / 6 & 2 / 3 & 1 / 6 \\ \hline & 1 / 6 & 2 / 3 & 1 / 6 \\ \end{array}\right] \end{split}\]
\[\begin{split}\left[ \begin{array}{l|llll} 0 & 0 & 0 & 0 & 0 \\ \frac{5-\sqrt{5}}{10} & \frac{11+\sqrt{5}}{120} & \frac{25-\sqrt{5}}{120} & \frac{25-13 \sqrt{5}}{120} & \frac{-1+\sqrt{5}}{120} \\ \frac{5+\sqrt{5}}{10} & \frac{11-\sqrt{5}}{120} & \frac{25+13 \sqrt{5}}{120} & \frac{25+\sqrt{5}}{120} & \frac{-1-\sqrt{5}}{120} \\ 1 & 1 / 12 & 5 / 12 & 5 / 12 & 1 / 12 \\ \hline & 1 / 12 & 5 / 12 & 5 / 12 & 1 / 12 \\ \end{array}\right] \end{split}\]

Устойчивость методов Рунге-Кутта#

Теорема (о функции устойчивости методов Рунге-Кутта). Пусть имеем r-стадийый метод Рунге-Кутта, заданный таблицей Бутчера \(\begin{array}{c|c} \vec{\alpha} & \mathbf{B} \\ \hline & \vec{\gamma}^\top \end{array}\).

Тогда его функция устойчивости имеет вид

\[ R(z)=1+z \cdot \vec{\gamma}^\top (\mathbf{E}-z \cdot \mathbf{B})^{-1}\vec{1} \]

или, что эквивалентно:

\[ R(z)=\cfrac{\operatorname{det}\left(\mathbf{E}-z \mathbf{B}+z \cdot \mathbf{\vec{1} \vec{\gamma}}^T\right)}{ \operatorname{det}\left(\mathbf{E}-z \mathbf{B}\right)} \]

В случае, если система имеет порядок аппроксимации \(p\), и этот самый порядок равняется числу стадий \(p=r\), то эту формулу можно явно вычислить:

\[R_{r=p}(z)=1+z+\ldots+ \frac{z^r}{r !}\]

Доказательство.

To be written

Пример исследования на устойчивость неявного метода Рунге-Кутта#

Покажите, что неявный метод Рунге-Кутты (метод Хаммера-Холлингсуорта порядка 4), заданный таблицей Бутчера:

\[\begin{split} \begin{array}{l|ll} 1 / 2-\sqrt{3} & 1 / 4 & 1 / 4-\sqrt{3} / 6 \\ 1 / 2+\sqrt{3} & 1 / 4+\sqrt{3} / 6 & 1 / 4 \\ \hline & 1 / 2 & 1 / 2 \end{array} \end{split}\]

имеет четвертый порядок аппроксимации. Найдите функцию устойчивости \(R(z)\) и исследуйте метод на \(A\)-устойчивость и \(L\)-устойчивость.

Решение.

Вспомним условия обеспечения порядков аппроксимации методов Рунге-Кутты:

\[\begin{split} \begin{aligned} & p=1 \hookrightarrow \sum_{i=1}^s \gamma_i=1, \\ & p=2 \hookrightarrow \sum_{i=1}^s \gamma_i \alpha_i=1 / 2, \\ & p=3 \hookrightarrow \sum_{i=1}^s \gamma_i \alpha_i^2=1 / 3, \quad \sum_{i, j=1}^s b_i \beta_{i j} \alpha_j=1 / 6, \\ & p=4 \hookrightarrow \sum_{i=1}^s \gamma_i \alpha_i^3=1 / 4, \quad \sum_{i, j=1}^s b_i \alpha_i \beta_{i j} \alpha_j=1 / 8, \quad \sum_{i, j=1}^s \gamma_i \beta_{i j} \alpha_j^2=1 / 12, \quad \sum_{i, j, k=1}^s \gamma_i \beta_{i j} \beta_{j k} \alpha_k=1 / 24 . \end{aligned} \end{split}\]

Для данного метода все эти соотношения проверяются непосредственной подстановкой (соотношения пятого порядка не выполняются). Т.е. порядок аппроксимации действительно 4.

Для нахождения функции устойчивости воспользуемся общей формулой

\[\begin{split} \begin{aligned} & R(z)=1+z \cdot \vec{\gamma}^\top (\mathbf{E}-z \cdot \mathbf{B})^{-1}\vec{1} =1+\frac{z}{2}(1,1)\left(\begin{array}{cc} 1-\frac{z}{4} & -\frac{z}{4}+\frac{\sqrt{3} z}{6} \\ -\frac{z}{4}-\frac{\sqrt{3} z}{6} & 1-\frac{z}{4} \end{array}\right)^{-1}\left(\begin{array}{l} 1 \\ 1 \end{array}\right)= \\ & =1+\frac{z / 2}{\left(1-\frac{z}{4}\right)^2-\left(\frac{z^2}{16}-\frac{z^2}{12}\right)}(1,1)\left(\begin{array}{cc} 1-\frac{z}{4} & \frac{z}{4}-\frac{\sqrt{3} z}{6} \\ \frac{z}{4}+\frac{\sqrt{3} z}{6} & 1-\frac{z}{4} \end{array}\right)\left(\begin{array}{l} 1 \\ 1 \end{array}\right)=1+\frac{z}{\left(1-\frac{z}{2}+\frac{z^2}{12}\right)}= \\ & =\frac{\mathrm{z}^2+6 z+12}{\mathrm{z}^2-6 z+12} \end{aligned} \end{split}\]

Эта функция является регулярной в левой полуплоскости \(\mathbb{C}^{-}\)и по принципу максимума модуля ее модуль принимает максимальное значение на границе (вертикальная ось \(z=i y\) ).

Напомним определение регулярной функции и принцип максимума модуля.

Функция \(f(z)\) комплексного переменного \(z\), однозначно определенная в области \(G\) и имеющая в каждой её точке конечную производную, называется регулярной в этой области.

Tеорема о принципе максимума. Модуль функиии, регулярной в некоторой области, не может достигать наибольшего значения внутри этой области, если только функиия отлична от тождественной постоянной.

На вертикальной оси \(|R(z)|=\left|\frac{12-y^2+6 i y}{12-y^2-6 i y}\right| = 1 \quad \forall y\).

Таким образом, метод \(A\)-устойчив, но не \(L\)-устойчив, поскольку \(\lim _{z \rightarrow-\infty} R(z) \neq 0\).

Построим также область абсолютной устойчивости:

from sympy import symbols, Abs
from sympy import I
from sympy.plotting import plot_implicit

# Define the variable z
z = symbols('z', complex=True)
x, y = symbols('x y', real=True)
# Define the function R
R = (z**2 + 6*z + 12)/(z**2 - 6*z + 12)

# Define the absolute value of R
abs_R = Abs(R)

# Define the condition for the set |R(z)|<1
cond = abs_R < 1
display(cond)

z_number = x + I*y
cond = cond.subs(z, z_number).simplify()

display(cond.doit())
# Plot the set where |R(z)|<1

plot_implicit(cond, adaptive = False, depth=2, points = 1000,
              title='Область устойчивости неявного метода Хаммера-Холлингсуорта',
              xlabel='Real part of z', ylabel='Imaginary part of z')
\[\displaystyle \left|{\frac{z^{2} + 6 z + 12}{z^{2} - 6 z + 12}}\right| < 1\]
\[\displaystyle \frac{\sqrt{x^{4} + 12 x^{3} + 2 x^{2} y^{2} + 60 x^{2} + 12 x y^{2} + 144 x + y^{4} + 12 y^{2} + 144}}{\sqrt{x^{4} - 12 x^{3} + 2 x^{2} y^{2} + 60 x^{2} - 12 x y^{2} - 144 x + y^{4} + 12 y^{2} + 144}} < 1\]
../../_images/ee325aaec555f88b333fb1e4f576c05bfbd8bf04d3f1a720db0e09fa6879de2c.png
<sympy.plotting.plot.Plot at 0x7feb48d62940>