unit27.mws

ORDINARY DIFFERENTIAL EQUATIONS POWERTOOL

Unit 27 -- Application: Competition Models

Prof. Douglas B. Meade

Industrial Mathematics Institute

Department of Mathematics

University of South Carolina

Columbia, SC 29208

URL: http://www.math.sc.edu/~meade/

E-mail: meade@math.sc.edu

Copyright © 2001 by Douglas B. Meade

All rights reserved

-------------------------------------------------------------------

>

Outline of Unit 27

>

Initialization

> restart;

> with( DEtools ):

> with( plots ):

> with( linalg ):

> with( student ):

Warning, the name changecoords has been redefined

Warning, the name adjoint has been redefined

Warning, the protected names norm and trace have been redefined and unprotected

>

27.A Competition Model for Exponentially Growing Species

The classical competition model describes an ecosystem with two species that would grow exponentially in isolation from the other species. But, when the two species interact, both populations suffer. If X(t) and Y(t) denote the size of the two species at time t , then the model takes the form

> U := [ X(t), Y(t) ]:

> f := (X,Y) -> alpha * X - beta * X*Y:

> g := (X,Y) -> delta * Y - epsilon * X*Y:

> sys1 := op(equate( diff( U, t ), [ f( op(U) ), g( op(U) ) ] ));

sys1 := diff(X(t),t) = alpha*X(t)-beta*X(t)*Y(t), d...

> ic1 := X(0) = X[0], Y(0) = Y[0];

ic1 := X(0) = X[0], Y(0) = Y[0]

>

Note that except for a change of sign in both terms on the right-hand side of the second ODE, this model has the same form as the Lotka-Volterra model discussed in Unit 26.

The equilibrium solutions to this model are

> equil := solve( {f(x0,y0)=0,g(x0,y0)=0}, {x0,y0} );

equil := {x0 = 0, y0 = 0}, {x0 = delta/epsilon, y0 ...

>

Linearization about each equilibrium solution proceeds as usual:

> for X0 in [equil] do

> b := eval( [ f(x0,y0), g(x0,y0) ], X0 );

> A := eval( evalm(jacobian( [f(x0,y0),g(x0,y0)], [x0,y0] )), X0 );

> linsys1 := equate( diff( U, t ), evalm( A &* U + b ) );

> print( `-------------------------------------------------------------` );

> print( `Linearization at [x0,y0]`=eval([x0,y0],X0) );

> print( A = evalm( A ) );

> print( lambda = [evalf(eigenvals( A ))] );

> print( `-------------------------------------------------------------` );

> end do:

`--------------------------------------------------...

`Linearization at [x0,y0]` = [0, 0]

A = matrix([[alpha, 0], [0, delta]])

lambda = [alpha, delta]

`--------------------------------------------------...

`--------------------------------------------------...

`Linearization at [x0,y0]` = [delta/epsilon, alpha/...

A = matrix([[0, -delta*beta/epsilon], [-alpha*epsil...

lambda = [sqrt(delta*alpha), -1.*sqrt(delta*alpha)]...

`--------------------------------------------------...

>

Thus, while the equilibrium in the first quadrant has the same classification as for the Lotka-Volterra model, the trivial equilibrium at the origin is an unstable node (source).

To perform a graphical investigation of the competition model, select numerical values for the parameters

> param1 := { alpha=0.45, beta=0.09, delta=.16, epsilon=0.008, X[0]=4, Y[0]=3 };

param1 := {alpha = .45, beta = .9e-1, delta = .16, ...

>

and obtain a numerical solution to the IVP

> sol1 := dsolve( eval( { sys1, ic1 }, param1 ), U, type=numeric ):

>

A plot of the two components of this system is

> odeplot( sol1, [ [t,X(t)], [t,Y(t)] ], 0..20,

> legend=["Species X", "Species Y"] );

[Maple Plot]

>

These solutions are, without a doubt, not periodic. The corresponding plot in the phase plane is

> odeplot( sol1, [ X(t), Y(t) ], 0..20, labels=[X,Y] );

[Maple Plot]

>

This one example is insufficient to make any general conclusions. The direction field shows that solutions generally tend to states with X = 0 and Y increasing without bound.

> DEplot( {eval( sys1, param1 )}, U, t=0..20,

> [ [eval(ic1, param1 )] ], stepsize=0.2 );

[Maple Plot]

>

For a second example, consider the model in which the parameter delta is reduced by a factor of 2:

> param2 := { alpha=0.45, beta=0.09, delta=.08,

> epsilon=0.008, X[0]=4, Y[0]=3 };

param2 := {alpha = .45, beta = .9e-1, epsilon = .8e...

> sol2 := dsolve( eval( { sys1, ic1 }, param2 ), U, type=numeric ):

> odeplot( sol2, [ [t,X(t)], [t,Y(t)] ], 0..20,

> legend=["Species X", "Species Y"] );

[Maple Plot]

> odeplot( sol2, [ X(t), Y(t) ], 0..20, labels=[X,Y] );

[Maple Plot]

> DEplot( {eval( sys1, param2 )}, U, t=0..20,

> [ [eval(ic1, param2 )] ], stepsize=0.2 );

[Maple Plot]

>

In this example species Y dies out and X increases without bound as t increases.

Competitive exclusion is the special term used to describe the general property that all but one species in a competition model (with exponential growth) tend to zero and the remaining species grows without bound.

>

27.B Competition Model for Logistically Growing Species

The unbounded growth of the surviving species in the competition model with exponential growth raises the same concerns as the Malthusian model for a single population. One way to attempt to address this issue is to use logistic models for the competition-free growth terms.

> f := (X,Y) -> alpha * ( 1 - X / M ) * X - beta * X*Y:

> g := (X,Y) -> delta * ( 1 - Y / N ) * Y - epsilon * X*Y:

> sys2 := op(equate( diff( U, t ), [ f( op(U) ), g( op(U) ) ] ));

sys2 := diff(X(t),t) = alpha*(1-X(t)/M)*X(t)-beta*X...

> ic2 := X(0) = X[0], Y(0) = Y[0];

ic2 := X(0) = X[0], Y(0) = Y[0]

>

The equilibrium solutions to this model are

> equil := solve( {f(x0,y0)=0,g(x0,y0)=0}, {x0,y0} );

equil := {x0 = 0, y0 = 0}, {x0 = 0, y0 = N}, {y0 = ...

>

There are now four equilibria to consider. Linearization about each equilibrium solution proceeds as usual:

> for X0 in [equil] do

> b := eval( [ f(x0,y0), g(x0,y0) ], X0 );

> A := simplify( eval( evalm(jacobian( [f(x0,y0),g(x0,y0)], [x0,y0] )), X0 ) );

> linsys1 := equate( diff( U, t ), evalm( A &* U + b ) );

> print( `-------------------------------------------------------------` );

> print( `Linearization at [x0,y0]`=eval([x0,y0],X0) );

> print( A = evalm( A ) );

> print( lambda = [eval(eigenvals( A ))] );

> print( `-------------------------------------------------------------` );

> end do:

`--------------------------------------------------...

`Linearization at [x0,y0]` = [0, 0]

A = matrix([[alpha, 0], [0, delta]])

lambda = [alpha, delta]

`--------------------------------------------------...

`--------------------------------------------------...

`Linearization at [x0,y0]` = [0, N]

A = matrix([[alpha-beta*N, 0], [-epsilon*N, -delta]...

lambda = [alpha-beta*N, -delta]

`--------------------------------------------------...

`--------------------------------------------------...

`Linearization at [x0,y0]` = [M, 0]

A = matrix([[-alpha, -beta*M], [0, delta-epsilon*M]...

lambda = [-alpha, delta-epsilon*M]

`--------------------------------------------------...

`--------------------------------------------------...

`Linearization at [x0,y0]` = [M*delta*(-alpha+beta*...

A = matrix([[-alpha*delta*(-alpha+beta*N)/(-delta*a...

lambda = [1/2*(-delta*alpha*beta*N-delta*alpha*epsi...
lambda = [1/2*(-delta*alpha*beta*N-delta*alpha*epsi...
lambda = [1/2*(-delta*alpha*beta*N-delta*alpha*epsi...
lambda = [1/2*(-delta*alpha*beta*N-delta*alpha*epsi...

`--------------------------------------------------...

>

The equilibrium at the origin is still an unstable node (source). The two new equilibria consist of a finite population of only one species. The additional assumption N < alpha/beta ensures that the equilibrium ( 0, N ) is a stable node (sink); likewise, ( M , 0 ) is a stable node (sink) when M < delta/epsilon . These two assumptions ensure that alpha*delta-beta*epsilon*M*N < 0 and hence that the fourth equilibrium point is physically possibly ( i.e. , in the first quadrant). The eigenvalues for this case are rather complicated. Determination of the sign of the eigenvalues is more easily accomplished by looking at the trace and determinant of the coefficient matrix for the linearization about this point:

> A = evalm( A );

A = matrix([[-alpha*delta*(-alpha+beta*N)/(-delta*a...

> trA := simplify( trace( A ) );

trA := -delta*alpha*(-alpha+beta*N-delta+epsilon*M)...

> detA := det( A );

detA := -alpha*delta*(-alpha+beta*N)*(-delta+epsilo...

> assume(alpha-beta*N<0, delta-epsilon*M<0, alpha>0, delta>0 );

> is( trA < 0 );

true

> is( detA < 0 );

true

> unassign( 'alpha', 'beta', 'M', 'delta', 'epsilon', 'N' ):

>

Because the determinant is negative, the eigenvalues must have different signs and the "coexistence" equilibrium is a saddle point for the linear, and nonlinear, systems.

To perform a graphical investigation of the competition model with logistic growth, select numerical values for the parameters

> param2 := { alpha=2, beta=0.5, M=5,

> delta=1, epsilon=0.5,

> N=10, X[0]=5, Y[0]=6 };

param2 := {delta = 1, alpha = 2, beta = .5, M = 5, ...

>

and obtain a numerical solution to the IVP

> sol2 := dsolve( eval( { sys2, ic2 }, param2 ), U, type=numeric ):

>

A plot of the two components of this system is

> odeplot( sol2, [ [t,X(t)], [t,Y(t)] ], 0..20,

> legend=["Species X", "Species Y"] );

[Maple Plot]

>

This solution exhibits competitive exclusion with the additional property that the surviving species remains bounded.

The direction field shows the general behavior of solutions. The specific initial conditions have been chosen to illustrate how minor changes in the initial conditions can lead to significant differences in the qualitative behavior of solutions.

> ic3 := [ [ X(0)=0.1, Y(0)=0.7 ], [ X(0)=0.1, Y(0)=0.4 ],

> [ X(0)=5, Y(0)=6.3 ], [ X(0)=5, Y(0)=6.6 ] ]:

> DEplot( {eval( sys2, param2 )}, U, t=0..20, X=0..6, Y=0..12,

> ic3, stepsize=0.1 );

[Maple Plot]

>

Note that there is a curve along which the solution approaches the coexistence equilibrium. In practice, however, it is not possible to locate a point on this curve or to expect a numerical solver to be able to track these solutions.

>

[Back to ODE Powertool Table of Contents]

>