Скачиваний:
22
Добавлен:
08.04.2022
Размер:
934.88 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра БТС

ОТЧЕТ по лабораторной работе №1

по дисциплине «МБПиС»

ТЕМА: МОДЕЛЬ ЛОТКИОЛЬТЕРРЫ

Студент гр. 7501

 

Исаков А.О.

Преподаватель

 

Скоробогатова А.И.

 

 

 

 

 

Санкт-Петербург

2020

Цели и задачи работы: необходимо написать программу с возможностью

интерактивного задания параметров модели.

Ход работы модели:

Задание параметров модели (alpha, beta, gamma, delta, c и d) в [0, 1], а

также x0 и y0 (начальные значения популяции).

Расчет значений функции F в зависимости от значений параметров.

Расчет численности. Решение дифференциальных уравнений.

Функция Matlab: ode45(F, [t0 tmax], [x0; y0])

Построение графика зависимости численности жертв и хищников от времени (x(t), y(t) и графика зависимости численности жертв от хищников y(x)). На графиках необходимо отметить точками x0 и y0.

Основные теоретические положения:

Классический случай:

{

̇= ( − )

, где

 

̇= (− + )

 

x – численность жертв (травоядных); y – численность хищников;

– вероятность того, что травоядные размножатся;

– вероятность того, что травоядное будет съедено;

– вероятность того, что хищник умрет от голода;

– вероятность того, что хищнику хватит еды на дальнейшее размножение.

Допущения:

Количество пищи для травоядных не ограничено;

Ни жертвы, ни хищники не эмигрируют из среды;

Никакие другие животные не мигрируют в среду;

Данная модель не учитывает вымирание животных по причине

старения и прочих внешних воздействий. 2

Рисунок 1 – Графики отношения численности популяции хищник/жертва относительно времени и друг друга

Учет миграции:

 

{

̇= ( − ) + ( )

, где

 

 

̇= (− + ) + ( )

 

1.

Постоянная миграция

 

 

( ) = ≥ 0 ( ) = ≥ 0,

 

2.

Непостоянная миграция

 

 

( ) =

 

( ) =

 

 

 

 

 

,

 

 

 

 

 

Рисунок 2 – Графики отношения численности популяции хищник/жертва относительно времени и друг друга c учетом миграции

3

Ход выполнения лабораторной работы

Программный код в App Designer:

classdef Laba_1 < matlab.apps.AppBase

% Properties that correspond to app components properties (Access = public)

UIFigure

matlab.ui.Figure

AlphaSliderLabel

matlab.ui.control.Label

AlphaSlider

matlab.ui.control.Slider

Button

matlab.ui.control.Button

BettaSliderLabel

matlab.ui.control.Label

BettaSlider

matlab.ui.control.Slider

GammaSliderLabel

matlab.ui.control.Label

GammaSlider

matlab.ui.control.Slider

DeltaSliderLabel

matlab.ui.control.Label

DeltaSlider

matlab.ui.control.Slider

Label

matlab.ui.control.Label

Slider

matlab.ui.control.Slider

Label_2

matlab.ui.control.Label

Slider_2

matlab.ui.control.Slider

X0SliderLabel

matlab.ui.control.Label

X0Slider

matlab.ui.control.Slider

Y0SliderLabel

matlab.ui.control.Label

Y0Slider

matlab.ui.control.Slider

UIAxes

matlab.ui.control.UIAxes

UIAxes2

matlab.ui.control.UIAxes

end

 

% Callbacks that handle component events methods (Access = private)

% Button pushed function: Button function ButtonPushed(app, event) a = app.AlphaSlider.Value;

b = app.BettaSlider.Value; g = app.GammaSlider.Value; d = app.DeltaSlider.Value; c = app.Slider.Value;

d1 = app.Slider_2.Value;

x0 = app.X0Slider.Value;

y0 = app.Y0Slider.Value;

if x0 == 0 x0 = 20;

set(app.X0Slider,"Value",20);

end

if y0 == 0 y0 = 30;

set(app.Y0Slider,"Value",30);

end

ode = @(time,state) [a*state(1) - b*state(1)*state(2)+c/state(1); -g*state(2) + d*state(1)*state(2)+d1/state(2)];

4

[time,state] = ode45(ode, [0 100], [x0 y0]); plot(app.UIAxes,time,state,0,x0,'r.',0,y0,'r.','MarkerSize',15); title(app.UIAxes,'Отношение популции хищник/жертва от времени') xlabel(app.UIAxes,'Время')

ylabel(app.UIAxes,'Числ. популяции') legend(app.UIAxes,'Жертвы','Хищники','Location','Northeast') app.UIAxes.XLim = [0 100];

app.UIAxes.XTick = 0:10:100;

plot(app.UIAxes2,state(:,1),state(:,2),0,y0,'r.',x0,0,'r.','MarkerSize',15) title(app.UIAxes2,'Зависимость популяции хищников от жертв') xlabel(app.UIAxes2,'Популяция жертв')

ylabel(app.UIAxes2,'Популция хищников')

end

end

% Component initialization methods (Access = private)

% Create UIFigure and components function createComponents(app)

%Create UIFigure and hide until all components are created app.UIFigure = uifigure('Visible', 'off'); app.UIFigure.Position = [100 100 866 670]; app.UIFigure.Name = 'MATLAB App';

%Create AlphaSliderLabel

app.AlphaSliderLabel = uilabel(app.UIFigure); app.AlphaSliderLabel.HorizontalAlignment = 'right'; app.AlphaSliderLabel.Position = [133 417 36 22]; app.AlphaSliderLabel.Text = 'Alpha';

% Create AlphaSlider

app.AlphaSlider = uislider(app.UIFigure); app.AlphaSlider.Limits = [0 1]; app.AlphaSlider.Position = [190 426 150 3];

% Create Button

app.Button = uibutton(app.UIFigure, 'push');

app.Button.ButtonPushedFcn = createCallbackFcn(app, @ButtonPushed, true); app.Button.Position = [689 351 100 22];

app.Button.Text = 'Пересчитать';

%Create BettaSliderLabel app.BettaSliderLabel = uilabel(app.UIFigure);

app.BettaSliderLabel.HorizontalAlignment = 'right'; app.BettaSliderLabel.Position = [133 361 34 22]; app.BettaSliderLabel.Text = 'Betta';

%Create BettaSlider

app.BettaSlider = uislider(app.UIFigure); app.BettaSlider.Limits = [0 1]; app.BettaSlider.Position = [188 370 150 3];

%Create GammaSliderLabel app.GammaSliderLabel = uilabel(app.UIFigure);

app.GammaSliderLabel.HorizontalAlignment = 'right'; app.GammaSliderLabel.Position = [120 308 48 22]; app.GammaSliderLabel.Text = 'Gamma';

%Create GammaSlider

app.GammaSlider = uislider(app.UIFigure); app.GammaSlider.Limits = [0 1];

5

app.GammaSlider.Position = [189 317 150 3];

%Create DeltaSliderLabel app.DeltaSliderLabel = uilabel(app.UIFigure);

app.DeltaSliderLabel.HorizontalAlignment = 'right'; app.DeltaSliderLabel.Position = [135 256 34 22]; app.DeltaSliderLabel.Text = 'Delta';

%Create DeltaSlider

app.DeltaSlider = uislider(app.UIFigure); app.DeltaSlider.Limits = [0 1]; app.DeltaSlider.Position = [190 265 150 3]; % Create Label

app.Label = uilabel(app.UIFigure); app.Label.HorizontalAlignment = 'right'; app.Label.Position = [388 361 95 22]; app.Label.Text = 'Мигр. травоядн.';

% Create Slider

app.Slider = uislider(app.UIFigure); app.Slider.Limits = [0 1]; app.Slider.Position = [504 370 150 3]; % Create Label_2

app.Label_2 = uilabel(app.UIFigure); app.Label_2.HorizontalAlignment = 'right'; app.Label_2.Position = [389 308 95 22]; app.Label_2.Text = 'Миграция хищн.';

% Create Slider_2

app.Slider_2 = uislider(app.UIFigure); app.Slider_2.Limits = [0 1]; app.Slider_2.Position = [505 317 150 3]; % Create X0SliderLabel

app.X0SliderLabel = uilabel(app.UIFigure); app.X0SliderLabel.HorizontalAlignment = 'right'; app.X0SliderLabel.Position = [353 256 25 22]; app.X0SliderLabel.Text = 'X0';

% Create X0Slider

app.X0Slider = uislider(app.UIFigure); app.X0Slider.Position = [399 265 150 3]; % Create Y0SliderLabel

app.Y0SliderLabel = uilabel(app.UIFigure); app.Y0SliderLabel.HorizontalAlignment = 'right'; app.Y0SliderLabel.Position = [582 256 25 22]; app.Y0SliderLabel.Text = 'Y0';

% Create Y0Slider

app.Y0Slider = uislider(app.UIFigure); app.Y0Slider.Position = [628 265 150 3]; % Create UIAxes

app.UIAxes = uiaxes(app.UIFigure); title(app.UIAxes, 'X и Y от t') xlabel(app.UIAxes, 'X') ylabel(app.UIAxes, 'Y')

app.UIAxes.PlotBoxAspectRatio = [1.93251533742331 1 1]; app.UIAxes.Position = [78 463 309 208];

% Create UIAxes2

app.UIAxes2 = uiaxes(app.UIFigure); title(app.UIAxes2, 'X от Y') xlabel(app.UIAxes2, 'X')

6

ylabel(app.UIAxes2, 'Y')

app.UIAxes2.Position = [469 407 305 251];

%Show the figure after all components are created app.UIFigure.Visible = 'on';

end end

%App creation and deletion

methods (Access = public)

%Construct app function app = Laba_1

%Create UIFigure and components createComponents(app)

%Register the app with App Designer registerApp(app, app.UIFigure)

if nargout == 0 clear app

end end

%Code that executes before app deletion function delete(app)

%Delete UIFigure when app is deleted delete(app.UIFigure)

end end end

7

Результат работы программы:

Рисунок 3 – Модель Лотки-Вольтерры при = 0,36; = 0,42; =

0,72; = 0,34;

Рисунок 4 – Модель Лотки-Вольтерры при = 0,36; = 0,41; =

0,71; = 0,32;

8

Рисунок 5 – Экспоненциальное вымирание хищников (при отсутствии жертв)

Рисунок 6 – Экспоненциальный рост жертв (при отсутствии хищников)

9

Рисунок 7 – Модель Лотки-Вольтерры при = 0,41; = 0,13; =

0,78; = 0,17;

Рисунок 8 – Модель Лотки-Вольтерры при = 0,45; = 1; = 0,81; =

0,14;

10

Соседние файлы в папке Лаба 1