All ODE files are just text files which consist of a series of definitions and directives to the XPP parser. The order in which the definitions are given is usually unimportant with one major exception. So-called fixed or temporary variables are evaluated in the order in which they are defined. Thus, you should never use a named fix variable before it is defined as this will lead to some rather bizarre results when you attempt to solve an ODE. ODE files are all line oriented with a limit of 1024 characters per line. You can use the standard line continuation symbol \ . Here are all the possible ODE file directives:
x'=-x+sin(t) z(t+1)=z*(4-z) dw/dt=1-cos(w)+(1+cos(w))*a
y(t)=int{exp(-t)#x}
y'=-y + a int{exp(-(t-t'))*max(y-1/(1+(t-t')^2),0)}
y(t)=int[.5]{1#y}
The # symbol means a convolution and [a] multiplies the integrand by
| {0} | {P0,1} | ... | {P0,N-1} |
| {P1,0} | {0} | ... | {P1,N-1} |
| ... | ... | ... | ... |
| {PN-1,0} | {PN-1,1} | ... | {PN-1,N-1} |
markov z 2
{0} {alpha(v)}
{beta(v)} {0}
defines a two-state Markov process with transition from state 0 to 1 determined by the rate alpha(v) and the transition from 1 to 0 determoined by beta(v)
./usr/share/doc/xppaut/html/xppodes.html
This brings up a series of items that allow you to compute many trajectories and find their mean and variance. It is most useful when used with systems that are either Markovian or have noise added to the right-hand sides. The items are:
Use this to reseed the random number generator. If you use the same seed then the results will not change from run to run.
This will put up the same dialog box as the ``Integrate'' ``Range'' choice. Two new data sets will be created that will compute the mean and the variance of the point by point values of the trajectories over the number of trial runs you choose. If the system is completely deterministic and the parameters and initial conditions are identical for each run, then this is superfluous. Otherwise, the mean and variance are computed. You can then access these new arrays as described below. If you fire up the sample Markov problem, choose the ``Compute'' option, and set keep the initial data constant over say 20 runs, then you can look at the mean trajectory and its variance for each of your variables.
This puts the results of the most recent run into the data browser and enables plotting of them.
This puts the results of the mean value of the most recently computed set of trials.
This does the same for the variance.
This computes a histogram for a chosen variable and additional conditions and replaces the ``t'' column and
the first variable column with the bin values and the number per bin respectively. You will be prompted for the number of bins, a maximum and minimum value and the variable on which to perform the histogram. Finally, you will be asked for additional conditions that involve the other stored variables (not the fixed ones though.) For example, suppose you have run an ODE/Markov system and you want the distribution of a continuous variable when the Markov variable is in state 1. Then the additional condition would be z==1 where z is the Markov variable. Multiple conditions are made by using the & and | expressions. Note that == is the logical equal and is not the same as the algebraic one.
brings back the most recently computed histogram.
This prompts you for
a data column and the number of modes you want. It then
computes a Fourier transform (not an FFT, since I don't want
to worry about zero padding and other matters) for the number
of modes you have chosen. The results are in the Browser.
The first column (labeled ``T'') is the mode. The second, the
cosine component and the third, the sine component.
This is just like Fourier
except the magnitude and phase of the FFT are kept.
This is a routine based on
Marquardt-Levenberg algorithm for nonlinear least squares fitting. A description of the method can be found in Numerical Recipes in C. In this implementation, one can choose parameters and initial data to vary in an attempt to minimize the least-squares difference between solutions to a dynamical system and data. The data must be in a file in which the first column contains the independent values in increasing order. The remaining columns contain data which are to be fitted to solutions to a DE. Not all the columns need be used. When you choose this option, a window pops up with 10 entries describing the fit parameters. The items are:
On return, the program will put the best set of parameters that it has
found. It currently is quite verbose and prints a lot of stuff to the
console. This is mainly info about the current values of the
parameters and the least square.
This allows you to retard any of the axes by an integral number of steps. This is useful for chaotic orbits and delayed systems. Choosing a number for any of the axes will result in the variable associated with that axis being delayed by the number of steps inputted. Thus if you plot X vs X then of course you will get a diagonal line, but if you make the Y-axis delayed by say 50 and the output is every .1 timesteps, then the plot will be X(t-5) vs X(t). This does not appear during integration of the equations and is available only after a computation. You set it up and then click Restore from the main menu.
This allows you to change the definitions of tabulated functions by reading in a different file. Thus, if you have many experimental sets of data, you can read them in one by one and integrate the equations. You are prompted for the name of a tabulated function. Then you give the filename to read in. You will continue to be prompted and can type a few carriage returns to get out. If the table was defined as a function instead of a file, then you will be prompted for the number of points, the limits of the range (Xhi,Xlo) ad finally, the formula of for the function defining the table. Note that it must be a function of t. Note that if the
function contains parameters and these are changed, it will be automatically recomputed.
prompts you for the maximum iterates, the error tolerance, and the deviation for the numerical Jacobian for the shooting method for solving BVPs.
This allows you to compute
the adjoint and do averaging for weakly coupled oscillators. To use
this option, you must successfully compute a periodic orbit and set
the total integration time to one full orbit. If you are only
interested in the adjoint of a single component of an oscillation, the
algorithm works best if you start at a maximum of that component.
The menu that pops up is:
Anytime you integrate, etc, the data will be placed back into the storage area.