Sprawozdanie
Laboratorium nr 2
Modele pojedynczych populacji
Zadanie 1:
rozwiązanie modelu dyskretnego:
function N_t = rozw_dys(t, r, N_0)
N_t = N_0
for i = 1:t
N_t = N_t+ r*N_t;
end;
end
rozwiązanie modelu ciągłego:
function N_t = rozw_eulera(t, r, N_0, h)
N_t = N_0
for i = h:h:t
N_t = N_t+ h*N_t*r;
end;
end
function N_t = rozw_cialgy(t, r, N_0)
N_t = N_0*exp(r*t)
end
wpływ parametrów N0 i r1 lub r2 na dynamikę modeli
clear all;
close all;
r_1 = 0.6;
r_2 = 0.6;
N_0 = [5 7 8]
% wektory czasu:
t_dys = [0:1:9];
t_cia = [0:1:9];
% Model ciągły
for i=1:3
N_cia (i, j+1)= N_0(i)
for j=1:9
N_cia1(i, j+1) = N_cia1 (i, 1) * exp (r_1*t_cia(j));
end;
end;
% Model dyskretny
for i=1:3
N_dys1(1, i) = N_0(i)
for j=1:9
N_dys1 (i, j+1) = N_dys1(i,j)*(1+r_2);
end;
end;
%wykresy:
for i=1:3
figure(i);
plot (t_dys, N_dys(i,:),'o', t_cia, N_cia(i,:),'g-');
end;
czas zdwojenia TD:
r1 = 0.6
dN(t)/ dt = r1*N(t)
N(t) = N0* exp (r1*t)
N(TD) = 2*N0
N(TD) = N0*exp (r1*TD) = 2*N0
exp(r1*TD) = 2
r1*TD = ln2
TD = ln2/r1
Td = ln2/0.6
TD = 1.155
zależność funkcyjna r1(r2)
model dyskretny: Nt = Nt-1 *( 1+r2) = N0*(1+r2)t
model ciągły: N(t) = N0* exp(r1*t)
N0*(1+r2)t = N0* exp(r1*t) /N0
(1+r2)t = exp(r1*t) /*ln
t* ln(1+r2) = r1*t /t
r1 = ln(1+r2)
r1 = ln(1+0.6)
r1 = ln(1.6)
r1 = 0.47
clear all;
close all;
r_2 = 1.5;
r_1 = log (1+r_2);
t_dys = [0:1:9];
t_cia = [0:1:9];
N_0 = 4;
%model ciągły:
N_cia=N_0.*exp(r_1*t_cia);
%model dyskretny:
N_dys = N_0.*((1+r_2).^t_dys);
plot (t_cia, N_cia, 'r-', t_dys, N_dys, 'bo');
legend('model ciagly', 'model dyskretny');
xlabel('czas'); ylabel('N')
dla jakiego r1 model ciągły przyjmuje te same wartości w ustalonych punktach czasowych co model dyskretny o zadanych N0 i r2.
N(t) = N0* exp(r1*t)/:N0
N(t)/N0 = exp(r1*t)/ln
r1*t = ln(N(t)/N0)/:t
r1 = 1/t * ln(N(t)/N0)
Zadanie 2:
function derivate_N = logistyczny(t,N)
a=0.2;
N_nieskon = 500;
derivate_N=a.*N.*(1-(N./N_nieskon));
end
--------------------------------------
function deriv_N = gompertz(t,N)
b=0.1;
N_nieskon=500;
deriv_N = -b.*N.*log(N./N_nieskon);
end
----------------------------------
close all; clear all;
t = [0, 120];
N_0 = [5,45,300,600];
[t,N] = ode45(@logistyczny,t, N_0);
plot (t,N(:,1),'r', t,N(:,2),'b', t,N(:,3),'g',t,N(:,4),'y');
legend('N_0 = 5', 'N_0 = 45','N_0 = 300', 'N_0 = 600');
xlabel('czas'); ylabel('ilosc komorek');
grid on;
close all; clear all;
t = [0, 120];
N_0 = [5,45,300,600];
[t,N] = ode45(@gompertz,t, N_0);
plot (t,N(:,1),'r', t,N(:,2),'b', t,N(:,3),'g',t,N(:,4),'y');
legend('N_0 = 5', 'N_0 = 45','N_0 = 300', 'N_0 = 600');
xlabel('czas'); ylabel('ilosc komorek');
title('Model Gompertza');
grid on;
WYKRESY FAZOWE:
close all; clear all;
t = [0, 120];
N_0 = [5,45,300,600];
figure(1);
for i =1:4
[t,N] = ode45(@logistyczny, t, N_0(i));
title ('wykresy fazowe dla modelu logistycznego')
subplot (2,2,i);
plot (N(1:length(N)-1),N(2:length(N)));
end
close all; clear all;
t = [0, 120];
N_0 = [5,45,300,600];
for i =1:4
[t,N] = ode45(@gompertz, t, N_0(i));
title ('wykresy fazowe dla modelu Gompertza')
subplot (2,2,i);
plot (N(1:length(N)-1),N(2:length(N)));
end
Zadanie 3:
X0 = 0.2
t =[0:70]
close all; clear all;
a = [0.6, 2.5, 3.3, 3.8];
t=[0:70];
X(1:4, 1) = 0.2;
for i=1:4
for j= 1:70;
X(i, j+1)=a(i).* X(i,j).*(1-X(i,j));
end;
end;
for i=1:4
figure(i);
plot (t, X(i, :),'*',t, X(i,:), 'g-');
xlabel('czas'); ylabel('X(t)');
title ('przebieg czasowy dla modelu logistycznego')
end
oscylacje:
a=3.3
chaos:
a = 3.8
wykres bifurkacyjny:
N= 50;
N1=25;
s = zeros(1,N);
S(1)=0.1;
for j=2:N
s(j)=a*s(j-1)*(1-s(j-1));
end;
figure(1); plot(s,'o');
figure(2); plot(s(N1:end-1),s(N1+1:end), '.');
bif=[];
for a = 0:0.01:4;
zad3c;
drawnow;
bif(end+1,:)=s(N1:end);
end;
figure();
plot([1:0.01:4], bif, '.', 'markersize',2);