Chap. 21: Adaptive Methods and Stiff Systemsjuiching/NMChap21.pdf · 2014. 6. 3. · x L m k v m c...
Transcript of Chap. 21: Adaptive Methods and Stiff Systemsjuiching/NMChap21.pdf · 2014. 6. 3. · x L m k v m c...
Chap. 21: Adaptive Methods and
Stiff Systems
2
Adaptive Runge-Kutta Methods
• The solutions to some ODE problems exhibit multiple time scales - for some parts of the solution the variable changes slowly, while for others there are abrupt changes.
• Constant step-size algorithms would have to apply a small step-size to the entire computation, wasting many more calculations on regions of gradual change.
• Adaptive algorithms, on the other hand, can change step-size depending on the region.
3
Approaches to Adaptive Methods
• There are two primary approaches to incorporate adaptive step-size control:– Step halving - perform the one-step algorithm
two different ways, once with a full step and once with two half-steps, and compare the results.
– Embedded RK methods - perform two RK iterations of different orders and compare the results to determine the step size. This is the preferred method.
4
MATLAB Functions
• Ode23: adaptive 2nd- and 3rd-order RK functions.
• Ode45: adaptive 4-th- and 5-th-order RK functions.
• Ode113: adaptive variable order RK functions.
5
Using ode Functions
[t, y] = ode45(odefun, tspan, y0)– y: solution array, where each column represents one of
the variables and each row corresponds to a time in the t vector
– odefun: function returning a column vector of the right-hand-sides of the ODEs
– tspan: time over which to solve the system• If tspan has two entries, the results are reported for those
times as well as several intermediate times based on the steps taken by the algorithm
• If tspan has more than two entries, the results are reported only for those specific times
– y0: vector of initial values
6
Example 21.1
• Solve:
with y1(0)=2 and y2(0)=1 for 20 seconds• predprey.m M-file:
function yp = predprey(t, y)yp = [1.2*y(1)-0.6*y(1)*y(2);
-0.8*y(2)+0.3*y(1)*y(2)];• tspan = [0 20];y0 = [2, 1];[t, y] = ode45(@predprey, tspan, y0);figure(1); plot(t,y); figure(2); plot(y(:,1),y(:,2));
dy1
dt1.2y1 0.6y1y2
dy2
dt 0.8y2 0.3y1y2
7
Example 21.1 (cont.)
8
ODE Solver Options
• Options to ODE solvers may be passed as an optional fourth argument, and are generally created using the odeset function:options=odeset(‘par1’, ‘val1’, ‘par2’, ‘val2’,…)
• Commonly used parameters are:– ‘RelTol’: adjusts relative tolerance– ‘AbsTol’: adjusts absolute tolerance– ‘InitialStep’: sets initial step size– ‘MaxStep’: sets maximum step size (default: one
tenth of tspan interval)
9
Example 21.2
• Use ode23 to solve the following equation from t=0 to 4
dydt'10e &(t&2)2/[2(0.075)2]&0.6ydy
dt'10e &(t&2)2/[2(0.075)2]&0.6y
10
Multistep Methods
• Multistep methods are based on the insight that, once the computation has begun, valuable information from the previous points exists.
11
Multistep Methods (cont.)• One example is the non-self-
starting Heun’s Method, which has the following predictor and corrector equations:
(a) Predictor yi10 yi1
m f ti , yim 2h
(b) Corrector yi1j yi
m f ti , yi
m f ti1, yi1j1
2h
• The error of the predictor is O(h3) instead of O(h2) of the original Heun’s Method.
12
Stiffness
• A stiff system is one involving rapidly changing components together with slowly changing ones.
• An example of a single stiff ODE is:
whose solution if y(0)=0 is:
teydtdy 200030001000
y 3 0.998e1000 t 2.002et
13
MATLAB Functions for Stiff Systems
• MATLAB has a number of built-in functions for solving stuff systems of ODEs, including ode15s, ode23s, ode23t, and ode23tb.
• The arguments for the stiff solvers are the same as those for previous solvers.
14
Example 21.6
The van der Pol equation. Use ode45 for =1.Use ode23s for =1000.
01 112
121
2
ydtdyy
dtyd
15
Examlpe 21.7
Bungee Jumper with Cord
Lxvm
Lxmkv
mcvg
dtdv
Lxvmcvg
dtdv
vdtdx
d
d
for ,)sign(
for ,)sign(
2
2
16
Case Study: Intermittent Fountain
• siphon = 1 when ylow<y<yhign , otherwise siphon = 0
dydt'
Qin&siphon×C 2gyπr 2
πR 2t
dydt'
Qin&siphon×C 2gyπr 2
πR 2t
17
Case Study: Intermittent Fountain (cont.)