\documentclass[10pt,a4paper]{article}

%% Polonizacja
\usepackage[T1]{fontenc} 
\usepackage[latin2]{inputenc}
\usepackage{polski} 
\usepackage{indentfirst}

%% Wzorki matematyczne
\usepackage{amsmath,amsfonts} 
\usepackage{latexsym}

%% listing (na razie nieużywane)
%\usepackage{listings}
%\lstloadlanguages{C}

%% Inne
\usepackage{comment}
\usepackage{enumerate}

%% Hiperłącza (powinien byc ostatnim ładowanym pakietem)
\usepackage[dvips]{hyperref}


%% Numerowanie równań
\numberwithin{equation}{subsection}

%% Twierdzenia
\newtheorem{thm}{Twierdzenie}
\newtheorem{df}{Definicja}

%% Własne polecenia
\DeclareMathOperator{\sign}{sign}

\newcommand*{\cc}[1]{{#1}^{\ast}}
\newcommand*{\n}[1][n]{$#1$\nobreakdash-\hspace{0pt}}
\newcommand*{\abs}[1]{\ensuremath{\lvert #1 \rvert}}
\newcommand*{\norm}[1]{\ensuremath{\lVert #1 \rVert}}
\newcommand*{\ABS}[1]{\ensuremath{\left\lvert #1 \right\rvert}}
\newcommand*{\NORM}[1]{\ensuremath{\left\lVert #1 \right\rVert}}
\newcommand*{\field}[1]{\mathbb{#1}}


\begin{document}

\newcounter{seria}
\setcounter{seria}{7}
% 1 - sortowanie
% 2 - układy równań
% 3 - układy równań: iteracyjnie
% 4 - wartości własne metodą potęgową
% 5 - wartości własne przez diagonalizację
% 6 - równania różniczkowe zwyczajne: Runge-Kutta
% 7 - równania różniczkowe zwyczajne: metody wielokrokowe
\newcommand*{\preparedby}{Paweł Jankowski, Jakub Narębski}

\title{
  \bfseries
  Numeryczne rozwiązywanie równań różniczkowych zwyczajnych cz. II\\
  \normalfont
  Metody wielokrokowe i~metody predyktor--korektor
  \\[1ex]
  \Large
  Ćwiczenia z~Metod Numerycznych II~A\\
  rok akademicki 2001/2002\\[0.5ex]
  \normalsize seria \arabic{seria}}

\author{
  \href{mailto:jnareb@fuw.edu.pl}{Jakub Narębski} \and
  \href{mailto:tpawlow@fuw.edu.pl}{Tomasz Pawłowski}}

\date{\today}

\maketitle

\section{Równania różniczkowe}
\label{sec:rownania-rozniczkowe}


\subsection{Zagadnienie początkowe Cauchy'ego}
\label{sec:zagadn-poczatk}

Zajmijmy się rozwiązaniem metod numerycznych rozwiązania równań
różniczkowych zwyczajnych pierwszego rzędu, t.j. równań postaci
\begin{equation}
  \label{eq:rown-rozn}
  y' = f(x,y),
\end{equation}
gdzie $f$ jest dana funkcją dwu zmiennych.  Funkcje $y=y(x)$ określona
i~różniczkowalna dla $x$ należących do ustalonego przedziału $[a,b]$
nazywamy rozwiązaniem równania~\eqref{eq:rown-rozn}, jeśli
\begin{math}
  y'(x) = f(x,y(x)) \text{\ dla\ } x\in [a,b]
\end{math}.

Równanie~\eqref{eq:rown-rozn} może mieć wiele rozwiązań, np.
rozwiązaniem równania $y'=y$ jest każda funkcja postaci $y(x)=C e^x$,
gdzie $C \in \field{R}$.  Narzucenie odpowiedniego dodatkowego warunku
na szukane rozwiązanie zapewnia jego jednoznaczność.  My zajmiemy się
wyłącznie równaniami pierwszego rzędu z~warunkiem początkowym
\begin{math}
  y(a) = y_a
\end{math}

Tego typu zagadnienie początkowe
\begin{subequations}
  \label{eq:zag-pocz}
  \begin{align}
    y'(x) &= f(x,y(x)) \qquad \text{dla\ } x=[a,b] \\ 
    y(a)  &= y_a
  \end{align}
\end{subequations}
zwane jest \emph{zagadnieniem Cauchy'ego}.  Może ono mieć jedno lub
wiele rozwiązań bądź być sprzeczne.  Poniższe twierdzenie określa
warunek wystarczający istnienia i~jednoznaczności rozwiązania
zagadnienia~\eqref{eq:zag-pocz}.


\begin{thm}
  Jeżeli $f(x,y)$ jest funkcja ciągłą zmiennej $x$ dla $x\in [a,b]$ i
  spełnia \emph{warunek Lipschitza} ze względu na $y$, tzn. istnieje
  taka stała $L$, że dla dowolnych rzeczywistych $y_1, y_2$ i~dla
  każdego $x \in [a, b]$ jest spełniona nierówność
  \begin{math}
    \abs{f(x,y_1)-f(x,y_2)} \le L \abs{y_1 - y_2}
  \end{math}
  to dla każdego skończonego $y_a$ istnieje dokładnie jedna funkcja
  $y(x)$ ciągła i~różniczkowalna na $[a,b]$ taka, że
  \begin{math}
    y'(x)=f(x,y(x)) \text{\ oraz\ } y(a)=y_a
  \end{math}
\end{thm}


\subsection{Metody różnicowe}
\label{sec:metody-roznicowe}

Metody przybliżonego całkowania zagadnień
początkowych~\eqref{eq:zag-pocz} można podzielić na dwie istotnie
różne klasy.  Pierwsza, rzadziej używana w~rachunku numerycznym, jest
klasa metod zmierzających do wyznaczenia jakiejś analitycznej postaci
rozwiązania, np. rozwinięcia w~szereg potęgowy czy w~szereg Fouriera.
Metody tego rodzaju maja dwie istotne wady.  Stosują się do bardzo
wąskiej klasy zadań, a~otrzymane szeregi bywają bardzo wolno zbieżne.
Ponadto łatwo zauważyć, że rachunek numeryczny przy wyznaczaniu
przybliżeń takich analitycznych postaci spełnia w~gruncie rzeczy mniej
istotną, drugorzędną rolę.

Druga, bardziej uniwersalną klasę metod polegającą na tablicowaniu
poszukiwanej funkcji stanowi tzw. klasa \emph{metod różnicowych}.
Wyznaczają one jedynie przybliżenia wartości rozwiązania $y(x_i)$
w~pewnych punktach $x_i$ należących do przedziału całkowania $[a, b]$.
Tutaj będziemy się zajmowali przypadkiem, w~którym $x_i = a + ih$ dla
$i=0, 1, \dots, N$, gdzie wielkość $h = \frac{b-a}{N}$ nazywamy
\emph{krokiem całkowania}.

Główny postulat jaki muszą spełniać metody różnicowe, to zbieżność
wyznaczanych przez nie przybliżeń $y_i = y_i(h)$, tzn. $y_i(h) \to
y(x)$ przy $h\to 0$ dla każdego ustalonego $x = a + ih$.  Jest to
oczywiście jedynie 'teoretyczna' własność metody.  Realizując ja
numerycznie możemy uzyskać przybliżenie rozwiązania jedynie
z~określona skończoną dokładnością.

\medskip

Będziemy rozważali dwie klasy metod różnicowych.  
%%
\emph{Metody jednokrokowe} konstruujące ciąg przybliżeń $y_i \approx
y(x_i)$ dla $i=0,1,\dots,N$ zgodnie ze wzorem
\begin{subequations}
  \label{eq:metody-jednokrokowe}
  \begin{align}
    y_{i+1} &= y_i+h\Phi_f(x_i,y_i;h), \quad i=0,1,\dots,N-1 \\
    y_0     &= y_a
  \end{align}
\end{subequations} 
gdzie funkcja $\Phi = \Phi_f$ może zależeć od $f$ nieliniowo.  
%%
Druga klasą będa \emph{liniowe metody wielokrokowe}.


\subsection{Metody jednokrokowe}
\label{sec:metody-jednokrokowe}

\subsubsection{Metoda Eulera i~jej modyfikacje}
\label{sec:metoda-eulera}

Niech $x_i=a+ih$, $i=0,1,\dots,N$ gdzie $h=\frac{b-a}{N}$.  Pochodną
$y'(x)$ przybliżamy ilorazem roznicowym opartym na węzłach $x$ i
$x+h$.  Wowczas jeśli funkcja $f \in \mathcal{C}^1_{[a,b]}$,
rozwiązanie $y$ równania~\eqref{eq:rown-rozn} jest klasy
$\mathcal{C}^2_{[a,b]}$ i~ze wzoru Taylora z resztą otrzymamy równość
\begin{equation*}
  y'(x) = \frac{y(x+h)-y(x)}{h} +\frac{h}{2}y''(\zeta), \quad \zeta\in [x,x+h]
\end{equation*}
Ponieważ $y(x)$ spełnia równanie~\eqref{eq:zag-pocz}, więc w~punktach
$x=x_i$ zachodzi
\begin{subequations}
  \label{eq:zach}
  \begin{align}
    y(x_{i+1}) &= y(x_i) + h f(x_i,y(x_i)) + g_i, \\ 
    y(a)       &= y_a,
  \end{align}
\end{subequations}
gdzie z~rozwinięcia Taylora mamy następujące oszacowanie na $g_i$
\begin{equation}
  \abs{g_i} \le M_2 h^2, \quad M_2 = \max_{x\in [a,b]} \frac{\abs{y''(x)}}{2}
\end{equation}
Odrzucając we wzorze~\eqref{eq:zach} nieznane składniki $g_i$
otrzymujemy metodę Eulera konstruującą ciąg przybliżeń $y_i$
\begin{subequations}
  \label{eq:metoda-Eulera}
  \begin{align}
    y_{i+1} &= y_i + h f(x_i,y_i) \quad \text{dla\ } i=0,1,\dots,N-1 \\
    y_0     &= y_a
  \end{align}
\end{subequations}

Metoda Eulera mimo swej prostoty jest już rzadko stosowana ze względu
na bardzo wolną zbieżność.  Istnieją dwie proste, szybciej zbieżne jej
modyfikacje takie, że $e_i = e_i(h) = \mathcal{O}(h^2)$
\begin{itemize}
\item{'ulepszona metoda Eulera' (metoda Heuna) \\ $y_{i+1} =
    y_i+\frac{1}{2}h (f(x_i,y_i)+f(x_i+h,y_i+hf(x_i,y_i)))$}
\item{zmodyfikowana metoda Eulera \\ $y_{i+1} = y_i+ h
    f(x_i+\frac{1}{2}h,y_i+\frac{1}{2}hf(x_i,y_i))$}
\end{itemize}

Metoda Eulera ma prosta interpretacje geometryczną.  Rozpoczynając od
punktu $(a,y_a)$ leżącego na krzywej całkowej będącej rozwiązaniem
zagadnienia~\eqref{eq:zag-pocz} posuwamy się tak długo po stycznych do
wykresów całek równania~\eqref{eq:rown-rozn} przechodzących przez
kolejno otrzymywane punkty $(x_i,y_i)$ aż osiągniemy punkt odciętej
o~$h$ większej niż początkowy punkt na danej stycznej.


\subsubsection{Metody Rungego--Kutty}
\label{sec:metody-RK}

Klasa metod Rungego--Kutty (RK) jest zdefiniowana przez rodzinę
funkcji $\Phi$ postaci
\begin{subequations}
  \begin{align}
    \Phi(x,y;h) &= \sum_{i=1}^r c_i k_i \\ 
    k_i &= k_i(x,y;h) \\
        &= f(x+h\sum_{j=1}^rb_{ij},y+h\sum_{j=1}^rb_{ij}k_j) 
        \quad \text{dla\ } i=1,2,\dots,r \nonumber
  \end{align}
\end{subequations}
zależnych parametrycznie od wielkości $c_i,b_{ij},i,j=1,1,\dots,r$.
Jeżeli wszystkie $b_{ij}=0$ dla $j \ge i, i=1,2,\dots,r$ to równania
definiujące wielkości $k_i$ (przy ustalonych $x$ i~$y$) redukują się
do postaci
\begin{equation}
  k_i = f(x+h\sum_{j=1}^{i-1}b_{ij}, y+h\sum_{j=1}^{i-1}b_{ij}k_j) 
  \quad \text{dla\ } 1,2,\dots,r.
\end{equation}
Stanowią więc układ zależności rekurencyjnych, liniowych ze względu na
kolejne $k_i$.  Ten typ metod RK nosi nazwę \emph{otwartych}.  Przy
ustalonym $r$ koszt jednego kroku metody (tzn. obliczenia kolejnego
$y_i$) jest równy kosztowi obliczenia $r$ wartości funkcji $f$ i~nie
zależy od wyboru parametrów $c_i, b_{ij}$.  Wielkości te dobiera się
tak, aby przy ustalonym $r$ rząd metody był możliwie najwyższy, wtedy
bowiem metoda jest najbardziej efektywna.  Można pokazać, że
maksymalny rząd ($p(r)$) metody RK korzystającej z~$r$ wartości
funkcji jest równy $r$ dla $r=1,2,3,4$ oraz, że dla dowolnych $r$ jest
$p(r) \le r$.

Najczęściej stosowana jest tzw. klasyczna metoda RK, czyli metoda
czwartego rzędu określona wzorami
\begin{subequations}
  \label{eq:RK4-klasyczna}
  \begin{align}
    \Phi(x,y;h) &= \frac{1}{6}(k_1+2k_2+2k_3+k_4) \\ 
    k_1 &= f(x,y) \\ 
    k_2 &= f\left( x+\frac{1}{2}h, y+\frac{1}{2}h k_1 \right) \\ 
    k_3 &= f\left( x+\frac{1}{2}h, y+\frac{1}{2}hk_2 \right)  \\ 
    k_4 &= f(x+h,y+hk_3) 
  \end{align}
\end{subequations}


\subsection{Liniowe metody wielokrokowe}
\label{sec:metody-wielokrok}

\subsubsection{Jawne i~niejawne metody wielokrokowe}
\label{sec:metody-wielokrok-rodzaje}

Omawiane wcześniej metody jednokrokowe maja jedna wspólną cechę.  Dla
wyznaczenia kolejnego przybliżenia $y_{i+1}$ używa się jedynie
wartości $x_i, y_i, f_i$ z~ostatniego punktu.  Nie stosuje się
natomiast wartości $x_{i-j}, y_{i-j}, f_{i-j}$.  Podwyższenie rzędu
metody, a~zatem i~szybkości jej zbieżności odbywa się jedynie poprzez
zwiększenie informacji (np. użycie więcej wartości funkcji lub
pochodnych).  Jednocześnie procedura przetworzenia tej informacji dla
otrzymania nowego przybliżenia jest bardzo prosta i~mało kosztowna.
Płynie stąd wniosek, że jeśli koszt policzenia informacji o funkcji
jest mały (np. tanio obliczamy wartość funkcji), to może opłacać się
stosowanie metody jednokrokowej korzystającej w~każdym kroku z~tej
właśnie informacji.  Jeśli natomiast ten koszt jest duży, to
chcielibyśmy możliwie jak najrzadziej obliczać wartości funkcji w
nowych punktach.  Wtedy zastosujemy metodę wielokrokową.

Niech tak jak w~poprzednio przedział $[a,b]$ będzie podzielony na $N$
równych co do długości podprzedziałów punktami $x_i=a+ih$,
$i=0,1,\dots,N$, $h=\frac{b-a}{N}$.  Liniową metoda $k$-krokowa
($k$-stopniowa) (gdzie $k$ jest dana liczba naturalną) konstruuje ciąg
przybliżeń wartości $y(x_i)$ rozwiązania
zagadnienia~\eqref{eq:zag-pocz} spełniający zależności
\begin{equation}
  \label{eq:wielokrokowe}
  \alpha_k y_{i+k} + \dots + \alpha_1 y_{i+1} + \alpha_0 y_i 
  = h( \beta_k f_{i+k} + \dots + \beta_1 f_{i+1} + \beta_0 f_i ),
\end{equation}
gdzie
\begin{align}
  f_j &= f(x_j,y_j) &
  \alpha_k &\neq 0  &
  |\alpha_0|+|\beta_0| &\neq 0
\end{align}
A~zatem korzysta w~każdym kroku z~$k$ starych, poprzednio obliczonych
wartości $f_{i+j}$ dla $j=0,1,\dots,k-1$ oraz jednej nowej wartości
funkcji $f_i$.  Liniowość metody oznacza jej liniową zależność od
wartości funkcji $f$.

Wyróżnia się dwa typy liniowych metod wielokrokowych:
\begin{enumerate}[a)]
\item{Niejawne (zamknięte) : $y_{i+1} = \text{coś} + f_{i+1}$ --- po
    prawej stronie występuje zależność od $y_{i+1}$.}
\item{Jawne (otwarte) : po prawej stronie nigdzie nie pojawia się
    $y_{i+1}$.}
\end{enumerate}
Przykładami liniowych metod wielokrokowych są:\\

\noindent
Jawne: 
\begin{enumerate}
\item{$y_{i+1} = y_i + hf_i$}
\item{$y_{i+1} = y_i + \frac{h}{2} (3f_i - f_{i-1})$}
\item{$y_{i+1} = y_i + \frac{h}{12} (23f_i - 16f_{i-1} + 5f_{i-2} )$}
\item{$y_{i+1} = y_i + \frac{h}{24} (55f_i - 59f_{i-1}) +
    37f_{i-2}-9f_{i-3}$}

\item{$y_{i+1} = y_{i-1} + 2 h f_i$}
\item{$y_{i+1} = y_{i-3} + \frac{4}{3}h (2f_i - f_{i-1} + 2f_{i-2})$}
\end{enumerate}

\medskip

\noindent
Niejawne: 
\begin{enumerate}
\setcounter{enumi}{6}
\item{$y_{i+1} = y_i + hf_{i+1}$}
\item{$y_{i+1} = y_i + \frac{h}{2} (f_{i+1} + f_i)$}
\item{$y_{i+1} = y_i + \frac{h}{12} (5f_{i+1} + 8f_i - f_{i-1} )$}
\item{$y_{i+1} = y_i + \frac{h}{24} (9f_{i+1}+19 f_i) -
    5f_{i-1}+f_{i-2}$}
\item{$y_{i+1} =\frac{1}{8}(9y_i-y_{i-2})+\frac{3}{8}h
    (f_{i+1}+2f_i-f_{i-1})$}
\end{enumerate}

Metody 1--4 są to metody Adamsa--Bashfortha (rzędu~1--4), 7--10
Adamsa--Moultona (rzędu~1--4), 5.~to tzw. schemat punktu pośredniego
(metoda midpoint) o~bardzo dobrych właściwościach, 6.~to wzór Milne'a
albo Nystr\"{o}ma (rzędu~4.), a~11. wzór Hamminga (rzędu~4.).

Pojawia się problem: skąd wziąć startowe wartości $y_i$ potrzebne przy
obliczaniu $f_i$ dla $i=0,1,\dots,k-1$?  (inaczej --- jest to pytanie
o procedurę startową).  Okazuje się, że wystarczy obliczać te $y_i$
dowolną zbieżną metoda jednokrokowa, przyjmujac $y_0 = y_a$.
Najczęściej stosuje się jakiś wariant metody RK.

Wiekszy problem stanowia metody niejawne (zamknięte) - po prawej
stronie występuje przeciez obliczane $y_{i+1}$.  Mają one za to lepsze
własności numeryczne.  Łączy się je z~metodami jawnymi w~jedna metodę
typu predyktor--korektor.



\subsubsection{Wyznaczanie wzorów na metody wielokrokowe}
\label{sec:wyzn-metod-wielokrok}

Wzór różnicowy~\eqref{eq:wielokrokowe} zależy od $2 k + 1$
współczynników (zawsze można unormować współczynniki tak aby
$\alpha_k=1$).  Jeśli współczynniki te określimy tak, by rząd metody
osiągnął zadaną wartość (dla $k$ parzystego maksymalny rząd metody to
$(k+2)$,  a~dla $k$ nieparzystego $(k + 1)$) oraz metoda była zbieżna,
to pozostanie pewna liczba wolnych parametrów które można wykorzystać
do zwiększenia obszaru stabilności metody, zmniejszenia wzpółczynnika
w~oszacowaniu błędu oraz ułatwienia wykonywania obliczeń (zerowe
współczynniki).

Większość najczęsciej stosowanych metod wielokrokowych można
wyprowadzić za pomocą metody Newtona--Cotesa całkowania numerycznego
(interpolacji całki kwadraturami o~równoodległych węzłach).  Całkując
równanie \(y'(x) = f(x,y(x))\) (patrz~\eqref{eq:rown-rozn}) na
przedziale $[x_{i-l}, x_{i+r}]$ dostajemy następujące równanie całkowe
(równoważne~\eqref{eq:rown-rozn})
\begin{equation}
  \label{eq:wypr:calkowe}
  y(x_{i+r}) = y(x_{i-l}) + \int_{x_{i-l}}^{x_{i+r}} f(x, y(x))\,dx  
\end{equation}
Całkowaną niewiadoną funkcję $f(x, y(x))$ (nieznaną ze względu na
nieznane $y(x)$) zastępujemy jej wielomianem interpolacyjnym
Lagrange'a $P_q(x)$ opartym na węzłach $x_j$ dla $j = i-q,\dots,i$
\begin{equation}
  \label{eq:wypr:L_q}
  P_q(x) 
  =  \sum_{j=0}^{q} f(x_{i-j}, y(x_{i-j})) l_j(x)
  %%
  \quad \text{gdzie\ }
  l_j(x) = \prod_{\substack{m=0\\m\neq j}}^{q}
           \frac{x - x_{i-m}}{x_{i-j} - x_{i-m}}.
\end{equation}
Wartości $y(x_{i-j})$ przybliża się przez $f_{i-j}$.
Podstawiając~\eqref{eq:wypr:L_q} do~\eqref{eq:wypr:calkowe} dostajemy
po zamianie zmiennych całkowania
\begin{equation}
  \label{eq:wypr:generic}
  y_{i+r} = y_{i-l} + h \sum_{j=0}^{q} \beta_{qj} f_{i-j},
  %%
  \quad \text{gdzie\ }
  \beta_{qj} = \int_{-l}^{r} \prod_{\substack{m=0\\m\neq j}}^{q} \frac{s + m}{m - j}\,ds.
\end{equation}

\medskip

\noindent
Najczęściej stosowanymi metodami tej klasy są metody typu
\begin{enumerate}[a)]
\item Adamsa--Bashforta: $r = 1$, $l=0$; $(q+1)$-krokowa, jawna (otwarta)
\item Adamsa--Moultona:  $r = 0$, $l=1$; $q$-krokowa, niejawna (zamknięta)
\item Nystr\"{o}ma: $r = 1$, $l=1$; $(q+1)$-krokowa, jawna (otwarta)
\item Milne'a: $r = 0$, $l=2$; $q$-krokowa, niejawna (zamknięta)
\end{enumerate}

\medskip



\subsubsection{Metody typu predyktor--korektor}
\label{sec:predykt-korekt}

Z~każdą $k$-krokową metodą wiąża się dwa wielomiany
\begin{subequations}
  \label{eq:wielokrok:wielom-charakt}
  \begin{align}
    \label{eq:wielokrok:rho}
    \rho(z)   &= \alpha_k z^k+\dots +\alpha_1 z + \alpha_0 \\ 
    \label{eq:wielokrok:sigma}
    \sigma(z) &= \beta_k z^k+\dots +\beta_1 z + \beta_0 
  \end{align}
\end{subequations}
Często daną metodę nazywa się wobec tego metoda $(\rho,\sigma)$.  Aby
dowiedzieć się więcej o~zwiazkach wielomianów $\rho$ i~$\sigma$ z
wlaściwościami metod wielokrokowych radzimy sięgnąć do literatury
dotyczącej metod numerycznych.

Przypomnijmy, że metoda wielokrokowa $(\rho,\sigma)$ jest metoda
otwartą gdy $\beta_k=0$, a~zamknieta jeśli $\beta_k \neq 0$.
Niewatpliwą zaletą metod otwartych jest niewielki koszt wyznaczenia
nowego przybliżenia $y_{i+k}$, równy w~przyblizeniu kosztowi
obliczenia wartości funkcji $f$.  Natomiast w~metodach zamknietych do
kosztu tego musimy doliczyć koszt rozwiązania równania nieliniowego ze
względu na $y_{i+k}$.  Najczęściej stosowana jest metoda
\emph{iteracji prostej} lub \emph{metoda Newtona}.

Na czym polegaja metody \emph{predyktor--korektor}?  Załóżmy, że znamy
$y_j (j=0,1,\dots,i+k-1)$; wtedy kolejne $y_{i+k}$ jest w~metodzie
niejawnej rozwiązaniem równania nieliniowego
\begin{equation}
  \label{eq:PC:metoda-niejawna}
  y = F_i(y)
\end{equation}
gdzie funkcja $F_i$ ma postać
\begin{equation}
  \label{eq:PC:F_i}
  F_i(y) = h\frac{\alpha_k}{\beta_k}f(x_{i+k},y)+c_i
\end{equation}
a~$c_i$ nie zależy od $y$.  Przy $h \to 0$
równanie~\eqref{eq:PC:metoda-niejawna} można rozwiązywać np. metodą
iteracji prostej.  Metoda ta dla danego $y^{(0)}$ konstruuje ciąg $\{
y^{(l)} \}^{\inf}_{l=0}$ zdefiniowany równością
\begin{equation}
  \label{eq:PC:iteracja-prosta}
  y^{(l+1)}=F_i(y^{(l)})
\end{equation}

Na ogół za $y^{(0)}$ przyjmuje się rozwiązanie równania
\begin{equation}
  \alpha_k y^{(0)} + \sum_{j=0}^{k-1}\alpha_j y_{i+j} =
  h\sum_{j=0}^{k-1} \tilde{\beta}_j f(x_{i+j},y_{i+j})
\end{equation}
w~którym $(\rho,\tilde{\sigma})$ jest otwartą metodą $k$-krokową rzedu
$q \le p$.

Najczęściej polecaną metodą predyktor--korektor jest użycie metody
otwartej (jawnej) Adamsa--Bashforta jako \emph{predyktora} czyli
\emph{wzory wstępnego} (do wyznaczenia przybliżenia początkowego)
i~metody zamkniętej (niejwanej) Adamsa--Moultona jako korektora.
Innymi metodą jest zastosowanie metody Milne'a jako predyktora,
a~metody Hamminga jako korektora.  Zazwyczaj wystarczy jeden krok
metody iteracji prostej (jedno zastosowanie wzoru korygującego);
kolejne kroki iteracji prostej nie zmieniają rzędu metody.  Ponadto
często można użyć różnicy między wynikiem wstępnym a~poprawionym oraz
oszacowania błedu metody do poprawienia dokładności.  Do rozwiązania
równania~\eqref{eq:PC:metoda-niejawna} można (czasami trzeba) oprócz
metody \emph{iteracji prostej} zastosować inne, szybciej zbieżne
metody iteracyjne, np. \emph{metodę siecznych} albo \emph{metodę
  Newtona}.

%%
\input{podpis.tex}

\end{document}
