Implementación de diagramas de bifurcación para los mapas de tienda de campaña y Hénon en MATLAB

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

Etiquetas: matlab mapas caóticos diagramas de bifurcación mapa de tienda de campaña mapa de Hénon

Publicado el 6-10 06:25