🎨
Цвет акцента
Синий
Фиолетовый
Пурпурный
Учебник · Глава 12

Решение обыкновенных дифференциальных уравнений первого порядка.

6. Решение уравнений методом Рунге-Кутта.

     Рассмотрим методику решения дифференциальных уравнений методом Рунге-Кутта на конкретном примере. Пусть задано дифференциальное уравнение с начальным условием:

  \(\displaystyle \frac{du}{dt} = 2u - e^t, \qquad u(t=0) = 1.\) (12.12)
Требуется определить значение функции u в точке
  \(\displaystyle u(t^0 + \tau) - ?\)
Значение шага по времени возьмём равным 0,1.
     Видно, что решением уравнения (12.12) является функция \(\displaystyle u = e^t\), значение которой в искомой точке составляет:
  \(\displaystyle u = e^{\tau} = e^{0{,}1} = 1{,}105170918.\)
Выполним решение уравнения (12.12), используя метод Рунге-Кутта с различными порядками точности, и сравним полученные результаты с истинным решением (следует отметить, что для данного уравнения явный и неявный методы Эйлера неприменимы, так как соответствующие им разностные схемы для уравнения (12.12) будут неустойчивы).

     Рассмотрим методику решения уравнения (12.12) методом Рунге-Кутта 2-го порядка с использованием первого набора параметров:
  \(\displaystyle \alpha_2 = 0{,}5, \qquad \beta_{21} = 0{,}5, \qquad \gamma_1 = 0, \qquad \gamma_2 = 1; \\ k_1 = f(t^0,\ u^0) = 2 \cdot 1 - e^0 = 2 - 1 = 1; \\ k_2 = f(t^0 + 0{,}05,\ u^0 + 0{,}05 k_1) = 2 \cdot (1 + 0{,}05 \cdot 1) - e^{0+0{,}05} = 2{,}1 - 1{,}051271 = 1{,}048729; \\ u^{0{,}1} = u^0 + 0{,}1 k_2 = 1 + 0{,}1 \cdot 1{,}048729 = 1{,}1048729.\)
Видно, что ошибка появляется в третьей цифре после запятой.

     Рассмотрим методику решения уравнения (12.12) методом Рунге-Кутта 2-го порядка с использованием второго набора параметров:
  \(\displaystyle \alpha_2 = 1, \qquad \beta_{21} = 1, \qquad \gamma_1 = 0{,}5, \qquad \gamma_2 = 0{,}5; \\ k_1 = f(t^0,\ u^0) = 2 \cdot 1 - e^0 = 2 - 1 = 1; \\ k_2 = f(t^0 + 0{,}1,\ u^0 + 0{,}1 k_1) = 2 \cdot (1 + 0{,}1 \cdot 1) - e^{0+0{,}1} = 2{,}2 - 1{,}105171 = 1{,}094829; \\ u^{0{,}1} = u^0 + 0{,}05(k_1 + k_2) = 1 + 0{,}05(1 + 1{,}094829) = 1{,}10474145.\)
Видно, что ошибка, как и в предыдущем случае, появляется в третьей цифре после запятой.

     Рассмотрим методику решения уравнения (12.12) методом Рунге-Кутта 3-го порядка:
  \(\displaystyle k_1 = f(t^0,\ u^0) = 2 \cdot 1 - e^0 = 2 - 1 = 1; \\ k_2 = f(t^0 + 0{,}05,\ u^0 + 0{,}05 k_1) = 2 \cdot (1 + 0{,}05 \cdot 1) - e^{0+0{,}05} = 2{,}1 - 1{,}051271 = 1{,}048729; \\ k_3 = f(t^0 + 0{,}1,\ u^0 - 0{,}1 k_1 + 0{,}2 k_2) = 2 \cdot (1 - 0{,}1 \cdot 1 + 0{,}2 \cdot 1{,}048729) - e^{0+0{,}1} = 2{,}219492 - 1{,}105171 = 1{,}114321; \\ u^{0{,}1} = u^0 + \frac{0{,}1}{6} \cdot (k_1 + 4 k_2 + k_3) = 1 + \frac{0{,}1}{6} \cdot (1 + 4 \cdot 1{,}048729 + 1{,}114321) = 1{,}10515395.\)
Видно, что ошибка появляется в пятой цифре после запятой. Это наглядно доказывает, что метод Рунге-Кутта 3-го порядка более точен, чем метод Рунге-Кутта 2-го порядка.

     Рассмотрим методику решения уравнения (12.12) методом Рунге-Кутта 4-го порядка:
 
Видно, что ошибка появляется в седьмой цифре после запятой. Это наглядно доказывает, что метод Рунге-Кутта 4-го порядка более точен, чем методы Рунге-Кутта 2-го и 3-го порядка.