Este artículo presenta la implementación computacional para generar diagramas de bifurcación de dos sistemas dinámicos caóticos clásicos: el mapa de tienda de campaña y el mapa de Hénon, utilizando MATLAB. Se proporcionan los códigos necesarios, junto con una explicación de los parámetros y la interpretación de los resultados.
Generación del diagrama de bifurcación del mapa de tienda de campaña
El mapa de tienda de campaña es un sistema unidimensional que exhibe comportamiento caótico. Su ecuación iterativa es:
%% Diagrama de bifurcación - Mapa de tienda
clear all; close all; clc;
% Definición de parámetros
param_range = linspace(0, 1, 1000); % Valores del parámetro de control
initial_value = 0.1; % Condición inicial
total_iterations = 1000; % Iteraciones totales por punto
transient_iter = 200; % Iteraciones descartadas (transitorio)
% Preparación de la figura
figure; hold on;
grid on;
xlabel('Parámetro de control'); ylabel('Valor de x_n');
title('Diagrama de bifurcación del mapa de tienda de campaña');
% Bucle principal para cada valor del parámetro
for idx = 1:length(param_range)
current_param = param_range(idx);
state = initial_value;
% Fase de transitorio - descartamos los primeros valores
for count = 1:transient_iter
state = current_param - (1 + current_param) * abs(state);
end
% Recolección de la serie temporal estable
stable_series = zeros(1, total_iterations);
for step = 1:total_iterations
state = current_param - (1 + current_param) * abs(state);
stable_series(step) = state;
end
% Representación gráfica de los puntos
plot(repmat(current_param, 1, total_iterations), stable_series, ...
'.', 'MarkerSize', 0.5, 'Color', [0.3 0.3 0.3]);
end
hold off;
Comportamiento observado: Para valores del parámetro en el intervalo [0, 1], el sistema transiciona desde un punto fijo estable hacia regiones periódicas mediante duplicaciones de periodo, alcanzando un régimen predominantemente caótico aproximadamente en el rango [0.99, 1.0].
Diagrama de bifurcación del mapa de Hénon
El mapa de Hénon es un sistema bidimensional definido por un par de ecuaciones. El siguiente código genera su diagrama variando el parámetro a con b fijo.
%% Diagrama de bifurcación - Mapa de Hénon
clear all; close all; clc;
% Configuración de parámetros
control_param = linspace(0.2, 1.4, 800); % Rango del parámetro 'a'
fixed_param_b = 0.3; % Valor constante del parámetro 'b'
initial_cond = [0.1, 0]; % Vector de condiciones iniciales (x, y)
iter_count = 1000; % Número de iteraciones por parámetro
skip_initial = 100; % Iteraciones iniciales a omitir
% Inicialización del gráfico
figure; hold on;
xlabel('Parámetro a'); ylabel('Coordenada x_n');
title('Diagrama de bifurcación del mapa de Hénon (b=0.3)');
set(gca, 'FontSize', 11);
% Recorrido sobre el rango del parámetro 'a'
for k = 1:length(control_param)
a_val = control_param(k);
x_curr = initial_cond(1);
y_curr = fixed_param_b * x_curr; % Inicialización consistente
% Evolución del sistema descartando el transitorio
for t = 1:skip_initial
x_next = 1 - a_val * x_curr^2 + y_curr;
y_next = fixed_param_b * x_curr;
x_curr = x_next;
y_curr = y_next;
end
% Almacenamiento de la órbita estable
orbit_data = zeros(1, iter_count);
for t = 1:iter_count
x_next = 1 - a_val * x_curr^2 + y_curr;
y_next = fixed_param_b * x_curr;
x_curr = x_next;
y_curr = y_next;
orbit_data(t) = x_curr;
end
% Graficar los valores de x en estado estable
scatter(repmat(a_val, 1, iter_count), orbit_data, 0.1, 'filled', ...
'MarkerFaceColor', [0.1 0.5 0.8], 'MarkerFaceAlpha', 0.3);
end
hold off;
Resultados clave: Para el valor típico b=0.3, el sistema muestra transiciones a periodos mayores para a < 1.07, minetras que para a > 1.07 emergen estructuras de atractor caótico. El caso a=1.4 produce el conocido atractor de Hénon con estructura fractal.
Versión mejorada con mapeo de color
Para una visualización más informativa, se puede colorear cada punto según el valor del parámetro de control.
%% Diagrama de bifurcación con mapeo de color
clear all; close all; clc;
% Parámetros del modelo Hénon
a_values = 0.2:0.0005:1.4; % Resolución más fina
b_const = 0.3;
x0 = 0.1; y0 = b_const * x0;
iter_stable = 500;
skip_trans = 100;
% Crear figura con mapa de color
fig = figure;
cmap = parula(length(a_values));
hold on;
colormap(parula);
cb = colorbar('Location', 'eastoutside');
ylabel(cb, 'Valor del parámetro a');
% Ejecución de la simulación
for i = 1:length(a_values)
a_param = a_values(i);
x = x0; y = y0;
% Descartar transitorio
for j = 1:skip_trans
[x, y] = henon_step(x, y, a_param, b_const);
end
% Recolectar órbita estable
stable_x = zeros(1, iter_stable);
for j = 1:iter_stable
[x, y] = henon_step(x, y, a_param, b_const);
stable_x(j) = x;
end
% Dibujar puntos con color codificado
plot(repmat(a_param, 1, iter_stable), stable_x, '.', ...
'Color', cmap(i, :), 'MarkerSize', 0.8);
end
% Función auxiliar para el paso del mapa
function [x_next, y_next] = henon_step(x_curr, y_curr, a, b)
x_next = 1 - a * x_curr^2 + y_curr;
y_next = b * x_curr;
end
Tabla de parámetros y rangos típicos
| Parámetro | Rango - Mapa Tienda | Rango - Mapa Hénon | Función en el sistema |
|---|---|---|---|
a |
0 a 1 | 0.2 a 1.4 | Controla la no-linealidad y el grado de estiramiento-plegamiento |
b |
No aplica | 0.3 (valor clásico) | Factor de contracción en la dimensión transversal |
N_skip |
100-200 | 100-200 | Número de iteraciones para alcanzar la dinámica estable |
N |
500-1000 | 500-1000 | Puntos de muestreo en el régimen asintótico |
Técnicas de optimización en MATLAB
Asignación de memoria precomputada: Preasignar vectores mejora significativamente el rendimiento:
% Ejemplo de asignación eficiente
result_vector = zeros(1, num_points); % Preasignación
for k = 1:num_points
% Cálculo iterativo...
result_vector(k) = computed_value;
end
Visualización interactiva: Utilizar controles gráficos permite explorar el espacio de parámetros en tiempo real:
% Crear control deslizante para el parámetro
slider_control = uicontrol('Style', 'slider', ...
'Min', 0.2, 'Max', 1.4, 'Value', 0.8, ...
'Units', 'normalized', 'Position', [0.1 0.02 0.3 0.03], ...
'Callback', @(src, ~) update_diagram(src.Value));
Extensiones y aplicaciones
Los diagramas de bifurcación permiten:
- Iddentificar regiones de estabilidad, periodicidad y caos en sistemas dinámicos
- Seleccionar parámetros óptimos para aplicaciones en comunicaciones caóticas
- Analizar la sensibilidad a condiciones iniciales, fundamental en criptografía basada en caos
- Estudiar la aparición de estructuras fractales en los atractores extraños