Time for action - using lsode for numerical integration
1. Since we have an autonomous system, we can simply use the function given in Code Listing 5.5 as input to
lsode
. First,we specify the time vector array to contain 200 elements equally spaced from 0 to 50 as well as the initial condition:
octave:26>global_b = 1; t = linespace(0,50,200); init = [0.4 0.2];
2. Next we call
lsode
to obtain a numerical solution to the Sel'kov model:
octave:27> x = lsode("selkov", init, t);
3. Now, the output variable
x
contains the solutions to x1 and x2 in a column-wise manner, meaning column one is the solution for x1 and column two for x2. We can then plot the columns versus the time vector array, for example:
2See http://www.netlib.org/alliant/ode/prog/lsode.f
octave:28> plot(t, x(:,1), "-r", "linewidth", 5, t, x(:,2), "-b", "linewidth", 5);
4. The result (or something close to it, depending on your plotting program) is shown in the left-hand side window in the figure below.
If we repeat Commands...