Математические модели в естественнонаучном образовании. Том I. Денис Владимирович Соломатин
Читать онлайн книгу.вы, возможно, не ожидаете.
Задачи для самостоятельного решения:
1.2.1. Пусть
и . С помощью калькулятора составьте таблицу популяционных значений для . Изобразите полученные результаты на графике.1.2.2. В модели
, какие значения приведут к тому, что окажется положительным? Отрицательным? Какой смысл это имеет?1.2.3. Повторите решение задачи 1 в MATLAB с помощью команд аналогичных следующим:
p=1; x=p
for i=1:22; p=p+.3*p*(1-p/15); x=[x p]; end
plot([0:22], x)
Объясните, как это работает.
1.2.4. Используя следующую программу onepop.m для MATLAB при различных значениях
, исследуйте долгосрочное поведение модели , где . Возможно, придется изменить количество шагов, с которыми вы запускаете модель, чтобы изучить некоторые из вариантов.% onepop.m
%
% Модель популяции одного вида
%
% У пользователя запрашивается уравнение, определяющее модель. Затем, кликнув
% по начальной численности популяции на графике, динамика популяции как функция
% от времени будет изображена в виде графика. После выполнения симуляции
% при нажатии клавиши 'd' числовые данные отобразятся в командное окно MATLAB.
%
p=0; % инициализация переменной популяции для формулы
%
disp(' ')
disp(' Введите формулу, определяющую модель популяции, обозначая за "p"')
disp('численность популяции: (Например: следующее_p = p+.8*p*(1-p/10) )')
next_p=input ('следующее_p = ','s');
%
p=eval(next_p); % тестируемая формула
%
disp(' ')
disp(' Введите диапазон популяции, который будет отображаться на графике:');
limits=input('(Значение по умолчанию [pmin pmax] = [0 20]) ');
if isempty(limits) limits=[0 20]; end;
%
disp(' ')
n=input(' Введите количество шагов для итерации: (по умолчанию n = 20) ');
if isempty(n) n=20; end;
%
disp(' ')
disp(' Наведите курсор на график, чтобы выбрать начальную популяцию и')
disp('кликните для рисования. Нажмите `d'', чтобы отобразить значения популяции')
disp('в командном окне. Нажмите любую другую клавишу, чтобы выйти.')
disp(' ')
disp(' Нажмите любую клавишу, чтобы начать.')
pause
%
figure; % настроить отображение нового графика
axis([ [0 n] limits]); grid on;
xlabel('Время');ylabel('Популяция P');
title(['следующее\_p=',next_p]);
hold on; % сохранение линий на графике при добавлении новых
%
times=[0:n]; % генерировать вектор времени для построения графика
%
newcontinue=1;
while newcontinue % цикл, пока не будет нажата не левая кнопка
[t,p,button]=ginput(1); % получить начальную численность популяции
if button==1
pops=p;
for i=1:n % построить вектор итерационных значений популяции
p=eval(next_p);