es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ajuste de una EDO de segundo orden IVP para incluir parámetros.

Estoy escribiendo un código basado en dos vehículos que se mueven a la misma velocidad, donde uno es el líder y el otro el seguidor. Están separados por 500 pies y la longitud promedio del vehículo es de 15 pies. Ambos se mueven inicialmente a una velocidad de 30 mph antes de que el automóvil líder desacelere a 3 mi/s^2 antes de detenerse por completo.
La ODE de segundo orden dada es:

(xfc – xlc)* (d^2xfc/dt^2) + k* (dxfc/dt) – k*v_lc = 0

dxfc/dt = vfc = v_fco

xfc(t=0) = xfco
Condiciones Iniciales

Velocidad de los vehículos

v_lc = 30

v_fc = 30

Desaceleración de lc

da_lc = -3 #mi/s^2
v_lc1 = 0

Constante de sensibilidad, k (mph)

k = 17

Distancia desde el frente del vehículo líder hasta el frente del vehículo seguidor, d (ft)

d = 500

Longitud promedio del vehículo, x (ft)

x = 15

¿Cómo puedo utilizar esto para incluir la distancia entre los dos vehículos y la desaceleración del vehículo líder?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para incluir la distancia entre los dos autos y la desaceleración del auto líder en la ecuación diferencial de segundo orden proporcionada, necesitamos modificar la ecuación de la siguiente manera:

    [(x_fc – x_lc – d – x)* (d^2x_fc/dt^2)] + k* [(dx_fc/dt) – v_lc – (da_lc*t)] = 0
    donde:
    – x_fc: distancia desde el comienzo al frente del auto que sigue
    – x_lc: distancia desde el comienzo al frente del auto líder
    – d: distancia entre el frente del auto líder y el del auto seguidor
    – x: largo promedio de los autos
    – t: tiempo
    – v_fc: velocidad del auto seguidor
    – v_lc: velocidad del auto líder
    – da_lc: desaceleración del auto líder
    – k: constante de sensibilidad

    Para implementar esta ecuación en Python, podemos definir una función que tome el tiempo y la posición como entradas y devuelva la velocidad y la aceleración calculadas usando la ecuación mencionada anteriormente. Luego podemos utilizar la función solve_ivp del módulo scipy.integrate para resolver la posición y velocidad del auto seguidor a lo largo del tiempo. Aquí hay un ejemplo de implementación:

    import numpy as np
    from scipy.integrate import solve_ivp

    Parámetros constantes

    v_lc = 30 # Velocidad del auto líder
    v_fco = 30 # Velocidad inicial del auto seguidor
    da_lc = -3 # Desaceleración del auto líder (m/s^2)
    k = 17 # Constante de sensibilidad (mph)
    d = 500 # Distancia entre el auto líder y el seguidor (ft)
    x = 15 # Largo promedio de los autos (ft)

    def dxf_dt(t, y):
    x_fc = y[0]
    v_fc = y[1]
    dx_fc = v_fc
    dv_fc = ((k(v_lc – v_fc – da_lct))/(x_fc – d – x)) / (d**2)
    return [dx_fc, dv_fc]

    Resuelve la posición y velocidad del auto seguidor a lo largo del tiempo

    time_span = np.linspace(0, 20, 100)
    initial_conditions = [0, v_fco]
    solution = solve_ivp(dxf_dt, [0, 20], initial_conditions, t_eval=time_span)

    Grafica los resultados

    import matplotlib.pyplot as plt
    plt.figure()
    plt.plot(solution.t, solution.y[0])
    plt.xlabel(‘Tiempo (s)’)
    plt.ylabel(‘Posición del auto seguidor (ft)’)
    plt.show()

    Este código simula la posición del auto seguidor a lo largo del tiempo, dada su velocidad inicial y la desaceleración del auto líder. El cálculo se realiza utilizando la ecuación diferencial de segundo orden mencionada anteriormente. La salida se grafica utilizando matplotlib.

Comments are closed.