|
Рассмотрим методику решения дифференциальных уравнений методом Рунге-Кутта на конкретном примере.
Пусть задано дифференциальное уравнение с начальным условием:
| |
\(\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-го порядка.
|