Денис Владимирович Соломатин

Математические модели в естественнонаучном образовании. Том 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);