Análisis del Plano de Fase del Ángulo de Deslizamiento Lateral y su Velocidad

El plano de fase que relaciona el ángulo de deslizamiento lateral del centro de gravedad (β) con su velocidad temporal (β̇) es una herramienta fundamental en el análisis dinámico de vehículos. Permite visualizar la evolución de los estados del sistema y evaluar su estabilidad.

Implementación del Plano de Fase

El siguiente código en Python genera un ejemplo simpilficado del plano de fase utilizando datos sintéticos.

import numpy as np
import matplotlib.pyplot as plt

# Generación de datos de ejemplo
beta_values = np.linspace(-0.7, 0.7, 150)
beta_dot = -0.5 * beta_values + 0.1 * np.sin(3 * beta_values)

# Configuración y dibujo del gráfico
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(beta_values, beta_dot, 'b-', linewidth=1.5)
ax.set_xlabel(r'$\beta$ [rad]')
ax.set_ylabel(r'$\dot{\beta}$ [rad/s]')
ax.set_title('Plano de Fase: Ángulo vs. Velocidad de Deslizamiento Lateral')
ax.grid(True, alpha=0.3)
ax.axhline(0, color='black', linewidth=0.8)
ax.axvline(0, color='black', linewidth=0.8)
plt.show()

Iedntificación de Puntos de Silla

Los puntos de silla indican condiciones críticas de equilibrio inestable. Su localización requiere calcular las derivadas parciales del sistema dinámico.

def calcular_punto_silla(datos_beta, datos_beta_dot):
    # Encuentra el punto donde la curva cruza el eje con cambio de pendiente
    cruzamientos = []
    for i in range(1, len(datos_beta_dot)):
        if datos_beta_dot[i-1] * datos_beta_dot[i] < 0:
            cruzamientos.append(i)
    # Selecciona el primer cruce como aproximación
    idx = cruzamientos[0] if cruzamientos else len(datos_beta)//2
    return datos_beta[idx], datos_beta_dot[idx]

beta_s, beta_dot_s = calcular_punto_silla(beta_values, beta_dot)
ax.scatter(beta_s, beta_dot_s, color='red', s=100, zorder=5, label='Punto de Silla')
ax.legend()

Límites del Método de Línea Doble y Cálculo de Energías E1 y E2

El método de línea doble define regiones de operación segura. Las expresiones E1 y E2 representan invariantes energéticos del sistema.

# Definición de las funciones energéticas
def calcular_E1(beta, beta_dot):
    return 0.5 * beta_dot**2 + 0.2 * beta**2

def calcular_E2(beta, beta_dot):
    return beta_dot + 0.3 * beta

# Cálculo de los campos energéticos
campo_E1 = calcular_E1(beta_values, beta_dot)
campo_E2 = calcular_E2(beta_values, beta_dot)

# Ajuste de líneas frontera mediante mínimos cuadrados
coef_E1 = np.polyfit(beta_values, campo_E1, 2)
coef_E2 = np.polyfit(beta_values, campo_E2, 1)
polinomio_E1 = np.poly1d(coef_E1)
polinomio_E2 = np.poly1d(coef_E2)

ax.plot(beta_values, polinomio_E1(beta_values), '--', color='green',
        label='Límite E1 (Ajuste Cuadrático)')
ax.plot(beta_values, polinomio_E2(beta_values), '-.', color='orange',
        label='Límite E2 (Ajuste Lineal)')
ax.legend()

El análisis completo incluye el cálculo de pendientes en regiones clave y la visualización integrada de todas las componentes en una sola gráfica. Este enfoque proporciona una comprensión visual directa de la estabilidad del vehículo y sus límites operativos.

Etiquetas: vehicle-dynamics phase-plane stability-analysis Python numerical-methods

Publicado el 6-29 02:30