end
end
if(k2<1)
if(k1>1)
disp('Конкурентную борьбу выигрывает первый вид')
end
end
>> work4
Конкурентную борьбу выигрывает второй вид
При a1=0.44
>> work4
Конкурентную борьбу выигрывает первый вид
Действительно, в конкурентной борьбе одерживает победу первый вид, хотя его начальная численность была в три раза меньше численности второго вида, отсюда можно сделать вывод, что коэффициенты в решении об исходе борьбы играют большую роль, чем начальные численности популяций.
Как видим из графиков, наши предположения насчет победителя в конкурентной борьбе были верны.
Достаточно подробно этот случай был рассмотрен на лабораторной работе. Однако же приведем модель, учитывающую внутривидовую конкуренцию в обеих популяциях.
Дифференциальные уравнения изменения численностей популяций имеют следующий вид:
Равновесие наступает при
Равновесие наступит при
Содержимое sistс.m:
function sistc=func(t,p)
global a1 a2 b11 b22 b12 b21;
if p(1)<=0
p(1)=0;
end
if p(2)<=0
p(2)=0;
end
sist=[(a1-b11*p(1)-b12*p(2))*p(1); (-a2-b22*p(2)+b21*p(1))*p(2)];
Содержимое work5.m
global a1 a2 b11 b22 b12 b21;
a1=10;
a2=0.24;
b11=0.004;
b22=0.0035;
b12=0.042;
b21=0.033;
Mrav=(-a2*b11+b21*a1)/(b22*b11+b21*b12);
Nrav=(a1*b22+b12*a2)/(b22*b11+b21*b12);
N0=900;
M0=800;
[t X]=ode45('sistc',[0 15],[N0 M0]);
N=X(:,1);
M=X(:,2);
figure
hold on
grid on
plot(t,N,'b')
plot(t,M,'g')
xlabel('Время');
ylabel('Численности популяций');
legend('Жертва','Хищник')
hold off
figure
hold on
grid on
if(b21*a1>a2*b11)
plot(N,M,'r')
plot(Nrav,Mrav,'b*')
else
plot(N,M,'g')
end
plot(N0,M0,'m*')
xlabel('Жертва');
ylabel('Хищник');
hold off
По графику легко проследить, что при увеличении численности жертвы увеличивается численность хищника, после чего численность жертвы падает, что влечет за собой уменьшение численности хищника, после чего численность жертвы снова увеличивается.
А при таких коэффициентах численности популяций увеличиваются
b12=0.00403;
b21=0.0035;
А при таких коэффициентах, как популяция жертвы, так и популяция хищника, прекратят свое существование.
a1=0.34;
a2=0.44;
b11=0.013;
b22=0.0035;
b12=0.042;
b21=0.012;
Дифференциальные уравнения изменения численностей популяций имеют следующий вид:
Равновесие наступает при
Равновесие наступит при
Содержимое sista.m:
function sist=func(t,p)
global a1 a2 b11 b22 b12 b21;
sist=[(a1-b11*p(1)+b12*p(2))*p(1); (a2-b22*p(2)+b21*p(1))*p(2)];
Содержимое work6.m аналогично work5.m
При коэффициентах
a1=0.2;
a2=0.24;
b11=0.004;
b22=0.0035;
b12=0.0033;
b21=0.0029;
Как видим, несмотря ни на что (даже на благотворное влияние популяций друг на друга), численности популяций падают.
При коэффициентах
b12=0.0042;
b21=0.0033;
А в этом случае численности популяций растут до определенного равновесного значения.
А при коэффициентах
b12=0.00403;
b21=0.0035;
Численности популяций неограниченно растут, причем можно заметить, что с увеличением времени численности популяций практически совпадают.
На основе полученных знаний об основных межвидовых взаимодействиях попробуем смоделировать эволюцию.
Определим сценарий эволюции. Зададим его таблицей, которая определяет изменения отношений между популяциями во времени. В этой таблице каждой паре видов сопоставляется три символа: либо "плюс" (когда изменение численности одного вида вызывает аналогичное изменение численности другого), либо "нуль" (при отсутствии влияния), либо "минусом" (когда изменение численности одного вида вызывает обратное изменение численности другого).
В таблице под словами не чистая модель хищник – жертва следует принимать, что хищник питается не только этой жертвой, но и чем-то другим, то есть при отсутствии данной жертвы хищник не погибнет. Примем равными начальные численности популяций.
Смоделируем эту ситуацию в MATLAB.
Зададим функцию, описывающую изменение численностей популяций.
Содержимое sistev.m
function sist=func(t,p)
global a1 a2 b11 b22 b12 b21 n1 n2 n3 n4 t1 t2 t3 t4 t5;
if p(1)<=0
p(1)=0;
end
if p(2)<=0
p(2)=0;
end
if p(1)>950
b21=0.0003;
if t1<0
t1=t
end
if p(1)>1100
b21=0.0005;
n2=2;
if t2<0
t2=t
end
end
n1=2;
end
if n2>1
if p(2)<990
b12=0.0002;
n3=2;
if t3<0
t3=t
end
end
end
if n3>1
if p(2)>1070
b12=0.0003;
n4=2;
if t4<0
t4=t
end
end
end
if n4>1
if p(1)<990
b12=-0.0002;
if t5<0
t5=t
end
end
end
sist=[(a1-b11*p(1)-b12*p(2))*p(1); (a2-b22*p(2)-b21*p(1))*p(2)];
Содержимое evolucia.m
clear
global a1 a2 b11 b22 b12 b21 n1 n2 n3 n4 t1 t2 t3 t4 t5;
t1=-1;
t2=-1;
t3=-1;
t4=-1;
t5=-1;
n1=0;
n2=0;
n3=0;
n4=0;
a2=2.5;
a1=2.6;
b22=0.002;
b11=0.0023;
b12=0;
b21=0;
N0=700;
M0=700;
[t X]=ode113('sistev',[0 7],[N0 M0]);
N=X(:,1);
M=X(:,2)
figure
hold on
grid on
plot(t,N,'b')
plot(t,M,'g')
xlabel('Время');
ylabel('Численность популяций');
legend('1-ая популяция','2-ая популяция')
hold off
Результат работы программы:
>> evolucia
t1 =
0.45
t2 =
1.27
t3 =
2.06
t4 =
3.16
t5 =
4.27
Удовлетворяет ли данный график нашему сценарию?
Глядя на график, можно сказать следующее. На промежутке времени (0 0,45) численности изменяются независимо друг от друга. Далее во время (0,45 1,27) первая популяция подавляет развитие второй, а во время (1,27 2,06) негативное влияние первой популяции на вторую сказывается еще сильнее. После этого, во время (2,06 3,16) вторая популяция начала конкурировать с первой, что привело к увеличению численности второй популяции и уменьшению численности первой. А ко времени (3,16 4,27) вторая популяция стала уже более серьезным конкурентом для первой. Начиная с момента времени, равного 4,27, первая популяция начинает питаться второй, что сдерживает рост второй популяции и падение численности первой.
Таким образом, полученный график удовлетворяет нашему сценарию эволюции.