set options for ode solvers
odeoptions()
This function interactively displays a command which should be executed to set various options of ode solvers. The context variable %ODEOPTIONS sets the options.
The ode function checks if this variable exists and in this case it uses it. For using default values you should clear this variable. To create it you must execute the instruction %ODEOPTIONS=odeoptions().
The variable %ODEOPTIONS is a vector with the following elements:
[itask, tcrit, h0, hmax, hmin, jactyp, mxstep, maxordn, maxords, ixpr, ml, mu].
The default value is: [1,0,0,%inf,0,2,500,12,5,0,-1,-1].
The meaning of the elements is described below.
itask sets the integration mode:
- 1: normal computation at specified times
- 2 : computation at mesh points (given in first row of output of ode)
- 3 : one step at one internal mesh point and return
- 4 : normal computation without overshooting tcrit
- 5 : one step, without passing tcrit, and return
tcrit critical time used only if itask equals 4 or 5 as described above
h0 first step tried
hmax max step size
hmin min step size
jactype set jacobian properties:
- 0: functional iterations, no jacobian used ( “adams” or “stiff” only)
- 1 : user-supplied full jacobian
- 2 : internally generated full jacobian
- 3: internally generated diagonal jacobian ( “adams” or “stiff” only)
- 4 : user-supplied banded jacobian (see ml and mu below)
- 5 : internally generated banded jacobian (see ml and mu below)
maxordn maximum non-stiff order allowed, at most 12
maxords maximum stiff order allowed, at most 5
ixpr print level, 0 or 1
ml, mu`If `jactype equals 4 or 5, ml and mu are the lower and upper half-bandwidths of the banded jacobian: the band is the i,j‘s with i-ml <= j <= ny-1. If jactype equals 4 the jacobian function must return a matrix J which is ml+mu+1 x ny (where ny=dim of y in ydot=f(t,y)) such that column 1 of J is made of mu zeros followed by df1/dy1, df2/dy1, df3/dy1, ... ( 1+ml possibly non-zero entries), column 2 is made of mu-1 zeros followed by df1/dx2, df2/dx2, etc.
In the following example, we solve the Ordinary Differential Equation dy/dt=y^2-y sin(t)+cos(t) with the initial condition y(0)=0 claiming the solution be stored at each mesh value.
function ydot=f(t, y)
ydot=y^2-y*`sin`_(t)+`cos`_(t)
endfunction
%ODEOPTIONS=[2,0,0,%inf,0,2,500,12,5,0,-1,-1];
y=`ode`_(0,0,%pi,f);
`plot`_(y(1,:),y(2,:))
clear %ODEOPTIONS