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.

__Function:__gsl_odeiv_control ***gsl_odeiv_control_standard_new***(double*`eps_abs`, double`eps_rel`, double`a_y`, double`a_dydt`)-
The standard control object is a four parameter heuristic based on
absolute and relative errors
`eps_abs`and`eps_rel`, and scaling factors`a_y`and`a_dydt`for the system state @math{y(t)} and derivatives @math{y'(t)} respectively.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.

__Function:__gsl_odeiv_control ***gsl_odeiv_control_y_new***(double*`eps_abs`, double`eps_rel`)-
This function creates a new control object which will keep the local
error on each step within an absolute error of
`eps_abs`and relative error of`eps_rel`with respect to the solution @math{y_i(t)}. This is equivalent to the standard control object with`a_y`=1 and`a_dydt`=0.

__Function:__gsl_odeiv_control ***gsl_odeiv_control_yp_new***(double*`eps_abs`, double`eps_rel`)-
This function creates a new control object which will keep the local
error on each step within an absolute error of
`eps_abs`and relative error of`eps_rel`with respect to the derivatives of the solution @math{y'_i(t)} . This is equivalent to the standard control object with`a_y`=0 and`a_dydt`=1.

__Function:__gsl_odeiv_control ***gsl_odeiv_control_alloc***(const gsl_odeiv_control_type **`T`)-
This function returns a pointer to a newly allocated instance of a
control function of type
`T`. This function is only needed for defining new types of control functions. For most purposes the standard control functions described above should be sufficient.

__Function:__int**gsl_odeiv_control_init***(gsl_odeiv_control **`c`, double`eps_abs`, double`eps_rel`, double`a_y`, double`a_dydt`)-
This function initializes the control function
`c`with the parameters`eps_abs`(absolute error),`eps_rel`(relative error),`a_y`(scaling factor for y) and`a_dydt`(scaling factor for derivatives).

__Function:__void**gsl_odeiv_control_free***(gsl_odeiv_control **`c`)-
This function frees all the memory associated with the control function
`c`.

__Function:__int**gsl_odeiv_control_hadjust***(gsl_odeiv_control **`c`, gsl_odeiv_step *`s`, const double y0[], const double yerr[], const double dydt[], double *`h`)-
This function adjusts the step-size
`h`using the control function`c`, and the current values of`y`,`yerr`and`dydt`. The stepping function`step`is also needed to determine the order of the method. If the error in the y-values`yerr`is found to be too large then the step-size`h`is reduced and the function returns`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.

__Function:__const char ***gsl_odeiv_control_name***(const gsl_odeiv_control **`c`)-
This function returns a pointer to the name of the control function.
For example,
printf("control method is '%s'\n", gsl_odeiv_control_name (c));

would print something like

`control method is 'standard'`

Go to the first, previous, next, last section, table of contents.