FD1D is a MATLAB program using finite difference methods for the dynamics of predator-prey interactions in 1 spatial dimension and time.
The MATLAB code is mostly self explanatory, with the names of variables and parameters corresponding to the symbols used in the finite difference methods described in the paper. Copies of both sets of MATLAB codes can be downloaded from http://www.csit.fsu.edu/~burkardt/m_src/pred_prey_sim/.
The code employs the sparse matrix facilities of MATLAB when solving
the linear systems, which provides advantages in both matrix storage
and computation time. The code is
The linear systems are solved using MATLAB's built in function lu.m. We remark that a pure C or FORTRAN code is likely to be faster than our codes, but with the disadvantage of much greater complexity and length.
The user is prompted for all the necessary parameters, time and space-steps, and initial data. Due to a limitation in MATLAB, vector indices cannot be equal to zero; thus the nodal indices 0,...,J are shifted up one unit to give 1,...,(J+1) so xi=(i-1)*h + a. See Line 28 in fd1d.m and fd2d.m.
Program fd1d.m, is structured as follows:
The initial data functions are entered by the user as a string, which can take several different formats. Functions are evaluated on an element by element basis, where x=(x1,...,xJ+1) is a vector of grid points, and so a "." must precede each arithmetic operation between vectors. The exception to this rule is when applying MATLAB's intrinsic functions where there is no ambiguity. Some arbitrary examples with an acceptable format include the following:
>> Enter initial prey function u0(x) 0.2*exp(-(x-100).^2)
>> Enter initial predator function v0(x) 0.4*x./(1+x)
or,
>> Enter initial prey function u0(x) 0.3+(x-1200).*(x-2800)
>> Enter initial predator function v0(x) 0.4
This last example shows that for a constant solution vector we need
only enter a single number. It is also possible to enter functions
that are piecewise defined by utilizing MATLAB's logical operators
&, ('AND'), |, ('OR'), and ~ (`NOT'), applied to
matrices. For example, on a domain Omega=[0,200], to choose
an initial prey density that is equal to 0.4 for
90<=xi<=110, and equal to 0.1 otherwise, the user inputs:
>> Enter initial prey function u0(x) 0.4*((x>90)&(x<110))+0.1*((x<=90)|(x>=110))
FD1D is also available in a FORTRAN77 version and a FORTRAN90 version.
FD1D_PLOT is a MATLAB program which displays the solution components computed by FD1D.
FD2D is a similar program for the 2D case.
FEM1D, is an executable FORTRAN90 program which applies the finite element method, with piecewise linear basis functions, to a two point boundary value problem;
You can go up one level to the MATLAB source codes.