%\documentstyle{report}
%\documentclass{report }

%\usepackage[cp866]{inputenc}
%\usepackage[cp1251]{inputenc}

%\usepackage[russian]{babel}
%\usepackage[LCY]{fontenc}
%\usepackage{graphicx,mybib,russian}
%\newcommand{\<<}{\lfq}
\documentclass[12pt,a4paper]{article}
%\usepackage[cp866]{inputenc}
\usepackage{pscyr}
\usepackage[cp1251]{inputenc}

\usepackage[russian]{babel}
%\usepackage[LCY]{fontenc}
%\usepackage{graphicx,mybib,russian}
%\newcommand{\<<}{\lfq}
\textheight 22cm \textwidth 16cm \topmargin 0cm \oddsidemargin 0cm \evensidemargin 0cm
%\twocolumn
%\oddsidemargin =-2cm
%\topmargin -3cm
%\textheight=27cm
%\textwidth=17cm
\pagestyle{empty}
\begin{document}
{\footnotesize

{\bf Численные методы решения задачи Коши для ОДУ.}
Для  простоты рассмотрим  уравнение первого порядка и
затем распространим результаты на системы первого порядка.
Пусть требуется найти на интервале $[0,T]$ найти функцию $u=u(t)$
удовлетворяющую уравнению

$ \frac{du}{dt}=f(t,u)$

 с условием
$u(0)=u^0$ для всех $t\in[0,T]$

Пусть функция $f(t,u)$ -непрерывная
  функция своих  аргументов в прямоугольнике
$G=\{ (t,u): 0 \le t \le T, |u-u^0|\le U\} $ удовлетворяет условию Липшица

$|f(t,u^1)- f(t,u^2)|\le K|u^1-u^2| для (t,u^1),(t,u^2)\in G$, K-постоянная.
Из курса  ОДУ мы знаем, что в этих условиях уравнение имеет единственное решение
в окрестности точки $t=0$ и, кроме того, поставленная задача эквивалентна
решению интегрального уравнения

$u(t)=u^0+\int_0^tf(t,u(t))dt$

В дальнейшем будем предполагать, что функция $f(t,u)\in C^m_G$ и задача Коши имеет
решение на всем интервале $[0,T]$.

Для построения численных алгоритмов отрезку
$[0,T]\to \omega_\tau=\{t_i;t_i=i\tau,i=\overline{0,n},\tau=T/n \}$сетку, и
$u\in C_{[0,T]}\to T_\tau C=R_n, T_\tau u=\{u(t_i)\}_{i=0}^n $-сеточная функция.
Здесь и далее $u(t_i)$- точное решение задачи Коши в точке $t_i\in [0,T]$,
$u_i$- приближенное значение решения.

{\bf Группа методов, основанных на разложении  в ряды Тейлора}
 Наиболее простым методом построения решения в  точке $t_{i+1}$,
если известно решение в точке $t_i$ является способ основанный на разложении
в ряд Тейлора

$u(t_{i+1})=u(t_i)+\tau\Delta(t_i,u(t_i),\tau)$

$\Delta(t,u,\tau)=u'(t)+\frac{\tau}{2}u''(t)=\frac{\tau^2}{3}u'''(t)+\cdots$

Если в этом разложении ряд оборвать на $p$ члене и заменить точное значение $u(t_i)$ его приближенным
значением $u_i$, то при помощи исходного уравнения можно получить алгоритм

$u_{i+1}=u_i+\tau\varphi(t_i,u_i,\tau), i=\overline{o,n-1}$

$\varphi=f(t,u)+\frac \tau 2 f'+\cdots +\frac{\tau^{p-1}}{(p-1)!}f^{(p-1)}(t,u) $
 Под производной здесь понимается полная производная по $t$

Так в случае $p=1$ имеем метод Эйлера

$
\left\{
\begin{array}{l}
u_{i+1}=u_i+\tau f(t_i,u_i)\\
u_0=u^0,\, i=\overline{0,n-1}\\
\end{array}
\right.
$

Для $p=2$

$
\left\{
\begin{array}{l}
u_{i+1}=u_i+\tau [f(t_i,u_i)+\\
\frac {\tau}{2}(f_t(t_i,u_i)+f_u(t_i,u_i))f(t_i,u_i)]\\
u_0=u^0,\, i=\overline{0,n-1}\\
\end{array}
\right.
$

В каждом из этих алгоритмом можно последовательно, зная $u_0$ получить
все приближенные значения $u_i$ в точках сетки.

Применимость метода ограниченна случаем функций $f(t,u)$ для которых легко вычисляются полные производные высших
порядков

Чаще используется подход, основанный на построении приближенных формул для
$\varphi$ максимально близких к$\Delta$ и не содержащих производных высших порядков.
В качестве примера построения алгоритма для решения задачи Коши путем такой "подгонки"
 рассмотрим  метод Хойна

Здесь

$\varphi(t,u,\tau)=c_1f(t,u)+c_2f(t+a_2\tau,u+b_{21}\tau f(t,u))$

$c_1,c_2,a_2,b_{21}$-постоянные подлежащие определению путем их выбора из максимальной
по возможности близости функций $\varphi$ и $\Delta$.

Разлагая $\varphi $ по степеням $\tau$ до членов порядка $h^2$, получим
$
\varphi(t,u,\tau)=(c_1+c_2)f(t,u)+\tau c_2[a_2f_t(t,u)+b_{21}
f_u(t,u)f(t,u)]+O(\tau^2).
$

С другой стороны,

$
\triangle (t,u,\tau)=f(t,u)+\frac 12\tau [f_t(t,u)+f_t(t,u)f(t,u)]+O(\tau^2).
$

Отсюда видно, что взяв

$
\left\{
\begin{array}{l}
c_1+c_2=1 \\%
c_2a_2=\frac 12 \\
c_2b_{21}=\frac 12,
\end{array}
\right.
$

получаем в функцию, для которой

$
\varphi (t,u,\tau)-\triangle (t,u,\tau)=O(\tau^2).
$

Алгебраическая система
 имеет множество решений вида

$
c_1=1-\alpha ,\ c_2=\alpha ,\ a_2=b_{21}=\frac 1{2\alpha },
$

где $\alpha $ - свободный параметр.

При $\alpha =\frac 12$ , в частности,
получаем двукратный
{\it замечание:
Под кратностью метода
в данном случае понимается количество вычислений функции
 $f\left( t,u\right) $.}

{\it метод Рунге-Кутты-метод Хойна:}

$\left\{
\begin{array}{l}
u_{i+1}=u_i+\frac \tau 2[f(t_i,u_i)+f(t_{i+1},u_i+\tau f(t_i,u_i))], \\
u_0=u^0,\ i=\overline{0,n-1},\ x_i\in \omega _n,
\end{array}
\right.
$
требующий всего два вычисления функции $f(t,u)$ на каждом шаге.

Процесс ''подгонки'' рядов Тейлора можно продолжить, строя функции $%
\varphi (t,u,\tau)$, использующие все
большие отрезки ряда Тейлора. Подобным образом получают
$m${\it -кратные явные методы Рунге-Кутты:}

$\left\{
\begin{array}{l}
u_{i+1}=u_i+h\varphi (t_i,u_i,\tau) \\
u_0=u^0,\ i=\overline{0,n-1},\ x_i\in \omega _n,
\end{array}
\right.
$

$
\varphi (t,u,\tau)\equiv \sum_{r=1}^mc_rk_r,
$

$
k_1\equiv f(t,u),
$

$
 k_r\equiv f(t+\tau a_r,u+\tau\sum_{s=1}^{r-1}b_{rs}k_s),
\ r=\overline{2,m},
$
требующие $m$ вычислений функции $f\left( t,u\right) $ на каждом шаге.

Наиболее известным из них является четырехкратный метод:

$
\left\{
\begin{array}{l}
u_{i+1}=i_n+\frac \tau 6(k_1+2k_2+2k_3+k_4) \\
u_0=u^0,\ i=\overline{0,n-1},\ t_i\in \omega _n,
\end{array}
\right.
$

$
\begin{array}{l}
k_1\equiv f(t_i,u_i), \\
k_2\equiv f(t_i+\frac 12\tau ,u_n+\frac 12\tau k_1), \\
k_3\equiv f(t_i+\frac 12\tau,u_i+\frac 12\tau k_2), \\
k_4\equiv f(t_i+\tau,u_i+\tau k_3).
\end{array}
$

Алгоритмы Рунге-Кутты отлично приспособлены для практических
вычислений: они не требуют вычисления дополнительных начальных данных и
 легко позволяют менять шаг $\tau$.

Усложняя формулы, можно получить и более
широкий класс методов,

Другой подход построения алгоритмов решения задачи Коши связан с построением
алгоритмов решения эквивалентного  задачи Коши интегральному уравнению.
На сетке $\omega_n$ интегральное уравнение представляется в виде

$
u(t_{i+1})=u(t_i) +\int_{t_i}^{t_{i+1}}f(t,u(t))dt,\qquad u_0=u^0,
 i=\overline{0,n-1},\ t_i\in \omega _n,
$

Для вычисления интеграла можно воспользоваться квадратурной
формулой и свести решение задачи Коши к выполнению алгоритма

$
\begin{array}{l}
u_{i+1}=u_i+\sum_{k=0}^M C_k^{(M)} f( \eta_k, u_k), \\
u_0=u^0,\qquad i=\overline{0,n-1},\\
\eta_k \in \omega_M\{ \eta_k: t_i=\eta_0<\eta_1 \cdots<\eta_M=t_{i+1}\}\\
\end{array}
$

Примеры:
а) явный метод Эйлера (вычисление интеграла заменяется вычислением по квадратурной
формуле прямоугольников)

$
\begin{array}{l}
u_{i+1}=u_i+ \tau f(t_i,u_i), \\
u_0=u^0,\qquad i=\overline{0,n-1},\\
\end{array}
$

б) Неявный метод Эйлера (вычисление интеграла заменяется вычислением по квадратурной
формуле прямоугольников)

$
\begin{array}{l}
u_{i+1}=u_i+ \tau f(t_{i+1},u_{i+1}), \\
u_0=u^0,\qquad i=\overline{0,n-1},\\
\end{array}
$

с)  симметрический неявный алгоритм ( частный случай схемы Роте)
  (вычисление интеграла заменяется вычислением по квадратурной
формуле трапеций)

$
\begin{array}{l}
u_{i+1}=u_i+ \frac{\tau}{2}(f(t_i,u_i)+ f(t_{i+1},u_{i+1})), \\
u_0=u^0,\qquad i=\overline{0,n-1},\\
\end{array}
$



д)   схема Роте
  (вычисление интеграла заменяется вычислением по квадратурной
формуле трапеций с весами)

$
\begin{array}{l}
u_{i+1}=u_i+ \frac{\tau}{2}(\alpha f(t_i,u_i)+ (1-\alpha)f(t_{i+1},u_{i+1})), \\
u_0=u^0,\qquad i=\overline{0,n-1},\qquad \alpha\in [0,1]\\
\end{array}
$


е)  Схема предиктор-корректор

Известно, что задача Коши имеет непрерывное решение в окрестности точки $t_i$,
следовательно для решения нелинейного уравнения итерационным методом
можно взять в качестве начального приближения решения полученное по любому
явному алгоритму, на пример схеме Эйлера, и ограничится  одним шагом итерационного
метода. В результате будем иметь алгоритм


$
\begin{array}{l}
u_{i+1}^*=u_i+ \tau f(t_i,u_i), \\
u_{i+1}=u_i+ \frac{\tau}{2}(\alpha f(t_i,u_i)+ (1-\alpha)f(t_{i+1},u_{i+1}^*)), \\
u_0=u^0,\qquad i=\overline{0,n-1},\qquad \alpha\in [0,1]\\
\end{array}
$

ж) Схемы Адамса

Для вычисления интегралов можно использовать интерполяционные многочлены и
выше первой степени, используя информацию о решении $u$ слева от интервала
$ [t_i,t_{i+1}]$ на интервале $[t_{i-m},t_{i+1}]$ изаменить
функцию $f$ ее интерполянтой, например Лагранжа

$
f\to f^L(t)=\sum_{k-m}^{i+1} f(t_i,u_i)\prod_{j=i-m,j\ne k}^{i+1} \frac{t-t_j} {t_k-t_j}
$

В результате имеем алгоритм

$
\begin{array}{l}
u_{i+1}=u_i+ \sum_{k=0}^mC_kf(t_{i-k},u_{k-i}) \\
u_0=u^0,\qquad i=\overline{0,n-1}\\
\end{array}
$

Недостающие  значения $u_i$ вычисляются по любому явному методу.
Для $m=1$ будем иметь

$
f^L(t)=f(t_{i-1},u_{i-1})\frac{t-t_i} {t_{i-1}-t_i}+f(t_i,u_i)\frac{t-t_{i-1}}{t_i-t_{i-1}}
$

$
\begin{array}{l}
u_{i+1}=u_i+ \frac{\tau}{2}[f(t_i,u_i)+0.5(f(t_i,u_i)-f(t_{i-1},u_{i-1}))] \\
u_0=u^0,\qquad i=\overline{0,n-1}\\
\end{array}
$


}

\end{document}
