Often it is not possible or desirable to solve a differential equation,
For example, suppose you want to solve the exponential growth equation for
aphids, but include a constant `harvesting' rate due to predation by
ladybird beetles, as in
% variables for the discretization:
tmax=10; % set the time to finish solving
N=100; % set number of time intervals
dt=tmax/N; % determine delta t
t=linspace(0,tmax,N+1); % not required for the DE, but useful for
% plotting
% set parameters for the ODE:
h=.2; % harvesting rate
r=.1; % growth rate
p(1)=3; % set the initial population
p=zeros(1,N+1); % define an array to hold the solution
for n=1:N % begin loop for Euler solution
p(n+1)=(1+r*dt)*p(n)-h*dt;
end % end loop for Euler solution
plot(t,p) % plot the solution
Save this script in an m-file and run it to see how solutions look.
The differential equation has a steady state at
; can you
confirm this numerically? Is the steady state stable or unstable? In this
particular case we know the analytic solution; as we calculated in class
pactual=h/R+(p(1)-h/r)*exp(r*t);
hold on, plot(t,pactual,'g'), hold off
which should plot the actual solution on the same axes as your last numericl
solution. What do you think?
| EXERCISE 1: Apply the Euler method to solve the logistic equation
with |
||
As is illustrated in the previous exercise, it is possible for the
Euler method (and, in fact, for any numerical approach) to go wrong,
particularly when
becomes large. In addition, the behavior of
dynamics calculated using the Euler approximation generally `lag' actual
system dynamics, as we will see when we compare Euler solutions to the
analytic solution of the logistic equation (in the next EXERCISE). However, MATLAB has several
built-in solvers for differential equations which avoid most numerical
problems and are highly accurate; we will explore using these in the next
sections.