Численные методы решения задачи Коши для систем обыкновенных дифференциальных уравнений
Таким образом, можно написать приближенное равенство:
![$ u(t) \approx \tilde {V_n} (t) \equiv \sum\limits_{i = 0}^{I}
{\frac{u^{(i)} (t_n)}{i!} (t - t_n)^{i}. } $](/sites/default/files/tex_cache/ac81b0b613f3d8675cb4d6839925277c.png)
Полагая
![u_{n + 1} = \tilde {V_n} (t_{n + 1}),](/sites/default/files/tex_cache/77b0db4e9c38503bcf97b7b60e32de8e.png)
получаем приближенное значение u(t) в точке t = tn +
1. При I = 1 и получаем метод Эйлера:
![u_{n + 1} = u_{n} + \tau f\_ n.](/sites/default/files/tex_cache/669f7a1dc230051c9be174230781f364.png)
Этот способ не получил распространения в практике решения дифференциальных
уравнений из - за необходимости вычисления производных u(i), где По затратам машинного времени он заметно уступает другим методам, о которых будет идти речь далее.
В настоящее время в практике решения жестких систем ОДУ применяют так называемые многозначные методы, основанные на разложении в ряд Тейлора и вычислении производных. О жестких системах ОДУ будет рассказано ниже.
Рассмотрим еще один способ получения простейших одношаговых расчетных схем для численного решения уравнения (8.1), для чего напишем равенство
![u(t + {\tau}) = u(t) + \int\limits_0^{t}{u^{\prime}(t + {\tau}) d{\tau}}.](/sites/default/files/tex_cache/ac664d043b78cf4286b4abdaf5475520.png)
После аппроксимации интеграла в правой части по формуле прямоугольников и замене его на величину получим
![u(t + \tau ) = u(t) + \tau u'(t) + O(\tau ^{2}),](/sites/default/files/tex_cache/f9f7619807030c0f6f462a161ab5e1ae.png)
или
![u(t + \tau ) = u(t) + \tau f(t, u) + O(\tau ^{2}),](/sites/default/files/tex_cache/50aee2e1d16f9bbe3169b1c67dcb2ef6.png)
поскольку u'(t) = f(t, u).
Опуская член и обозначая
получим метод Эйлера.
Если рассматриваемый интеграл заменить формулой трапеций, получим
![$ u(t + {\tau}) = u(t) + \frac{{\tau}}{2} [u^{\prime}(t) + u^{\prime}(t + {\tau})] + O({\tau}^3 ), $](/sites/default/files/tex_cache/1b9de25cc9b98c660dcd21ebe854e983.png)
откуда имеем
![$ u_{n + 1} = u_n + \frac{{\tau}}{2} [f(t_n, u_n) + f(t_{n + 1}, u_{n + 1})]. $](/sites/default/files/tex_cache/b455be5445600dd7bf595c65594bd5fd.png)
Этот метод называется неявным методом трапеций. Для того чтобы метод был явным, его делают двухэтапным:
![\begin{gather*}
\tilde u_{n + 1} = u_n + {\tau}f(f_n, u_n), \\
u_{n + 1} = u_n + \frac{{\tau}}{2}[f(t_n, u_n) + f(t_{n + 1}, \tilde u_{n + 1})],
\end{gather*}](/sites/default/files/tex_cache/d0ce6049832a6269e770e96e7145dcaf.png)
где — вспомогательная величина,
вычисляемая на промежуточном этапе. Если этот же интеграл приблизить формулой прямоугольников со средней точкой, то получим
![$ u(t + {\tau}) = u(t) + {\tau}u^{\prime}\left({t + \frac{{\tau}}{2}}\right) + O({\tau}^3 ). $](/sites/default/files/tex_cache/f39988aebeff6e2451ec9ce068fbab94.png)
Снова воспользовавшись дифференциальным уравнением (8.1), преобразуем последнее выражение к виду
![$ u(t + {\tau}) = u(t) + {\tau}f\left[{t + \frac{{\tau}}{2},
u\left({t + \frac{{\tau}}{2}}\right)}\right] + O({\tau}^3 ). $](/sites/default/files/tex_cache/1fa5287e9171b95ce3728d5f37b0f31d.png)
Соответствующий неявный метод имеет вид
![$ u_{n + 1} = u_n + {\tau}f\left[{t_n + \frac{{\tau}}{2}, u\left({t_n + \frac{{\tau}}{2}}\right)}\right] ; $](/sites/default/files/tex_cache/fb46c9ef73ddc1b37f248fdeb767bc36.png)
для его явной реализации можно воспользоваться следующей двухэтапной формулой:
![\begin{gather*}
u_{n + 1/2} = u_n + \frac{{\tau}}{2} f(t_n, u_n), \\
u_{n + 1} = u_n + {\tau}f\left({t_n + \frac{{\tau}}{2}, u_{n + 1/2}}\right).
\end{gather*}](/sites/default/files/tex_cache/7086cd12e6c47336f45bb40d9f0ade92.png)