-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSingleSp_PtoODEfcn2.m
More file actions
82 lines (65 loc) · 3.56 KB
/
SingleSp_PtoODEfcn2.m
File metadata and controls
82 lines (65 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
function xsol = SingleSp_PtoODEfcn2(p,time,dt,abx,x0,fcnname)
% p = set of parameters (open)
% time = time points
% x0 = initial value
% abx = abx values
% fcnname = functional form to use (string = 'logistic', 'logpoly','poly2', 'poly3')
% Cooperation
if strcmp(fcnname,'logextralosscoopabx')
% p = [r,k,l,A,h,A50,b]
dx = @(x) p(1).*x.*(1 - x./p(2)) + p(7).*x.^2 - (p(3).*(p(4).^p(5))./(p(6).^p(5) + p(4).^p(5))).*x;
% Cooperation, A = indep var
elseif strcmp(fcnname,'logextralosscoopabxindep')
% p = [r,k,l,h,A50,b]
dx = @(x,a) p(1).*x.*(1 - x./p(2)) + p(6).*x.^2 - (p(3).*(a.^p(4))./(p(5).^p(4) + a.^p(4))).*x;
%dx = @(x,a) p(1).*x.*(1 + p(6).*x - x./p(2)) - (p(3).*(a.^p(4))./(p(5).^p(4) + a.^p(4))).*x;
% Logistic saturating loss
elseif strcmp(fcnname,'logextralossabx')
% p = [r,k,l,A,h,A50]
dx = @(x) p(1).*x.*(1 - x./p(2)) - (p(3).*(p(4).^p(5))./(p(6).^p(5) + p(4).^p(5))).*x;
% Logistic saturating loss, A = indep var
elseif strcmp(fcnname,'logextralossabxindep')
% p = [r,k,l,h,A50]
dx = @(x,a) p(1).*x.*(1 - x./p(2)) - (p(3).*(a.^p(4))./(p(5).^p(4) + a.^p(4))).*x;
% Logistic linear loss, A = indep var
elseif strcmp(fcnname,'logextralosslinabxindep')
% p = [r,k,l,MIC]
dx = @(x,a) p(1).*x.*(1 - x./p(2)) - (p(3).*(a./p(4))).*x;
% Effective antibiotic
elseif strcmp(fcnname,'logextralossAeff')
% p = [r,k,l,A,h,A50]
dx = @(x) p(1).*x.*(1 - x./p(2)) - (p(3).*((p(4)./x).^p(5))./(p(6).^p(5) + (p(4)./x).^p(5))).*x;
% Effective antibiotic, A = indep var
elseif strcmp(fcnname,'logextralossAeffindep')
% p = [r,k,l,h,A50]
dx = @(x,a) p(1).*x.*(1 - x./p(2)) - (p(3).*((a./x).^p(4))./(p(5).^p(4) + (a./x).^p(4))).*x;
% Strong Allee (original, in thesis)
elseif strcmp(fcnname,'logextralossalleeabx')
% p = [r,k,l,A,h,A50,a]
dx = @(x) (p(1).*x.*(1 - x./p(2)) - (p(3).*((p(4)./x).^p(5))./(p(6).^p(5) + (p(4)./x).^p(5))).*x).*(x - p(7))./p(2); %applied to abx term (outside)
%dx = @(x) (p(1).*x.*(1 - x./p(2)).*(x - p(7))./p(2) - (p(3).*((p(4)./x).^p(5))./(p(6).^p(5) + (p(4)./x).^p(5))).*x); %just applied to growth (inside)
% Strong Allee (original, in thesis), A = indep var
elseif strcmp(fcnname,'logextralossalleeabxindep')
% p = [r,k,l,h,A50,a]
dx = @(x,a) (p(1).*x.*(1 - x./p(2)) - (p(3).*(a.^p(4))./(p(5).^p(4) + a.^p(4))).*x).*(x - p(6))./p(2); %f(N) modifies abx loss term
%dx = @(x,a) (p(1).*x.*(1 - x./p(2))).*(x - p(6))./p(2) - (p(3).*(a.^p(4))./(p(5).^p(4) + a.^p(4))).*x; %f(N) doesn't modify abx loss term
% Weak Allee with abx or density threshold, A = indep var
elseif strcmp(fcnname,'logextralossWalleeabxindep')
% p = [r,k,l,h,A50,a,Athresh or Nthresh]
% This works but below is better
%dx = @(x,a) (p(1).*x.*(1 - x./p(2))).*((x>p(7)).*(((x-p(7))./p(6))+1) + (x<=p(7))) - (p(3).*(a.^p(4))./(p(5).^p(4) + a.^p(4))).*x;
% THE MODEL
dx = @(x,a) (p(1).*x.*(1 - x./p(2))).*((a>p(7)).*((x./p(6))+1) + (a<=p(7))) - (p(3).*(a.^p(4))./(p(5).^p(4) + a.^p(4))).*x;
% Expanded logistic, A = indep var
elseif strcmp(fcnname,'logextralossdelayabxindep')
% p = [r,k,l,h,A50,a,b]
%dx = @(x,a) (p(1).*x.^p(6)).*(1-x./p(2)).^p(7) - (p(3).*(a.^p(4))./(p(5).^p(4) + a.^p(4))).*x;
dx = @(x,a) (p(1).*x.^p(6)).*(1-x./p(2)) - (p(3).*(a.^p(4))./(p(5).^p(4) + a.^p(4))).*x;
% Expanded logistic with density threshold, A = indep var
elseif strcmp(fcnname,'logextralossdelayabxindep2')
% p = [r,k,l,h,A50,a,b]
dx = @(x,a) (p(1).*x.^((x>p(7))*p(6) + (x<=p(7)))).*(1-x./p(2)) - (p(3).*(a.^p(4))./(p(5).^p(4) + a.^p(4))).*x;
end
[t,a,x] = odesolver2(dt,time,abx,x0,dx);
xsol = x';
end