Цель работы: при помощи пакета прикладных программ “Matlab” промоделировать модель хищник-жертва Лотки-Вольтерра.
Постановка задачи: исследование влияния коэффициентов, отражающих взаимодействия между видами. Продемонстрировать на построенных графиках.
Краткие теоретические сведения
Рассмотрим сообщество, состоящее из двух видов, один из которых — хищник, другой — жертва.
— численность жертвы.
— численность хищника.
Сформулируем основные положения модели:
Два вида (хищник и жертва) существуют изолированно на ограниченной территории (другие виды не оказывают влияния на их численность).
В отсутствие хищникажертва развивается по мальтусовскому закону роста. α— коэффициент прироста жертвы в отсутствие хищника;
β – коэффициент убыли жертв при встрече с хищниками.
Хищник питается только жертвой. В отсутствие жертвы он развивается по экспоненциальному закону гибели, при этом коэффициент убыли хищника — γ.
Поедание жертвыхищником пропорционально численности жертвы (один хищник поедает в единицу времени количество жертв, пропорциональное численности жертв, а общее количество жертв, поедаемых в единицу времени будет пропорционально произведению численности жертв и численности хищников).
δ – коэффициент, отображающий зависимость от частоты встреч хищников и жертв, заканчивающихся трапезой хищников.
Тогда скорость изменения численности жертв описывается уравнением: .
А изменение численности популяции хищников характеризуется следующим уравнением: .
Составим систему уравнений (1), описывающую динамику численности:
— классическая модель "хищник-жертва" (модель Лотка-Вольтерра). Получена задача Коши, в решении которой нам помогут специальные функции в “Matlab”.
Теоретические сведения по “Matlab”
Основные преимущества “Matlab”, выгодно выделяющие ее среди существующих ныне математических систем и пакетов (MathCad, Mathematica и др.), заключаются в следующем:
система “Matlab” специально создана для проведения именно инженерных расчетов: математический аппарат, используемый ею, предельно приближен к современному математическому аппарату инженера и ученого и опирается на вычисления с матрицами, векторами и комплексными числами; графическое представление функциональных зависимостей здесь организовано в форме, требуемой именно инженерной документацией;
язык программирования системы “Matlab” очень прост, посилен любому начинающему; он содержит всего несколько десятков операторов; незначительное количество операторов здесь компенсируется большим числом процедур и функций, смысл которых понятен пользователю с соответствующей математической и инженерной подготовкой;
в отличие от большинства математических систем, “Matlab” является открытой системой; это означает, что практически все процедуры и функции “Matlab” доступны не только для использования, но и для коррекции и модификации; “Matlab” - система, которую пользователь может расширять по своему усмотрению созданными им программами и процедурами (подпрограммами); ее легко приспособить к решению нужных классов задач;
последние версии “Matlab” позволяют легко интегрировать ее с текстовым редактором Word, что дает возможность использовать при составлении текстовых документов вычислительные и графические средства “Matlab”.
Опишем те функции и возможности “Matlab”, которыми воспользовались при реализации модели хищник-жертва Лотки-Вольтерра.
Поскольку мы будем выполнять одну последовательность операций несколько раз и отличаться будут только значения коэффициентов,целесообразно создать файл-функцию(M-файл), а потом вызывать его при необходимости.
M-файлы являются обычными текстовыми файлами, которые создаются с помощью текстового редактора. Для операционной среды персонального компьютера система MATLAB поддерживает специальный встроенный редактор/отладчик, хотя можно использовать и любой другой текстовый редактор с ASCII-кодами.
Открыть редактор можно двумя способами:
из меню File выбрать опцию New, а затем M-File.
использовать команду редактирования edit.
М-функции являются M-файлами, которые допускают наличие входных и выходных аргументов. Они работают с переменными в пределах собственной рабочей области, отличной от рабочей области системы MATLAB.
Также нам потребуется команда global. Она объявляет переменные глобальными и. следовательно, доступными в функции. Таким образом, они могут быть изменены из командной строки, а новые решения будут получены без редактирования М-файла. Для работы с глобальнымипеременными необходимо:
объявить переменную как глобальную в каждой̆ М-функции, в которых необходима эта переменная. Для того чтобы переменная рабочей области была глобальной, необходимо объявить ее как глобальную из командной строки;
в каждой функции использовать команду global перед первым появлением переменной; (рекомендуется указывать команду global в начале M-файла).
Для изображения нескольких графиков на одном рисунке нам потребуется команда hold.
Описание:
Команда hold on включает режим сохранения текущего графика и свойств объекта axes, так что последующие команды приведут к добавлению новых графиков в графическом окне.
Команда hold off выключает режим сохранения графика.
Команда hold реализует переключение от одного режима к другому.
Для решения система дифференциальных уравнений воспользуемся специальной встроенной функцией ode23:
Синтаксис:
[t, X] = ode23(‘‘, t0, tf, x0)
Функция ode23 предназначена для численного интегрирования систем ОДУ. Она применима как для решения простых дифференциальных уравнений, так и для моделирования сложных динамических систем (что пригодится в нашем случае).
Любая система нелинейных ОДУ может быть представлена как система дифференциальных уравнений 1-го порядка в явной форме Коши:
dx/dt=f(x,t),
где x - вектор состояния; t - время; f - нелинейная вектор-функция от переменных x, t.
Функция [t, X] = ode23(‘‘, t0, tf, x0, tol, trace) интегрирует системы ОДУ, используя формулы Рунге - Кутты соответственно 2-го и 3-го или 4-го и 5-го порядка.
Эта функция имеют следующие параметры:
‘‘ - строковая переменная, являющаяся именем М-файла, в котором вычисляются правые части системы ОДУ;
t0 - начальное значение времени; tfinal - конечное значение времени; (можно задать интервалом);
x0 - вектор начальных условий;
Выходные параметры:
t - текущее время;
X - двумерный массив, где каждый столбец соответствует одной переменной.
tol - задаваемая точность; по умолчанию для ode23 tol = 1.e-3, для ode45 tol = 1.e-6);trace - флаг, регулирующий вывод промежуточных результатов; по умолчанию равен нулю, что подавляет вывод промежуточных результатов;
Ход выполнения работы
Исследуем влияние начальных условий для модели хищник-жертва, описываемой уравнениями Лотке-Вольтерра:
Создадим M-файл lotka.m:
function yr = lotka(t, y)
%LOTKA уравнения Лотки-Вольтерра для модели хищник-жертва
global alpha beta gamma delta
yr = [alpha*y(1) - beta*y(1)*y(2); -gamma*y(2) + delta*y(1)*y(2)];
Сохраним его в любой удобной для нас папке. При вызове файла он будет найден.
global alpha beta gamma delta
alpha = 4;
beta = 2.5;
gamma = 2;
delta = 1 ;
[t,y] = ode23('lotka',[0 30],[100;100]);
plot(t,y)
Задав начальные значения для коэффициентов и начальную численность (по 100 каждого вида), строится график на промежутке времени от 0до 30.
Результат получен и приведен на рис.1. Ось ОУ – численность, ось ОХ – единицы времени.
Рис. 1. Зависимость числа хищников (синяя линия) и жертв (зеленая линия) от времени.
Теперь построим фазовый портрет при помощи следующего набора команд.
>> global alpha beta gamma delta
alpha = 0.04;
beta = 0.025;
gamma = 0.2;
delta = 0.1 ;
[t,y] = ode23('lotka',[0 10],[50;40],opt);
hold on
global alpha beta gamma delta
alpha = 0.04;
beta = 0.025;
gamma = 0.2;
delta = 0.1 ;
[t,y] = ode23('lotka',[0 10],[50;45],opt);
global alpha beta gamma delta
alpha = 0.04;
beta = 0.025;
gamma = 0.2;
delta = 0.1 ;
[t,y] = ode23('lotka',[0 10],[50;48],opt);
global alpha beta gamma delta
alpha = 0.04;
beta = 0.025;
gamma = 0.2;
delta = 0.1 ;
[t,y] = ode23('lotka',[0 10],[50;50],opt);
В результате получили график, показанный на Рис. 2.
Рис. 2. Зависимость числа хищников от числа жертв при различных начальных условиях.
Полученная зависимость согласуется с экспериментальными данными. Однако модель является неустойчивой: при скачкообразном изменении числа особей в одной из популяций (например, из-за миграции животных, деятельности человека или иных причин, не учтенных в модели) колебания навсегда изменят свой характер, система перейдет с одной фазовой траектории на другую. Кроме того, особая точка типа центр не является грубой, то есть при введении в модель даже малых поправок, она может изменить свой характер.
Выводы
В публикации представлена лабораторная работа по реализации модель «хищник-жертва» (модель Лотки-Вольтерра) с различными параметрами в пакете прикладных программ MATLAB.
Для получения наглядной демонстрации связи численности двух популяций, одна из которых охотится на другую, использованы графические возможности пакета Matlab.
Кроме того, в ходе выполнения работы студенты изучают следующие возможности Matlab: объявление глобальных переменных, использование М-файлов (М-функций), построение нескольких графиков на одном рисунке.
Список источников и литературы
1. В.Н.Ашихмин, М.Б.Гитман и др.Введение в математическое моделирование: Учеб.пособие. – М.:Логос, 2005. – 440с.
Ю.Ю.Тарасевич Математическое и компьютерное моделирование Вводный курс: Учебное пособие. - М.: Едиториал УРРС, 2002. – 144с.
Дьяконов, В. П. MATLAB 7.*/R2006/R2007. ДМК Пресс, 2008. - 767 с
Кетков, Ю. Л. Matlab 7: программирование, численные методы. БХВ-Петербург, 2005. - 752 с.