Вход/Регистрация
Математические модели в естественнонаучном образовании
вернуться

Соломатин Денис

Шрифт:

disp ('чтобы задать границы изображения на графике:')

limits=input('(По умолчанию [pmin pmax]=[0 20]) [pmin pmax]= ');

if isempty(limits) limits=[0 20]; end;

pinc=(limits(2)-limits(1))/50;

x=limits(1):pinc:limits(2);

%

p=limits(1); y=eval (next_p);

for i=x(2):pinc:limits(2); % цикл для создания вектора значений P

p=i;

p=eval (next_p);

y=[y p];

end;

%

figure % настройка графика

plot(x,y,x,x)

axis([limits(1),limits(2),limits(1),limits(2)]);

xlabel ('P_t');

ylabel ('P_{t+1}');

title (['следующее\_p=',next_p]);

%

continueb=1; % логическое значение продолжения цикла

while continueb % цикл пока кнопку не нажали

[p,q,button]=ginput(1); % получить начальную численность

if button==1

%

plot (x,y,x,x); % построение графика

axis([limits(1),limits(2),limits(1),limits(2)]);

hold on

xlabel ('P_t');

ylabel ('P_{t+1}');

title (['следующее\_p=',next_p]);

%

for i=1:50; % цикл построения секций паутины

w=p;

p=eval (next_p);

plot([w,w],[w,p],'k','EraseMode','none'); % рисуем вертикальный фрагмент

pause(.1);

if p<0; break; end; % фильтрация отрицательных значений P

plot([w,p],[p,p],'k','EraseMode','none'); % рисуем горизонтальный фрагмент

pause(.1);

end;

hold off;

else continueb=0; % конец цикла

end

end

%

% cobweb2.m

%

% Паутинная диаграмма для моделирования одной популяции разностным уравнением.

%

% У пользователя запрашивается уравнение, определяющее модель. Затем по

% щелчку на начальной численности популяции на графике будет отображаться

% «паутина» будущих численностей популяции. Старые линии постепенно стираются

% с течением времени.

%

m=[];

s=16; % количество линий для рисования

p=0; % инициализируем начальное значение

% % численности популяции

disp (' ')

disp (' Введите формулу, определяющую модель популяции, используя "p" для')

disp ('обозначения численности: (По умолчанию: next_p = p+2.5*p*(1-p/10) ) ')

next_p=input ('next_p = ','s');

if isempty(next_p) next_p='p+2.5*p*(1-p/10)';

end;

p=eval (next_p); % проверяем корректна ли формула

%

disp (' ')

disp ('Введите верхний и нижний пределы P в момент времени t, чтобы задать')

disp ('границы изображения графика:')

plimits=input ('(По умолчанию [pmin pmax]=[0 20]) [pmin pmax]= ');

if isempty(plimits) plimits=[0 20]; end;

%

% Формируем данные для построения модели

pinc=(plimits(2)-plimits(1))/20; % устанавливает интервал между

% % соседними значениями

h=[plimits(1):pinc:plimits(2)];

for k=1:21; % цикл создания вектора значений

p=h(k);

p=eval (next_p);

m=[m p];

end;

% начало построения нового графика с изображением функции модели и диагональной линии

figure;

hold on;

axis([plimits plimits]);

curve=plot(h,m,'Color','b');

diag=plot(h,h,'Color','g');

xlabel ('P_t');

ylabel ('P_{t+1}');

title (['следующее\_p=',next_p] );

% создаём вектор фрагментов для ступенек

stephan=ones(1,2*s);

button=1;

% получаем начальное значение численности популяции от пользователя

disp(' ')

disp(' Щелкните левой кнопкой на начальном значении или правой, чтобы выйти.')

[p,x,button]=ginput(1);

%

while(button==1)

%

  • Читать дальше
  • 1
  • ...
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: