EcoSimulation — 02. Пример простой модели: имитация экспоненциального роста

 

Д.А. Шабанов
Конспект курса
"
Имитационное моделирование сложных биосистем
(с использованием LibreOffice Calc)
"

Введение в курс имитационного моделирования Пример простой модели: имитация экспоненциального роста Усложнение модели: имитация логистического роста
Имитационное моделирование биосистем-01  Имитационное моделирование биосистем-02 Имитационное моделирование биосистем-03

 

2. Пример простой модели: имитация экспоненциального роста

2.1. Освоение Calc: использование адресов ячеек, ввод формул

Как известно всем, кто изучал курс экологии, простейшей моделью, описывающей популяционный рост, является экспоненциальная (рис. 2.1).

Рис. 2.1. Динамика экспоненциального роста (Шабанов, Кравченко, 2009)

В показанной на рисунке модели N — численность популяции, t — время, r — репродуктивный потенциал (мальтузианский параметр), dN/dt — изменение (прирост) численности популяции. В целом эта модель отражает простейший факт: возможный прирост численности популяции пропорционален ее численности. Исследование экспоненциального роста начато еще Леонардо Фибоначчи (1170–~1250) и Томасом Мальтусом (1766–1834). На рисунке представлена аналитическая модель. В ней рост описывается с помощью однозначной функции.

Создадим в  LibreOffice Calc имитационную модель, описывающую экспоненциальный рост. Дальнейшие примеры приводятся для работы с украинскоязычной версией  LibreOffice Calc 5.1.6.2 для Linux; использование иных версий  LO Calc может иметь свои особенности.

Лист LO Calc — это таблица, состоящая из столбцов и строк. В наиболее распространенном режиме адресации (т. н. A1) столбцы обозначаются латинскими буквами (или их сочетаниями), а строки — номерами. Существует и иной стиль адресации (т.н. R1C1); чтобы переключиться между этими стилями надо пройти по пути «Засоби/Параметри/LibreOffice Calc/Формула» (здесь и далее последовательности выбираемых опций в меню LO Calc выделяется курсивом).

В этом конспекте работа с таблицами Calc описывается или на примерах простых таблиц, вставленных в текст (такие таблицы будут использоваться только в начальной части конспекта; можно надеяться, что по мере повышения квалификации читателя они станут избыточными), или иллюстрируется скринами (перехваченными изображениями окон). Прежде всего, надо понять основные принципы относительной и абсолютной адресации в Calc.

Создадим файл Calc. Прежде всего, зададим ячейки, в которые мы будем вводить основные параметры (табл. 2.1).

Таблица 2.1. Начало построения модели, описывающей экспоненциальный рост

  A B C D
1 N0= 1000    
2 r= 0,2    
3        
4 0 1000 {=B1}    
5 1      
6 2      
7 3      

 

Ячейки A1 и A2, в которых указаны обозначения начальных величин, не используются при вычислениях. Они нужны не для самой модели, а для пользователя, чтобы он понимал, где что находится. N0 – это обозначение начальной численности. Чтобы преобразовать 0 в нижний индекс, воспользуемся боковой панелью Calc. Боковая панель может быть свернута; в таком случае, ее надо развернуть, выбрав закладку «Властивості» (рис. 2.2). Чтобы изменить параметры шрифта, надо выделить символ, к которому следует применить специфическое форматирование, и указать его на боковой панели (рис. 2.3).

Рис. 2.2. Боковая панель Calc, которая находится справа, свернута; ее надо развернуть

Рис. 2.3. В ячейке A1 выделен символ; его свойства можно изменить с помощью боковой панели Calc

Того же самого результата можно достичь, выделив нужные символы в ячейке или в строке для формул и пройдя по пути «Формат/Текст/Ніжній індекс».

В соответствующих ячейках столбца B введем значения начальных параметров, указанных в таблице.

В столбце A (отступив некоторое место), введем шкалу времени. Для этого достаточно ввести цифры 0 и 1, выделить их курсором, поместить курсор в правый нижний угол образовавшегося блока и потянуть. Calc заполнит требуемую область продолжением заданной арифметической прогрессии. Если аналогичным образом «растянуть» одну ячейку, в которую введена определенная цифра, те же цифры заполнят весь блок. Если «растянуть» ячейку, в которую введена формула, эта формула может остаться неизменной, а может и закономерно изменяться — в зависимости от того, как она задана (см. далее).

В столбце B разместим имитацию экспоненциального роста. В ячейке, соответствующей началу имитации, введем формулу =B1. Если содержимое ячейки начинается со знака =, Calc рассматривает его, как формулу. В этом конспекте формулы будем показывать в фигурных скобках на желтом фоне, после указания соответствующей величины, которую Calc показывает в данной ячейке. Так, запись «1000 {=B1}» означает, что Calc показывает в этой ячейке величину 1000, и это задается формулой =B1.

Один из способов ввести формулу в ячейку B4 таков: ввести в нее (выделив ее курсором) знак =, затем перейти в строку формул (щелкнув по ней), и, разместив курсор после знака =, выделить целевую ячейку (B1). После этого важно не щелкать курсором по разным местам таблицы (чтобы Calc не редактировал как попало формулу), а выйти из режима редактирования, нажав Enter.

Когда эта ячейка выделена, в самой ячейке показывается находящееся в ней значение, а в строке формул – введенная в ячейку формула (рис. 2.4). Переведя курсор в строку формул, мы «подсветим» ячейки, на которые эта формула ссылается (рис. 2.5).

Рис. 2.4. Курсором выделена ячейка B4; в ячейке показывается ее значение, а в строке формул — введенная в эту ячейку формула

Рис. 2.5. Курсор стоит в строке формул; ячейка, к которой обращается эта формула, выделена. Из этого режима следует выходить нажатием клавиш Enter или Esc! Нажимая на другие ячейки в режиме редактирования формулы, вы приведете к замусориванию этой формулы

Теперь определим, какой будет численность популяции после единичного промежутка времени. Для этого введем в ячейку B5 формулу, соответствующую выражению N1=N0+r*N0 (табл. 2.2).

Таблица 2.2. Заполнение ячеек модели

  A B C D
1 N0= 1000    
2 r= 0,2    
3        
4 0 1000 {=B1}    
5 1 1200 {=B4+B4*B2}    
6 2 1440    
7 3 1728    

 

В ячейке B6 в соответствии с этой логикой должна находиться формула {=B5+B5*B3}. Эти формулы можно ввести в ячейку B6 и все последующие вручную, но это слишком трудоемко. Очевидно, что и все последующие выражения в столбце B аналогичны тому, что введено в ячейку B5. Можно ли «растянуть» его на весь столбец?

Выделите в Calc ячейку B5 и растяните ее на ячейку B6. В ячейке B6 окажется формула {=B5+B5*B3}. При «растягивании» Calc сдвинул все адреса, упомянутые в формуле. Относительно ссылки на предыдущую ячейку (B5 для ячейки B6) это совершенно правильно, а при ссылке на значение параметра r — неверно.

Дело в том, что для ссылок в формуле мы использовали относительную адресацию. Фактически, когда в ячейке B5 стоит формула {=B4+B4*B2} она означает {=на_ячейку_выше+на_ячейку_выше*на_три_ячейки_выше}. Чтобы указать, что нужна именно определенная ячейка, ссылка на которую не зависит от того, в каком месте листа находится формула, следует использовать абсолютную адресацию. В той системе адресации, которую мы рассматриваем в этом примере, она обозначается символом доллара: {=B4+B4*$B$2}. Кстати, в нашем случае приведенной записи аналогичен вариант {=B4+B4*B$2}. Однако во втором из этих случаев, если «растянуть» такую формулу в другой столбец, ссылка будет указывать на вторую строку этого, нового столбца. Очевидно, что ссылку на предыдущую ячейку в ряду вычислений численности популяции следует оставить относительной.

В некоторых случаях для выбора относительной и абсолютной адресации в Calc может быть полезна команда «Аркуш/Відносні/абсолютні посилання» или их аналог, клавиша F4. Понажимайте на эту клавишу и посмотрите, как меняется формула: происходит циклический переход между четырьмя состояниями:
– относительная адресация и по столбцам, и по строкам;
– абсолютная адресация и по столбцам, и по строкам;
– относительная адресация по столбцам и абсолютная – по строкам;
– абсолютная адресация по столбцам и относительная – по строкам.

Такие переключения часто оказываются удобными. Впрочем, для случая, который мы рассматриваем, переключение по функции F4 неудобно, так как в одной формуле следует сочетать относительную ссылку (для предыдущего значения в ряду) и абсолютную ссылку (для одного из начальных параметров).

Кстати, при использовании стиля ссылок R1C1 та же формула будет выглядеть так: {=R[-1]C+R[-1]C*R2C}; относительные ссылки взяты в квадратные скобки, абсолютные — нет. R[-1]C означает в таком случае отсылку к ячейке на одну строку выше в том же столбце, где находится формула, а R2C — ссылку на ячейку во второй строке того же столбца, в котором находится формула.

Впрочем, в нашем примере мы пользуемся традиционными ссылками. В таком случае, «растянув» формулу из ячейки B5 на весь столбец (вероятно, более длинный, чем на показанном в табл. 2.3 примере), мы получим требуемый ряд значений.

Таблица 2.3. Результат «растягивания» формулы с абсолютной адресацией по строкам

  A B C D
1 N0= 1000    
2 r= 0,2    
3        
4 0 1000 {=B1}    
5 1 1200 {=B4+B4*B$2}    
6 2 1440 {=B5+B5*B$2}    
7 3 1728 {=B6+B6*B$2}    

 

Итак, зависимость численности модельной популяции от времени, соответствующая экспоненциальному росту, построена.

2.2. Графическое отображение полученной зависимости

Мы получили ряд чисел, описывающих динамику численности популяции, растущей в соответствии с экспоненциальной моделью. Эту динамику будет значительно легче интерпретировать, если она будет отражена на графике. Вероятно, чтобы график был понятнее, столбцы следует озаглавить. Введем в ячейку A2 символ t, а в B2N. Выделим мышью диапазон, начинающийся с этих заголовков и охватывающий два столбца с вычислениями до самого конца. Выберем команду «Вставка/Діаграма...». Выберем тип диаграммы, показанный на рис. 2.6. 

Рис. 2.6. Выбор типа графика, который будет вставлен на лист Calc

Нажимая кнопку «Далі>>», мы сможем задать некоторые свойства создаваемого графика. Чтобы его оси оказались подписаны, стоит использовать и первую сроку, и первый столбец как подписи (рис. 2.7).

Рис. 2.7. Редактирование параметров графика

В одном из следующих диалогов можно ввести название графика в целом (рис. 2.8). Разберитесь самостоятельно с эффектами от применения других элементов диалога.

Рис. 2.8. Почти готово... Однако созданная модель еще нуждается в некотором улучшении

2.3. Усовершенствование графика

Чтобы отредактировать свойства осей графика, нужно щелкнуть правой клавишей мыши прямо на оси (это может быть нелегко; иногда приходится совершить несколько попыток, пока появится такое контекстное меню, как на рис. 2.9).

Рис. 2.9. Внешний вид готовой модели

В диалоге «Формат осі» перейдите к первой вкладке («Масштаб»). Там можно изменить отражаемый диапазон (сняв отметку «Автоматичний»). Попробуйте перестроить шкалу в логарифмическом масштабе, поставив соответствующую отметку, как это показано на рис. 2.10. Как изменится вид графика? Как это объяснить?

Рис. 2.10. Открыт диалог редактирования свойств оси графика

Остался последний шаг. Чтобы моделью можно было пользоваться, надо добавить в нее необходимые пояснения. Выделим все ячейки, занятые моделью. Возьмемся курсором за боковой край блока и потянем его (рис. 2.11). Освободим пару строк для подписи.

Рис. 2.11. Перемещение блока ячеек

Выделим ячейки двух верхних строк, в которых мы разместим пояснение. Объединим их в одно целое («Формат/Об'єднання комірок/Об'єднати і центрувати комірки»). Введем в получившуюся ячейку пояснение, которое должно объяснить, что именно и как моделируется на этом листе. Если надпись не помещается в одну строку, следует щелкнуть правой клавишей мыши на объединенной ячейке, чтобы вызвать контекстное меню, в котором выбрать опцию «Формат комірок». На вкладке «Вирівнювання» следует поставить флажок в ячейке «Переносити по словам». Надпись в ячейке примет аккуратный вид. Добавим еще пару косметических изменений, отраженных на рис. 2.12 (разберитесь, как это делать!).

Рис. 2.12. Окончательный вид модели

2.4. Промежуточные итоги

Обратите внимание, что в построенной нами модели видны четыре важнейших функциональных блока:
1. информационное поле с необходимыми пояснениями;
2. входные параметры;
3. система преобразований;
4. визуализация выходных параметров (график).

При доведении модели до «товарного» вида были использованы следующие возможности:
— подстрочный знак при обозначении N0;
— «растягивание» арифметической прогрессии;
— работа с простейшими формулами;
— «растягивание» формулы;
— использование абсолютной и автоматической адресации;
— построение и редактирование графика;
— перетаскивание блоков;
— объединение ячеек;
— настройка переноса текста;
— расчерчивание границ между ячейками линиями, а также заливка ячеек цветом.

Получившуюся модель можно скачать на сайте, но лучше сделать ее самостоятельно.