Predictor–corrector method: Difference between revisions

Content deleted Content added
m Euler trapezoidal example: minor equation fix
Adding short description: "Algorithms in numerical analysis"
 
(38 intermediate revisions by 26 users not shown)
Line 1:
{{Short description|Algorithms in numerical analysis}}
== Euler trapezoidal example ==
In [[numerical analysis]], '''predictor–corrector methods''' belong to a class of [[algorithm]]s designed to integrate ordinary differential equations{{snd}}to find an unknown function that satisfies a given differential equation. All such algorithms proceed in two steps:
 
# The initial, "prediction" step, starts from a function fitted to the function-values and derivative-values at a preceding set of points to extrapolate ("anticipate") this function's value at a subsequent, new point.
Example of an Euler - trapezoidal predictor-corrector method.
# The next, "corrector" step refines the initial approximation by using the ''predicted'' value of the function and ''another method'' to interpolate that unknown function's value at the '''same''' subsequent point.
 
== Predictor–corrector methods for solving ODEs ==
In this example <math>h</math> = <math>\Delta{t} </math>, <math> t_{i+1} = t_i + \Delta{t} = t_i + h </math>
 
When considering the [[numerical methods for ordinary differential equations|numerical solution of ordinary differential equations (ODEs)]], a predictor–corrector method typically uses an [[explicit and implicit methods|explicit method]] for the predictor step and an implicit method for the corrector step.
: <math> y' = f(t,y), \quad y(t_0) = y_0. </math>
 
=== Example: Euler method with the trapezoidal examplerule ===
First calculate an initial guess value <math>\tilde{y}_g</math> via Euler:
 
A simple predictor–corrector method (known as [[Heun's method]]) can be constructed from the [[Euler method]] (an explicit method) and the [[trapezoidal rule (differential equations)|trapezoidal rule]] (an implicit method).
: <math>\tilde{y}_{g} = y_i + h f(t_i,y_i)</math>
 
Consider the differential equation
Next, improve the initial guess through iteration of the trapezoidal rule. This iteration process normally converges quickly.
 
: <math>\tilde{ y}_{g+1}' = y_i + \frac{h}{2}(f(t_it,y), y_i\quad y(t_0) += f(t_{i+1}y_0,\tilde{y}_{g})). </math>
 
and denote the step size by <math>h</math>.
: <math>\tilde{y}_{g+2} = y_i + \frac{h}{2}(f(t_i, y_i) + f(t_{i+1},\tilde{y}_{g+1})).</math>
...
: <math>\tilde{y}_{g+n} = y_i + \frac{h}{2}(f(t_i, y_i) + f(t_{i+1},\tilde{y}_{g+n-1})).</math>
 
First, the predictor step: starting from the current value <math>y_i</math>, calculate an initial guess value <math>\tilde{y}_g_{i+1}</math> via the Euler: method,
This iteration process is repeated until some fixed value ''n'' or until the guesses converge to within some error tolerance ''e'' :
 
: <math> | \tilde{y}_{gi+n1} -= y_i \tilde{y}_{g+n-1} | \leh ef(t_i,y_i). </math>
 
Next, the corrector step: improve the initial guess using trapezoidal rule,
then use the final guess as the next step:
 
: <math> y_{i+1} = y_i + \tfrac12 h \bigl( f(t_i, y_i) + f(t_{i+1},\tilde{y}_{gi+n1}) \bigr). </math>
 
thenThat usevalue the finalis guessused as the next step:.
Note that the overall error is unrelated to convergence in the algorithm but instead to the step size and the core method, which in this example is a trapezoidal, (linear) approximation of the actual function. The step size ''h'' ( <math>\Delta{t} </math> ) needs to be relatively small in order to get a good approximation. See also [[stiff equation]].
 
=== PEC mode and PECE mode ===
 
There are different variants of a predictor–corrector method, depending on how often the corrector method is applied. The Predict–Evaluate–Correct–Evaluate (PECE) mode refers to the variant in the above example:
 
: <math> \begin{align}
: <math>\tilde{y}_{gi+1} &= y_i + h f(t_i,y_i)</math>, \\
: <math>\tildey_{y}_{gi+n1} &= y_i + \frac{tfrac12 h}{2} \bigl( f(t_i, y_i) + f(t_{i+1},\tilde{y}_{gi+n-1}) \bigr).</math>
\end{align} </math>
 
It is also possible to evaluate the function ''f'' only once per step by using the method in Predict–Evaluate–Correct (PEC) mode:
 
: <math> \begin{align}
\tilde{y}_{i+1} &= y_i + h f(t_i,\tilde{y}_i), \\
y_{i+1} &= y_i + \tfrac12 h \bigl( f(t_i, \tilde{y}_i) + f(t_{i+1},\tilde{y}_{i+1}) \bigr).
\end{align} </math>
 
Additionally, the corrector step can be repeated in the hope that this achieves an even better approximation to the true solution. If the corrector method is run twice, this yields the PECECE mode:
 
: <math> \begin{align}
\tilde{y}_{i+1} &= y_i + h f(t_i,y_i), \\
: <math>\tildehat{y}_{gi+21} &= y_i + \frac{tfrac12 h}{2} \bigl( f(t_i, y_i) + f(t_{i+1},\tilde{y}_{gi+1}) \bigr).</math>, \\
y_{i+1} &= y_i + \tfrac12 h \bigl( f(t_i, y_i) + f(t_{i+1},\hat{y}_{i+1}) \bigr).
\end{align} </math>
 
The PECEC mode has one fewer function evaluation than PECECE mode.
 
More generally, if the corrector is run ''k'' times, the method is in P(EC)<sup>''k''</sup>
or P(EC)<sup>''k''</sup>E mode. If the corrector method is iterated until it converges, this could be called PE(CE)<sup>∞</sup>.<ref>{{harvnb|Butcher|2003|p=104}}</ref>
 
== See also ==
 
* [[Backward differentiation formula]]
* [[Beeman's algorithm]]
* [[Heun's method]]
* [[Mehrotra predictor–corrector method]]
* [[Numerical continuation]]
 
==Notes==
{{reflist}}
 
==References==
* {{Citation | last1=Butcher | first1=John C. | author1-link=John C. Butcher | title=Numerical Methods for Ordinary Differential Equations | publisher=[[John Wiley & Sons]] | ___location=New York | isbn=978-0-471-96758-3 | year=2003}}.
*{{Cite book | last1=Press | first1=WH | last2=Teukolsky | first2=SA | last3=Vetterling | first3=WT | last4=Flannery | first4=BP | year=2007 | title=Numerical Recipes: The Art of Scientific Computing | edition=3rd | publisher=Cambridge University Press | publication-place=New York | isbn=978-0-521-88068-8 | chapter=Section 17.6. Multistep, Multivalue, and Predictor-Corrector Methods | chapter-url=http://apps.nrbook.com/empanel/index.html#pg=942}}
 
== External links ==
 
* {{MathWorld |title=Predictor-Corrector Methods |urlname=Predictor-CorrectorMethods}}
* [https://web.archive.org/web/20080617035745/http://www.fisica.uniud.it/~ercolessi/md/md/node22.html Predictor–corrector methods] for differential equations
 
{{Numerical integrators}}
 
{{DEFAULTSORT:Predictor-corrector method}}
[[Category:Algorithms]]
[[Category:Numerical analysis]]