Давайте еще раз запишем нашу простую модель для роста популяции. И предположим, что рождаемость (birth rate) равна 2. В предыдущем модуле я говорила, что эта модель является линейной, когда мы чертим график зависимости популяции n с индексом t+1 от популяции n с индексом t. Это происходит потому что нет взаимодействия между кроликами и наш рост не ограничен. Другими словами, все равно линейной сумме его частей. Это мы можем увидеть в нашей модели простого роста популяции (SimplePopulationGrows). Например, давайте представим, что наша начальная популяция равна одному кролику и рождаемость (birth rate) равна 2. Мы будем разводить кроликов три года и в итоге получим 8 кроликов. Теперь давайте установим нашу начальную популяцию на 10. Т. е. исходное значение равно x10. Нажимаем кнопку Setup: 1, 2, 3 раза и получаем 80 кроликов. Результат тоже равен x10. Так если бы мы взяли десять различных запусков, которые имеют начальную популяцию 1 и запустили их для 3 лет и просуммировали результаты мы бы получили тот же результат, который получен при начальной популяции равной 10 для трех лет. Это, в конечном счете, 80 кроликов. Таким образом целое равно сумме частей. Но это не так, если система нелинейна. Сделаем нашу систему нелинейной предположив нелинейное взаимодействие между индивидами. Посмотрим на нелинейные взаимодействия в нашей модели. У нас есть n с индексом t+1 равное рождаемости (birth rate) умноженное на n с индексом t, но теперь мы будем вычитать количество потомков, которые умерли из-за перенаселенности.. Мы предполагаем что перенаселенность происходит из-за недостатка пищи или пространства и, поэтому существует максимальная популяция, которая может жить в привычной среде обитания. Мы устанавливаем количество кроликов умерших из-за перегрузки равным n с индексом t в квадрате деленное на максимальное количество населения Эта модель теперь имеет нелинейные характеристики. n с индексом t в квадрате слагаемое происходит из того факта, что n в квадрате возможное попарное взаимодействие между индивидами. Эта модель, конечно, является упрощенной и отличается от реальности. Наша имитация нелинейности является только лишь приближением к реальной ситуации. Далее расширим эту модель до более общей. Введение других факторов смерти кроликов, которые не испытывают перенаселенности. Мы назовем их смертностью (death rate). В расширенной модели мы будем вычитать из рождаемости (birth rate) смертность (death rate). Эта модель называется логистической. Она была разработана математиком Пьером Ферхюльстом в начале 19 века. Теперь давайте посмотрим эту модель в NetLogo. Модель называется logisticModel.nlogo. Вы можете загрузить ее, как обычно, по ссылке снизу и со страницы с материалами курса. Как же выглядит эта модель!? У нас есть ползунок для начальной популяции. И ползунки для рождаемости (birth rate) и смертности (death rate). Обратите внимания, что они являются вещественными числами, а не целыми. Эта модель получает вещественные значения для численности населения в следующих поколениях, которые будут просто округлены для получения целочисленных значений. Так же есть ползунок carrying-capacity (пропускная способность (!)). Это является научным названием для максимальной популяции, которая может прожить в данной среде обитания. Хорошо. Давайте установим значение начальной популяции в 1. Рождаемости (birth rate) 2.0 и смертности (death rate) 0.0. А carrying-capacity в значение 50. Нажимаем setup. После этого просто нажимаем reproduce, несколько раз подряд. И так, популяция растет, растет, растет. Заметим теперь, что у нас получилось фиксированное значение в 25 кроликов. Даже если мы будем нажимать reproduce дальше это значение не изменится. Обратите внимание, что зависимость населения от времени больше не является экспоненциальной кривой по своей форме. Рост происходит не так быстро. Сначала происходит быстрый рост, но вскоре он начинает замедлятся и в конце концов прекращается. Это называется логистической функцией График зависимости текущей популяции от прошлогодней популяции больше не является прямой, потому что наша система больше нелинейна. Теперь давайте вернемся к NetLogo модели. Очевидный вопрос, почему количество не фиксируется в значении 50, в которое мы установили carrying-capacity. Хорошо. Это просто так работает модель. Если есть 25 индивидов, то 25 в квадрате деленное на 50 равно 12.5 индивидов, которые умерли. Остаток имеет рождаемость (birth rate) 2. Если будут рождаться по 2 потомка для каждого следующего поколения, то мы получим 25. Эта математическая модель не обязательно является реалистичной моделью роста населения. Особенно для малых чисел. Она предназначена для того, чтобы показать нелинейную природу роста популяции в реальном мире. Но, если быть точным, не обязательно. Нам интересно не насколько модель является реалистичной, а как будут себя вести нелинейные аспекты. Теперь давайте вернемся к нашей модели. Теперь зададимся вопросом: целое являющееся суммой частей, которое показывала линейная модель Теперь мы сделаем, то что делали ранее. Нажмем reptroduce 3 раза. Мы получим 7 кроликов, потому что значение округлится. Теперь давайте установим значение начальной популяции 5. Запустим. И нажмем reproduce 3 раза. И мы увидим, что количество кроликов не равно 5 умноженное на 7, которое являлось бы суммой частей в первой версии. Один индивид произведет 7 индивидов по прошествии 3 шагов. Обратите внимание, вы думаете что 5 индивидов произведут в 5 раз больше: 35 индивидов после 3 шагов, но на выходе мы получаем 21. Таким образом в нелинейном случае целое не равно сумме своих частей. Теперь, когда вы знаете разницу между линейной и нелинейной системой, части которой взаимодействуют нелинейно. Это является ключевой концепцией сложных систем. И мы будем возвращаться к этому снова и снова. Теперь настало время для нескольких небольших упражнений.