import numpy as np
import matplotlib.pyplot as plt
# Datos del problema
m = 4.5 # masa en Ton.s²/m
k = 9500 # rigidez en Ton/m
omega_n = np.sqrt(k / m) # Frecuencia natural en rad/s
# Condiciones iniciales para cada caso:
# Caso 1: u_0 = 0 cm, dot u_0 = 200 cm/s
A_1 = 0 # u_0 en metros
B_1 = 2 / omega_n # dot u_0 = 200 cm/s = 2 m/s
# Caso 2: u_0 = 10 cm, dot u_0 = 200 cm/s
A_2 = 0.1 # u_0 en metros (10 cm = 0.1 m)
B_2 = 2 / omega_n # dot u_0 = 2 m/s
# Caso 3: u_0 = 10 cm, dot u_0 = 0 cm/s
A_3 = 0.1 # u_0 en metros
B_3 = 0 # dot u_0 = 0 m/s
# Definimos el tiempo de 0 a 5 segundos (500 puntos)
t = np.linspace(0, 5, 500)
# Respuesta u(t) para cada caso
u_1 = A_1 * np.cos(omega_n * t) + B_1 * np.sin(omega_n * t)
u_2 = A_2 * np.cos(omega_n * t) + B_2 * np.sin(omega_n * t)
u_3 = A_3 * np.cos(omega_n * t) + B_3 * np.sin(omega_n * t)
# Crear la gráfica
plt.figure(figsize=(10, 6))
# Graficamos u(t) para cada caso
plt.plot(t, u_1, label='Caso 1: u_0=0, dot u_0=200 cm/s', color='r')
plt.plot(t, u_2, label='Caso 2: u_0=10 cm, dot u_0=200 cm/s', color='g')
plt.plot(t, u_3, label='Caso 3: u_0=10 cm, dot u_0=0 cm/s', color='b')
# Etiquetas y leyenda
plt.title('Respuesta de vibración libre para diferentes condiciones iniciales')
plt.xlabel('Tiempo [s]')
plt.ylabel('Desplazamiento u(t) [m]')
plt.legend()
plt.grid(True)
# Mostrar la gráfica
plt.show()
aW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBtYXRwbG90bGliLnB5cGxvdCBhcyBwbHQKCiMgRGF0b3MgZGVsIHByb2JsZW1hCm0gPSA0LjUgICMgbWFzYSBlbiBUb24uc8KyL20KayA9IDk1MDAgICMgcmlnaWRleiBlbiBUb24vbQpvbWVnYV9uID0gbnAuc3FydChrIC8gbSkgICMgRnJlY3VlbmNpYSBuYXR1cmFsIGVuIHJhZC9zCgojIENvbmRpY2lvbmVzIGluaWNpYWxlcyBwYXJhIGNhZGEgY2FzbzoKIyBDYXNvIDE6IHVfMCA9IDAgY20sIGRvdCB1XzAgPSAyMDAgY20vcwpBXzEgPSAwICAjIHVfMCBlbiBtZXRyb3MKQl8xID0gMiAvIG9tZWdhX24gICMgZG90IHVfMCA9IDIwMCBjbS9zID0gMiBtL3MKCiMgQ2FzbyAyOiB1XzAgPSAxMCBjbSwgZG90IHVfMCA9IDIwMCBjbS9zCkFfMiA9IDAuMSAgIyB1XzAgZW4gbWV0cm9zICgxMCBjbSA9IDAuMSBtKQpCXzIgPSAyIC8gb21lZ2FfbiAgIyBkb3QgdV8wID0gMiBtL3MKCiMgQ2FzbyAzOiB1XzAgPSAxMCBjbSwgZG90IHVfMCA9IDAgY20vcwpBXzMgPSAwLjEgICMgdV8wIGVuIG1ldHJvcwpCXzMgPSAwICAjIGRvdCB1XzAgPSAwIG0vcwoKIyBEZWZpbmltb3MgZWwgdGllbXBvIGRlIDAgYSA1IHNlZ3VuZG9zICg1MDAgcHVudG9zKQp0ID0gbnAubGluc3BhY2UoMCwgNSwgNTAwKQoKIyBSZXNwdWVzdGEgdSh0KSBwYXJhIGNhZGEgY2Fzbwp1XzEgPSBBXzEgKiBucC5jb3Mob21lZ2FfbiAqIHQpICsgQl8xICogbnAuc2luKG9tZWdhX24gKiB0KQp1XzIgPSBBXzIgKiBucC5jb3Mob21lZ2FfbiAqIHQpICsgQl8yICogbnAuc2luKG9tZWdhX24gKiB0KQp1XzMgPSBBXzMgKiBucC5jb3Mob21lZ2FfbiAqIHQpICsgQl8zICogbnAuc2luKG9tZWdhX24gKiB0KQoKIyBDcmVhciBsYSBncsOhZmljYQpwbHQuZmlndXJlKGZpZ3NpemU9KDEwLCA2KSkKCiMgR3JhZmljYW1vcyB1KHQpIHBhcmEgY2FkYSBjYXNvCnBsdC5wbG90KHQsIHVfMSwgbGFiZWw9J0Nhc28gMTogdV8wPTAsIGRvdCB1XzA9MjAwIGNtL3MnLCBjb2xvcj0ncicpCnBsdC5wbG90KHQsIHVfMiwgbGFiZWw9J0Nhc28gMjogdV8wPTEwIGNtLCBkb3QgdV8wPTIwMCBjbS9zJywgY29sb3I9J2cnKQpwbHQucGxvdCh0LCB1XzMsIGxhYmVsPSdDYXNvIDM6IHVfMD0xMCBjbSwgZG90IHVfMD0wIGNtL3MnLCBjb2xvcj0nYicpCgojIEV0aXF1ZXRhcyB5IGxleWVuZGEKcGx0LnRpdGxlKCdSZXNwdWVzdGEgZGUgdmlicmFjacOzbiBsaWJyZSBwYXJhIGRpZmVyZW50ZXMgY29uZGljaW9uZXMgaW5pY2lhbGVzJykKcGx0LnhsYWJlbCgnVGllbXBvIFtzXScpCnBsdC55bGFiZWwoJ0Rlc3BsYXphbWllbnRvIHUodCkgW21dJykKcGx0LmxlZ2VuZCgpCnBsdC5ncmlkKFRydWUpCgojIE1vc3RyYXIgbGEgZ3LDoWZpY2EKcGx0LnNob3coKQo=