Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

Bulirsch-Stoer Method

Midpoint Method
Recall modified Euler h yn1/ 2= yn1 f tn 1, yn 1 2 yn= yn1 hf tn1/ 2 , yn1/ 2 This method is 2nd order consistent Also called the leap-frog formula. Let's modify it a little bit.

Modified Midpoint Method


Take n small steps of size h to cover the interval t0 to t0+H.
y 0= y t 0 First Step: Euler y 1= y t 1 = y 0 h f y 0, t 0 y 2= y t 2 = y 0 2 h f y 1, t 1 Modified Midpoint y 3= y t 3 = y 1 2 h f y 2, t 2 y i 1= y t i 1 = y i1 2 h f y i = 1... n-1 i ,t i 1 y n y n 1 h f y n ,t n ] Combination y t 0 H = [ 2 n+1 function evaluations required

Modified Midpoint Method


Useful because:
It has an error series that consists of only the even powers of h

y t 0 H y t 0 = k i h

2i

Reminiscent of Romberg integration with trapezoidal rule for quadrature Can play the same trick of combining steps with different values of h to get higher order accuracy Bulirsch Stoer method Both based on Richardson's extrapolation idea.

Richardson Extrapolation and Bulirsch-Stoer Method


Take a large step size H Consider the answer as an analytic function f(h) of h=H/n. Fit the function by polynomial or rational function interpolation. Choose a method (e.g., midpoint) such that f(h) is even in h. And finally extrapolate to h=0.

Polynomial Extrapolation
Get two estimates for y(t0+H) using n and 2n steps.
4 y 2n y n y t 0 H = 3

This estimate 4th order accurate, same as 4th order Runge-Kutta Can use exactly the same idea of successive refinement used in Romberg integration to get higher order estimates.

Polynomial Extrapolation
If Yn(k) represents the kth order estimate of y(t0+H), then Y
k 1 j

=Y

k j

Y Y
2

k j

k j 1

nj 1 n jk

This is exactly the same as what we did for Romberg Integration by building the table.

Bulirsch Stoer
A commonly used sequence of ns is: n = {2, 4, 6, 8, 10,... } nj=2j After each nj, extrapolate and obtain error estimate This technique (and extrapolation in general) works best for smooth functions. If not very smooth, use adaptive RK, since it does does a better job of negotiating abruptly changing regions of the domain.

You might also like