The control function examines the proposed change to the solution and its error estimate produced by a stepping function and attempts to determine the optimal step-size for a user-specified level of error.
The step-size adjustment procedure for this method begins by computing the desired error level @math{D_i} for each component,
and comparing it with the observed error @math{E_i = |yerr_i|}. If the observed error E exceeds the desired error level D by more than 10% for any component then the method reduces the step-size by an appropriate factor,
where @math{q} is the consistency order of method (e.g. @math{q=4} for 4(5) embedded RK), and @math{S} is a safety factor of 0.9. The ratio @math{D/E} is taken to be the maximum of the ratios @math{D_i/E_i}.
If the observed error @math{E} is less than 50% of the desired error level D for the maximum ratio @math{D_i/E_i} then the algorithm takes the opportunity to increase the step-size to bring the error in line with the desired level,
This encompasses all the standard error scaling methods.
GSL_ODEIV_HADJ_DEC
. If the error is sufficiently small then
h may be increased and GSL_ODEIV_HADJ_INC
is returned. The
function returns GSL_ODEIV_HADJ_NIL
if the step-size is
unchanged. The goal of the function is to estimate the largest
step-size which satisfies the user-specified accuracy requirements for
the current point.
printf("control method is '%s'\n", gsl_odeiv_control_name (c));
would print something like control method is 'standard'