# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
# Parámetros del sistema
omega_n = 1 # Frecuencia natural
xi_values = [0, 0.1, 0.5, 1] # Diferentes valores de amortiguamiento
t = np.linspace(0, 20, 1000) # Tiempo para la simulación
# Función de la respuesta del sistema a una entrada rampa unitaria
def response_to_ramp(xi, t):
# Respuesta a la entrada rampa unitaria para un sistema de segundo orden
y = t - (2 * xi / omega_n) * (1 - np.exp(-xi * omega_n * t)) # Respuesta aproximada
return y
# Crear la gráfica
plt.figure(figsize=(10, 6))
# Graficar la respuesta para cada valor de amortiguamiento
for xi in xi_values:
y = response_to_ramp(xi, t)
# Usamos una etiqueta con "xi" en lugar del carácter griego "ξ" para evitar problemas con Unicode
plt.plot(t, y, label='Amortiguamiento: xi = {}'.format(xi))
# Configuración de la gráfica
plt.title('Respuesta de un sistema de segundo orden a una entrada rampa unitaria')
plt.xlabel('Tiempo (t)')
plt.ylabel('Respuesta del sistema (θ(t))')
plt.legend(loc='upper left')
plt.grid(True)
# Mostrar la gráfica
plt.show()
# your code goes here
IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KaW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBtYXRwbG90bGliLnB5cGxvdCBhcyBwbHQKCiMgUGFyw6FtZXRyb3MgZGVsIHNpc3RlbWEKb21lZ2FfbiA9IDEgICMgRnJlY3VlbmNpYSBuYXR1cmFsCnhpX3ZhbHVlcyA9IFswLCAwLjEsIDAuNSwgMV0gICMgRGlmZXJlbnRlcyB2YWxvcmVzIGRlIGFtb3J0aWd1YW1pZW50bwp0ID0gbnAubGluc3BhY2UoMCwgMjAsIDEwMDApICAjIFRpZW1wbyBwYXJhIGxhIHNpbXVsYWNpw7NuCgojIEZ1bmNpw7NuIGRlIGxhIHJlc3B1ZXN0YSBkZWwgc2lzdGVtYSBhIHVuYSBlbnRyYWRhIHJhbXBhIHVuaXRhcmlhCmRlZiByZXNwb25zZV90b19yYW1wKHhpLCB0KToKICAgICMgUmVzcHVlc3RhIGEgbGEgZW50cmFkYSByYW1wYSB1bml0YXJpYSBwYXJhIHVuIHNpc3RlbWEgZGUgc2VndW5kbyBvcmRlbgogICAgeSA9IHQgLSAoMiAqIHhpIC8gb21lZ2FfbikgKiAoMSAtIG5wLmV4cCgteGkgKiBvbWVnYV9uICogdCkpICAjIFJlc3B1ZXN0YSBhcHJveGltYWRhCiAgICByZXR1cm4geQoKIyBDcmVhciBsYSBncsOhZmljYQpwbHQuZmlndXJlKGZpZ3NpemU9KDEwLCA2KSkKCiMgR3JhZmljYXIgbGEgcmVzcHVlc3RhIHBhcmEgY2FkYSB2YWxvciBkZSBhbW9ydGlndWFtaWVudG8KZm9yIHhpIGluIHhpX3ZhbHVlczoKICAgIHkgPSByZXNwb25zZV90b19yYW1wKHhpLCB0KQogICAgIyBVc2Ftb3MgdW5hIGV0aXF1ZXRhIGNvbiAieGkiIGVuIGx1Z2FyIGRlbCBjYXLDoWN0ZXIgZ3JpZWdvICLOviIgcGFyYSBldml0YXIgcHJvYmxlbWFzIGNvbiBVbmljb2RlCiAgICBwbHQucGxvdCh0LCB5LCBsYWJlbD0nQW1vcnRpZ3VhbWllbnRvOiB4aSA9IHt9Jy5mb3JtYXQoeGkpKQoKIyBDb25maWd1cmFjacOzbiBkZSBsYSBncsOhZmljYQpwbHQudGl0bGUoJ1Jlc3B1ZXN0YSBkZSB1biBzaXN0ZW1hIGRlIHNlZ3VuZG8gb3JkZW4gYSB1bmEgZW50cmFkYSByYW1wYSB1bml0YXJpYScpCnBsdC54bGFiZWwoJ1RpZW1wbyAodCknKQpwbHQueWxhYmVsKCdSZXNwdWVzdGEgZGVsIHNpc3RlbWEgKM64KHQpKScpCnBsdC5sZWdlbmQobG9jPSd1cHBlciBsZWZ0JykKcGx0LmdyaWQoVHJ1ZSkKCiMgTW9zdHJhciBsYSBncsOhZmljYQpwbHQuc2hvdygpCiMgeW91ciBjb2RlIGdvZXMgaGVyZQ==