Next: From Taylor's theorem to Up: A variable step predictor Previous: A variable step predictor

What is and Why use a Predictor Corrector method?

One of reasons why numerical differential equation solvers go unstable, is that they attempt to solve the system on the basis of what the system has done up to the present step. However, while extrapolating to the next step, the system has changed in that time step, but the equation solvers information hasn't.

Predictor-Corrector methods counter this problem by using the information gained from the previous n steps, to predict what the state of the system will be at the end of the next step. They can then use this predicted value to evaluate the derivative at the end of the step. They can use this derivative to correct the predicted value, thus taking into account the changes in the system.

A final evaluation of the derivative is then made using the final state values. This is done to further ensure stability of ensuing predictions. (These methods are thus sometimes called PECE methods, (Predict, Evaluate, Correct, Evaluate)

We need some criterion for choosing the step size suited to two conflicting criteria. We need to make it large as possible so as to speed up the simulation. We also need it small so as not to explode the lake.

Fortunately Predictor-Corrector methods come along with an obvious clue as to how unstable things are. All we need to do is compare the predicted state of the system with the corrected state. If the predictor is doing lousily and needs a lot of help from the corrector, then we are in an unstable region and should be taking smaller steps. If the predictor hardly needs the corrector in estimating the state of the system, then we can increase the step size.

The model attempts to adjust the step size so that abs((corrected-predicted)/corrected) = epsilon. Where epsilon is a user setable parameter.

So this has shifted the agonizing choice of step-size to the agonizing choice of epsilon :-]. The advantage is that one choice of epsilon will do for all conditions of inflow.

Advice... Try things using the default value, if your model is unstable set epsilon much lower.

Slowly increase epsilon, while watching the lake level. Keep increasing until you start to see the odd random blip and fluctuation in the level that cannot be explained by the input data.

Decrease epsilon to a point where the blips and fluctuations go away.


Next: From Taylor's theorem to Up: A variable step predictor Previous: A variable step predictor

John Carter
Tue Jun 17 09:50:07 SAT 1997