Математические модели в естественнонаучном образовании
Шрифт:
Рисунок 1.12. Две модели
График справа, который асимптотически стремится к прямой параллельной горизонтальной оси, представляет собой своеобразное соревнование, по условиям которого если численность популяция превышает свою пропускную способность, то некоторые особи получают все ресурсы, а другие не получают ничего. Поэтому любое большое значение
Задачи для самостоятельного решения:
1.4.1. Для дискретной популяционной модели относительный темп роста определяется как
а. Заполните пропущенные места: начиная с некоторого значения
б. Какой смысл имеет относительный темп роста равный нулю? А отрицательный?
в. Приведите выражения для вычисления относительного темпа роста для геометрических и логистических моделей населения, а также других моделей пройденного раздела.
г. Постройте график каждой из относительных скоростей роста, которые выведите в части (в) как функции от
1.4.2. На графиках (б), (в) и (г) из задачи 1.2.9 раздела 1.2 видно, что
1.4.3. Постройте простую модель, показывающую эффект Аллее в следующих вариантах.
а. Объясните, что для некоторых параметров
б.
Объясните, почемув. Исследуйте полученную модель, используя программы onepop.m из задачи 1.2.4, cobweb.m и cobweb2.m в MATLAB для некоторых вариантов значений
% cobweb.m
%
% Паутинная диаграмма для моделирования одной популяции разностным уравнением.
%
% У пользователя запрашивается уравнение, определяющее модель. Затем по
% щелчку на начальной численности популяции на графике будет отображаться
% «паутина» будущих численностей популяции.
%
p=0; % инициализация популяции
%
disp (' Введите формулу, определяющую модель популяции, используя "p" для')
disp ('обозначения численности: (Например: next_p = p+1.8*p*(1-p/10) )')
next_p=input ('next_p = ','s');
if isempty(next_p) next_p='p+1.8*p*(1-p/10)'; end;
eval( [next_p ';']); % проверяемая формула
%
disp (' ');
disp (' Введите верхний и нижний пределы значения численности в момент времени t,')
disp ('чтобы задать границы изображения на графике:')
limits=input('(По умолчанию [pmin pmax]=[0 20]) [pmin pmax]= ');
if isempty(limits) limits=[0 20]; end;
pinc=(limits(2)-limits(1))/50;
x=limits(1):pinc:limits(2);
%
p=limits(1); y=eval (next_p);
for i=x(2):pinc:limits(2); % цикл для создания вектора значений P
p=i;
p=eval (next_p);
y=[y p];
end;
%
figure % настройка графика
plot(x,y,x,x)
axis([limits(1),limits(2),limits(1),limits(2)]);
xlabel ('P_t');
ylabel ('P_{t+1}');
title (['следующее\_p=',next_p]);
%
continueb=1; % логическое значение продолжения цикла
while continueb % цикл пока кнопку не нажали
[p,q,button]=ginput(1); % получить начальную численность
if button==1
%
plot (x,y,x,x); % построение графика
axis([limits(1),limits(2),limits(1),limits(2)]);
hold on
xlabel ('P_t');
ylabel ('P_{t+1}');
title (['следующее\_p=',next_p]);
%
for i=1:50; % цикл построения секций паутины
w=p;
p=eval (next_p);
plot([w,w],[w,p],'k','EraseMode','none'); % рисуем вертикальный фрагмент
pause(.1);
if p<0; break; end; % фильтрация отрицательных значений P
plot([w,p],[p,p],'k','EraseMode','none'); % рисуем горизонтальный фрагмент
pause(.1);
end;
hold off;
else continueb=0; % конец цикла
end
end
%
% cobweb2.m
%
% Паутинная диаграмма для моделирования одной популяции разностным уравнением.
%
% У пользователя запрашивается уравнение, определяющее модель. Затем по
% щелчку на начальной численности популяции на графике будет отображаться
% «паутина» будущих численностей популяции. Старые линии постепенно стираются
% с течением времени.
%
m=[];
s=16; % количество линий для рисования
p=0; % инициализируем начальное значение
% % численности популяции
disp (' ')
disp (' Введите формулу, определяющую модель популяции, используя "p" для')
disp ('обозначения численности: (По умолчанию: next_p = p+2.5*p*(1-p/10) ) ')