#This is a function for resource dynamics of nospec species and one resource res1_plot_para = function(specpara,supply,loss,paratochange,inival,endval,stepval) { # species parameters: # 1 growth: growth per unit biomass (u) # 2 uptake: uptake per unit growth (w) # 3 mortality (d) # 4 initial size (n0) #resource parameters: # 5 supply: resource supply (S) # 6 loss: rate at which resource is removed (a) #further parameters: # paratochange: number of the para to be changed (see above) # inival: initial parameter value # endval: final parameter value # stepval: parameter change step # animation - whether to animate #paratochange = fix(paratochange); if (paratochange < 1 | paratochange > 6 | paratochange == 4) { print('Bad parameter code') return() } paraname = c('Growth','Uptake','Mortality',' ','Supply','Loss') para=NULL para[1] = specpara[1]; para[2] = specpara[2]; para[3] = specpara[3]; para[5] = supply; para[6] = loss; para[paratochange] = inival; Nstarini = (para[5]- para[6]*para[3]/para[1]) / (para[2] * para[3]); Rstarini = para[3]/para[1]; Rfreeini = para[5]/para[6]; para[paratochange] = endval; Nstarend = (para[5]- para[6]*para[3]/para[1]) / (para[2] * para[3]); Rstarend = para[3]/para[1]; Rfreeend = para[5]/para[6]; maxx = 1.2*max(c(Rstarini, Rstarend, Rfreeini, Rfreeend)); maxy = 1.2*max(c(50, Nstarini, Nstarend)); nobin = 100; for (value in seq( inival,endval, by=stepval)) { para[paratochange] = value; Nstar = (para[5]- para[6]*para[3]/para[1]) / (para[2] * para[3]); Rstar = para[3]/para[1]; Rfree = para[5]/para[6]; #text = sprintf('#s #7.2g Rfree #7.2f Rstar #7.2f Nstar #7.2f', paraname(:,paratochange), value, Rfree,Rstar,Nstar); xhyp=NULL; yhyp=NULL; count=1 for (t1 in seq(para[5]/(para[6]*nobin),para[5]/para[6],by=para[5]/(para[6]*nobin))) { xhyp[count] = t1 yhyp[count] = (para[5]- para[6]*t1)/(para[2]*para[1]*t1) count = count + 1 } titl = paste(paraname[paratochange],": ",value,"Rstar: ",format(Rstar,digits=4), "Nstar: ", format(Nstar,digits=4)) plot(xhyp,yhyp,type="l",col="blue",xlim=c(0,maxx),ylim=c(0,maxy),xlab='Resource', ylab='Species',lwd=2,main=titl); lines(c(Rstar, Rstar),c(0, maxy),col="green",lwd=2); if (Rstar>0) points(Rstar,Nstar,col='red',pch=19); Sys.sleep(2) } }