Before the traps, a one-line memory refresh so the notation below is never used cold:
Recall The symbols used on this page
h = step size · ε = estimated local error =∥y(5)−y(4)∥ · tol = the budget atol+rtol∣yn∣ · p = order of the controlled result (4 for RK45) · ki = slope samples (function evaluations) · S = safety factor · fmin,fmax = clamps on how much h may change.
Every trap below leans on the model ε≈Chp+1. Students treat C as a mystery letter, so let us pin it down first — with a picture.
The figure plots ε against h on log axes. Because ε≈Ch5, taking logs gives a straight line of slope 5; the height of that line (its intercept) islogC. A curvy region simply lifts the whole line up — same slope, larger C — so a smaller h is needed to duck under the tolerance dashed line.
Each item: decide true/false, then give the one-sentence reason. The reason is the answer.
The error estimate ε=y(5)−y(4) costs two extra function evaluations.
False. Both y(4) and y(5) are weighted sums of the same stages ki, so the estimate reuses every expensive f-call and adds only a cheap dot product.
For RK45 the step-update exponent is 1/4 because the accepted result is 4th-order.
False. The local error per step of an order-p method scales like Chp+1=Ch5, so the exponent that inverts it is 1/(p+1)=1/5, not 1/4.
If a step is rejected you should still advance t but with the new smaller h.
False. A rejection means yn+1 is untrustworthy; you must stay at the sametn and recompute the step with the smaller h.
Making the tolerance smaller (stricter) tends to make the chosen steps smaller.
True. Since ε≈Chp+1, forcing Chp+1≤tol with a smaller tol requires a smaller h, so the solver takes more, tinier steps.
The safety factor S exists to make the solver run faster.
False.S≈0.9 aims the predicted error slightly under tol; because ε is itself only an estimate, this makes the retried step likely to pass on the first try — reliability, not raw speed.
Using absolute tolerance alone is always fine.
False. If ∣y∣ grows large, a fixed atol becomes an impossibly strict relative demand; mixing in rtol∣yn∣ lets the budget scale with the solution size.
Growing h by the raw factor (tol/ε)1/5 is always safe.
False. The h5 error model is only trusted locally; a huge jump could land where the model was never valid, so the clamp fmax (≈5) caps the growth.
ε estimates the error of the 5th-order answer that we actually advance with.
False.ε estimates the error of the 4th-order result; using it while advancing with y(5) (local extrapolation) is deliberately conservative — we bound the worse answer.
Two RK methods of different order must share the same number of stages to be an embedded pair.
True. "Embedded" means they share the identical stage vector ki; different weight rows bi,bi∗ act on the same samples, which is exactly what makes the error estimate free.
If ε=tol exactly, the raw update factor equals 1 and h stays the same.
True.(tol/ε)1/5=11/5=1; the safety factor S then nudges it slightly below 1, so h shrinks a hair to stay safe.
The constant C is a fixed number you can look up once for RK45.
False.C contains the solution's own high derivatives at the current point, so it changes every step — large in curvy regions, small in flat ones; that variability is the whole reason for re-estimating error each step.
A negative step size h<0 is always a bug.
False. Integrating backwards in time (from a later t to an earlier one) uses h<0 deliberately; the controller then works on ∣h∣, keeping the magnitude under the clamps while preserving the sign/direction.
Each line contains a flawed statement or reasoning step. Name what is wrong.
"The step passed since ε=2×10−6>tol=1×10−6."
The inequality is backwards: a step is accepted only when ε≤tol. Here ε exceeds tol, so it must be rejected.
"After rejecting, we recompute with hnew=h(ε/tol)1/5."
The ratio is upside-down. It must be (tol/ε)1/5; since ε>tol on a rejection, that gives a factor <1 and correctly shrinksh.
"The order-4 method's local error is ∼Ch4."
Off by one power: the local (per-step) error of an order-p method is ∼Chp+1=Ch5; the hp figure describes the global error accumulated over many steps.
"We can drop the clamp fmin; only fmax matters."
Both clamps matter. fmin prevents h from collapsing too violently after a bad step, avoiding needless stalling on a single hard point.
"Because y(5) is more accurate, ε=y(4)−y(5) measures its error."
The difference measures the 4th-order error, not the 5th's; the sign of the subtraction is irrelevant because we take a norm, but the interpretation (whose error it is) is the trap.
"To halve the error, halve the step size."
Halving h cuts the local error by 25=32, not by 2, because local error ∝h5. Step and error are far from linearly related.
"An embedded pair needs a separate set of f-evaluations for each order."
No — sharing ki across both orders is the entire point; separate evaluations would defeat the "free estimate" advantage.
"When integrating backwards we should flip the accept test to ε≥tol."
Wrong — the accept test always compares magnitudesε≤tol; only h's sign flips for backward integration, not the error logic.
Why compute two solutions per step instead of one very accurate one?
A single number gives no self-knowledge of its own error; the difference of two orders is a cheap, on-the-fly error meter that drives the step control.
Why does the constant C never appear in the final step-update formula?
We write ε≈Chp+1 and tol=Chnewp+1 then divide the two equations, cancelling the unknown C and leaving only the ratio of step sizes.
Why is the local error, not the global error, what the controller regulates?
The controller can only observe one step at a time; it keeps each step's local error under budget, trusting that many controlled local errors keep the global error acceptable.
Why does the exponent depend on p+1 rather than p?
Because the quantity being driven to tol is the leading local error termChp+1; inverting a power p+1 relation requires the root 1/(p+1).
Why must an explicit adaptive method like RK45 still struggle on stiff ODEs?
Stability, not accuracy, forces tiny steps there; the controller keeps shrinking h to stay stable even where the solution is smooth, so adaptivity cannot rescue an unstable explicit scheme. See Stiff ODEs and Stability.
Why is the leading error term proportional to a single power of h at all?
It comes from the first uncancelled term of the Taylor Series Expansion of the true vs numerical step; all lower-order terms are matched by design, leaving one dominant hp+1 term.
Why aim the predicted error below tol rather than exactly at it?
ε is an estimate with its own uncertainty; targeting exactly tol risks the actual error landing above budget, forcing a wasteful re-rejection.
Why does the solver need an explicit abort rule and not just keep shrinking h?
If a genuine singularity or stiffness keeps forcing rejections, h marches toward zero and would underflow to a value where tn+h=tn in floating point — no progress is possible, so the solver must stop and report failure rather than loop forever.
Boundary and degenerate scenarios the topic invites.
ε=0 (the two orders agree to machine precision) — what does the formula do?
The ratio tol/ε→∞, so the raw growth factor blows up; the clamp fmax (≈5) catches it and h grows by at most 5×, keeping the step safe.
∣yn∣→0 near a solution zero-crossing — which tolerance term saves you?
The relative part rtol∣yn∣ collapses toward zero there, so atol provides the floor and the budget never becomes zero (which would demand impossible perfection).
The solution is a straight line (y′′=0, no curvature) — what happens to h?
The higher-order terms vanish, so C≈0 makes ε stay tiny every step, and the controller repeatedly hits the fmax clamp, growing h as fast as it is allowed.
Two rejections in a row at the same tn — is the algorithm broken?
No; each rejection shrinks h further (bounded below by fmin per attempt) until the predicted error finally fits under tol, then the step is accepted and t advances.
h keeps hitting fmin and shrinking toward zero — when must the solver give up?
When h falls below a floor (e.g. ∣h∣≤hmin or tn+h is indistinguishable from tn in floating point), further shrinking cannot make progress, so the solver aborts and reports "step size too small" rather than looping forever.
Integrating backwards from t=10 to t=0 — what changes in the controller?
The sign of h becomes negative to move time leftwards, but the controller regulates ∣h∣: the accept test ε≤tol, the clamps fmin,fmax, and the update factor all act on the magnitude, so the direction is preserved throughout.
A single ultra-sharp spike in an otherwise flat solution — how does adaptivity respond?
The local C jumps at the spike, so it races through the flat region (C small, big steps), then automatically brakes to tiny steps across the spike where C is huge, spending its function evaluations where the curvature actually demands them.
What if S were set to exactly 1?
The controller would aim to hit tol precisely; because ε under-predicts sometimes, more steps would land just over budget and get rejected, wasting work — hence S<1.