Оценить:
 Рейтинг: 0

Математические модели в естественнонаучном образовании. Том I

Год написания книги
2022
Теги
<< 1 ... 16 17 18 19 20 21 22 23 24 ... 50 >>
На страницу:
20 из 50
Настройки чтения
Размер шрифта
Высота строк
Поля

% longterm.m

fun = @(x,r) x + r*x*(1-x);

x0 = .99; a0 = 0; a1 = 3; N = 777; preL = 200; L = 100;

mat = bifur(fun,x0,a0,a1,N,preL,L);

function mat = bifur(fun,x0,a0,a1,N,preL,L,p_siz)

% –

% Функция bifur: строит однопараметрическую диаграмму бифуркаций

% Вход: fun = некоторая функция @(x,para)

%        x0 = стартовое значение для x

%        a0 = начальное значение параметра a

%        a1 = конечное значение параметра a

%         N = количество интервалов для параметра 'a' на отрезке [a0;a1]

%      preL = количество предварительно пропускаемых итераций для

%             преодоления переходного процесса перед стабилизацией

%         L = количество итераций для каждой начальной пары

%               от (x0,параметр a)

%        p_siz = размер маркера, по умолчанию 1

% Выход: mat = бифукационная матрица размера N на L

%               которая хранит последовательность длины L

%               для каждой пары (x0, параметр a)

% –

% установки по умолчанию

if ~exist('p_siz','var')

p_siz = 1;

end

% инициализация

mat = zeros(N,L);

a = linspace(a0,a1,N);

% основной цикл

format long

for i = 1:N

ca = a(i); % выбрать одно значение параметра в каждый момент времени

for j = 1:L % сгенерировать последовательность длиной L

if j == 1

pre = x0; % инициализируем стартовое значение

for k = 1:preL % пропускаем значения переходного процесса

nxt = fun(pre,ca);

pre = nxt;

end

end

nxt = fun(pre,ca); % вычисляем следующее значение последовательности

mat(i,j) = nxt; % сохраняем в результирующей матрице mat

pre = nxt; % последнее значение будет начальным для следующей итерации

end

end

% построение графика

dcolor = [0,0,1]; % настройка цвета маркера: синий

[r,c] = meshgrid(1:L,a); % наполяем сетку данных координат

surf(r,c,mat,'Marker','*','MarkerSize',p_siz,'FaceColor','None','MarkerEdgeColor', dcolor,'EdgeColor','None')

view([90,0,0]) % фиксируем направление камеры
<< 1 ... 16 17 18 19 20 21 22 23 24 ... 50 >>
На страницу:
20 из 50