Sprawozdanie
Laboratorium nr 4
Model Lotki-Volterry
Zadanie 1:
clear all;
close all;
%Parametry:
a = 0.05;
r = 1;
b = 1;
s = 8;
%Warunki początkowe:
P_0 = 20;
V_0 = 30;
t_max = 15;
sim model1;
figure(1)
plot(tout, V, 'r', tout, P, 'b');
title('Przebieg czasowy - model z simulinka');
legend('Ofiary','Drapiezniki');
xlabel('czas');
ylabel('liczebnosc');
Zad 1.3.
function dy = LotkaVolterra(t,y)
global a b r s ;
dy = zeros (2,1);
%y(1) --> V (ofiary)
%y(2) --> P (drapiezniki)
dy(1) = r*y(1) - a*y(1)*y(2);
dy(2) = a*b*y(1)*y(2) - s*y(2);
end
clear all;
close all;
global a b r s;
%Parametry:
a = 0.05;
r = 1;
b = 1;
s = 8;
%Warunki początkowe:
P_0 = 20;
V_0 = 30;
t_max = 15;
[t, y] = ode45(@LotkaVolterra, [0, t_max], [V_0, P_0]);
plot (t, y(:,1), 'r', t, y (:,2), 'g');
title('Przebieg czasowy - funkcja ode45');
legend('Ofiary','Drapiezniki');
xlabel('czas');
ylabel('liczebnosc');
Zad 1.4
clear all;
close all;
%Parametry:
a = 0.05;
r = 1;
b = 1;
s = 8;
P_0 = [10:20:200];
V_0 = 160;
t_max = 15;
figure(1)
for i = 1:length(V_0)
sim model1;
plot (V, P);
end;
title('Portret fazowy - Simulink');
xlabel('ofiary');
ylabel('drapiezniki');
clear all;
close all;
%Parametry:
a = 0.05;
r = 1;
b = 1;
s = 8;
P_0 = [10:20:200];
V_0 = 160;
t_max = 15;
[V P] = meshgrid (1:500, 1:100);
C = s*log(P) - a*b*P+ r*log(V) - a*V;
contour(C);
title('Porter fazowy - pierwsza całka');
Zadanie 2:
clear all;
close all;
%Parametry:
a = 0.002;
r = 0.2;
b = 2.5;
s = 0.4;
%Warunki początkowe:
P_0 = 50;
V_0 = 100;
K = [50, 100, 300];
for i = 1:3
sim model2;
plot(tout, V, 'r', tout, P, 'g');
title('wykres - model z simulinka');
legend('Ofiary','Drapiezniki');
xlabel('czas');
ylabel('liczebnosc');
end;
function dy = LotkaVolterra2(t,y, a, b, r, s, K)
global a b r s K(i) ;
dy = zeros (2,1);
%y(1) --> V (ofiary)
%y(2) --> P (drapiezniki)
dy(1) = r*y(1)*(1-y(1)/K) - a*b*y(1)*y(2);
dy(2) = -s*y(2) + a*y(1)*y(2);
end
[t, y] = ode45(@LotkaVolterra2, [0, t_max], [V_0, P_0], [], a, b, r, s, K(i));
figure(2);
plot(t, y(:, 1), 'g', t, y(:, 2), 'r');
xlabel('czas'); ylabel('ilosc zwierzatek');
legend('ofiary', 'drapiezniki');
title('wykres na podstawie obliczen funkcja ode45');