Добавил:
koba004
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ИДЗ / Лестница Ламиэля / Lamel_EZ
.m clear;
clc;
%% Параметры модели
lambda_min = 2.5; % минимальное значение параметра
lambda_max = 4.0; % максимальное значение параметра
num_lambda = 100; % количество точек по параметру
N = 400; % количество итераций
transient = 200; % длина переходного (транзиентного) участка
x0 = 0.5; % начальное состояние
% Массив значений параметра
lambda_values = linspace(lambda_min, lambda_max, num_lambda);
%% Основной цикл программы. Бифуркационная диаграмма
% Подготовка окна графика
figure ("Name", "Бифуркационная диаграмма ");
hold on;
for i = 1:num_lambda
lambda = lambda_values(i);
x = x0;
sum_log_deriv = 0; % накопитель для Lyapunov (сумма логов производной)
valid_lyap_count = 0;
for n = 1:N
% Главное логистическое уравнение
x = lambda * x * (1 - x);
df_dx = lambda * (1 - 2*x);
% Отбрасываем переходный процесс
if n > transient
plot(lambda, x, '.k', 'MarkerSize', 1);
% исключаем случаи df_dx == 0
if abs(df_dx) > 0
sum_log_deriv = sum_log_deriv + log(abs(df_dx));
valid_lyap_count = valid_lyap_count + 1;
end
end
end
% Lyapunov: среднее логарифма производной по стационарной части
if valid_lyap_count > 0
lyap(i) = sum_log_deriv / valid_lyap_count;
else
lyap(i) = NaN;
end
end
title('Бифуркационная диаграмма (лестница Ламерея)');
xlabel('\lambda');
ylabel('x');
grid on;
hold off;
%% Основной цикл программы. Диаграмма показателей Ляпунова
%Подготовка окна
figure ("Name", "Диаграмма показателей Ляпунова ")
plot(lambda_values, lyap, '-b', 'LineWidth', 1);
hold on;
yline(0,'--r','LineWidth',1);
xlabel('\lambda');
ylabel('\lambda Ляпунова');
title('Диаграмма показателей Ляпунова');
xlim([min(lambda_values) max(lambda_values)]);
grid on;
hold off;
%% Основной цикл программы. Примеры графиков
%Подготовка окна
figure ("Name", "Графики")
%График стабильного значения
subplot(3,1,1);
x=x0;
lambda = 2.5;
for n = 1:N
% Главное логистическое уравнение
x = lambda * x * (1 - x);
temp(n,1) = x;
temp(n,2) = n;
end
plot(temp(:,2), temp(:,1), '-b', 'LineWidth', 1);
hold on;
xlabel('n');
ylabel('X');
ylim([0.55, 0.65]);
title('Пример графика, \lambda = 2.5');
grid on;
hold off;
%График переходного значения (4 состояния)
subplot(3,1,2);
x=x0;
lambda = 3.45;
for n = 1:N
% Главное логистическое уравнение
x = lambda * x * (1 - x);
temp(n,1) = x;
temp(n,2) = n;
end
plot(temp(:,2), temp(:,1), '-b', 'LineWidth', 1);
hold on;
xlabel('n');
ylabel('X');
title('Пример графика, \lambda = 3.45');
grid on;
hold off;
%График хаоса
subplot(3,1,3);
x=x0;
lambda = 3.72;
for n = 1:N
% Главное логистическое уравнение
x = lambda * x * (1 - x);
temp(n,1) = x;
temp(n,2) = n;
end
plot(temp(:,2), temp(:,1), '-b', 'LineWidth', 1);
hold on;
xlabel('n');
ylabel('X');
title('Пример графика, \lambda = 3.72');
grid on;
hold off;
clc;
%% Параметры модели
lambda_min = 2.5; % минимальное значение параметра
lambda_max = 4.0; % максимальное значение параметра
num_lambda = 100; % количество точек по параметру
N = 400; % количество итераций
transient = 200; % длина переходного (транзиентного) участка
x0 = 0.5; % начальное состояние
% Массив значений параметра
lambda_values = linspace(lambda_min, lambda_max, num_lambda);
%% Основной цикл программы. Бифуркационная диаграмма
% Подготовка окна графика
figure ("Name", "Бифуркационная диаграмма ");
hold on;
for i = 1:num_lambda
lambda = lambda_values(i);
x = x0;
sum_log_deriv = 0; % накопитель для Lyapunov (сумма логов производной)
valid_lyap_count = 0;
for n = 1:N
% Главное логистическое уравнение
x = lambda * x * (1 - x);
df_dx = lambda * (1 - 2*x);
% Отбрасываем переходный процесс
if n > transient
plot(lambda, x, '.k', 'MarkerSize', 1);
% исключаем случаи df_dx == 0
if abs(df_dx) > 0
sum_log_deriv = sum_log_deriv + log(abs(df_dx));
valid_lyap_count = valid_lyap_count + 1;
end
end
end
% Lyapunov: среднее логарифма производной по стационарной части
if valid_lyap_count > 0
lyap(i) = sum_log_deriv / valid_lyap_count;
else
lyap(i) = NaN;
end
end
title('Бифуркационная диаграмма (лестница Ламерея)');
xlabel('\lambda');
ylabel('x');
grid on;
hold off;
%% Основной цикл программы. Диаграмма показателей Ляпунова
%Подготовка окна
figure ("Name", "Диаграмма показателей Ляпунова ")
plot(lambda_values, lyap, '-b', 'LineWidth', 1);
hold on;
yline(0,'--r','LineWidth',1);
xlabel('\lambda');
ylabel('\lambda Ляпунова');
title('Диаграмма показателей Ляпунова');
xlim([min(lambda_values) max(lambda_values)]);
grid on;
hold off;
%% Основной цикл программы. Примеры графиков
%Подготовка окна
figure ("Name", "Графики")
%График стабильного значения
subplot(3,1,1);
x=x0;
lambda = 2.5;
for n = 1:N
% Главное логистическое уравнение
x = lambda * x * (1 - x);
temp(n,1) = x;
temp(n,2) = n;
end
plot(temp(:,2), temp(:,1), '-b', 'LineWidth', 1);
hold on;
xlabel('n');
ylabel('X');
ylim([0.55, 0.65]);
title('Пример графика, \lambda = 2.5');
grid on;
hold off;
%График переходного значения (4 состояния)
subplot(3,1,2);
x=x0;
lambda = 3.45;
for n = 1:N
% Главное логистическое уравнение
x = lambda * x * (1 - x);
temp(n,1) = x;
temp(n,2) = n;
end
plot(temp(:,2), temp(:,1), '-b', 'LineWidth', 1);
hold on;
xlabel('n');
ylabel('X');
title('Пример графика, \lambda = 3.45');
grid on;
hold off;
%График хаоса
subplot(3,1,3);
x=x0;
lambda = 3.72;
for n = 1:N
% Главное логистическое уравнение
x = lambda * x * (1 - x);
temp(n,1) = x;
temp(n,2) = n;
end
plot(temp(:,2), temp(:,1), '-b', 'LineWidth', 1);
hold on;
xlabel('n');
ylabel('X');
title('Пример графика, \lambda = 3.72');
grid on;
hold off;
Соседние файлы в папке Лестница Ламиэля
