Contents
Model to show how small changes in survival affect population dynamics.
This simple model was developed to illustrate the implications for variable mortality rate on a population with a given growth rate. In this case that growth rate is assumed to be per capita egg production rate of a female, and does not include any mortality on the female. Thus, it is essentially a model of recruitment.
clear days=10; % Duration of the model run eggs=20; % Egg production rate (EPR) % This is also the number of eggs we start with, and value for EPR. % Each day the pop will increment by this value
Set up variables
% The following terms set up matrices in which we will put the results timestep=5; % This is the timestep - in minutes deltat=timestep/(24*60); % Puts the timestep in proper units (days) death = [0 0.05 0.1 0.5]; % This sets the mortality rate on a per day basis t=zeros(days/deltat,1); % This will be my time variable zoo=zeros(days/deltat,length(death)); % This tracks the population and goes into the plot zoo(1,:)=eggs; % setting the zero index as starting point % initialize the counters to keep track of the results: t(1)=0; j=1; % this is the counter to put stuff into whole spots in arrays k=1; % this counter keeps track of a whole day passing
Discrete Time Loop
for time=0:deltat:days %This starts the cycle of days % checks if a day has passed so that eggs can be added into the % system once each day at midnight if k>=1/deltat zoo(j,:)=zoo(j-1,:)+eggs; % adding the eggs each day k=0; % reset the whole day counter end j=j+1; k=k+1; dailydeath = zoo(j-1,:).*(1-(exp(death.*deltat))); zoo(j,:)=zoo(j-1,:) + dailydeath; %exponential calculation %zoo(j,:)=zoo(j-1,:)-zoo(j-1,:).*deltat.*death; %THIS GIVES THE SAME RESULT!! t(j)=time; end
Plot the Results
figure subplot(2,1,1) plot(t(1:j-3,:),zoo(1:j-3,:),'linewidth',2) title(['Cumulative recruitment']) set(gca,'xtick',[0:days]) ylabel('Number of recruits') legend([num2str(death')],2) % text(1.15,(.9*max(ylim)),['Final Recruitment (Day ',num2str(days/2),') =',num2str(round(zoo((j/2-3),:))) ]) % text(2.15,(.8*max(ylim)),['Recruitment (Day ',num2str(days),') =',num2str(round(zoo((j-3),:))) ]) % text(2.25,(.8*max(ylim)),'N_t = N_0\ite\rm^(^-\it^m^ ^t\rm^)') for i=1:length(death) zoop(:,i)=(abs(zoo(1:j,i))./zoo(1:j,1)); end subplot(2,1,2) plot(t(1:j-3,:),zoop(1:j-3,:),'linewidth',2) set(gca,'xtick',[0:days]) ylim([0 1]) % legend([num2str(death')],3); title(['Fraction of recruits left, compared to 100% survival']); % text(0.15,.2,['% Recruits (Day ',num2str(days/2),') =',num2str((round(zoop((j-3),:).*100))./100) ]) % text(1.15,.1,['% Recruits (Day ',num2str(days),') =',num2str((round(zoop((j/2-3),:).*100))./100) ]) xlabel('Day') ylabel('Fraction of recruits') [ax,h]=suplabel(['Timestep=',num2str(timestep),' minutes, EPR=',... num2str(eggs),' eggs female^-^1 day^-^1'],'t');
