fork download
  1. # Importamos librerias necesarias
  2. # SciPy, SciPy,integrate: librerías para solución por Runge-Kutta 4,5 de la ecuación.
  3. # Matplotlib: para graficar función solución (theta(t))
  4. # Numpy: Matemáticas y trabajo matricial.
  5. import scipy, scipy.integrate
  6. import matplotlib as mpl
  7. import matplotlib.pyplot as plt
  8. import numpy as np
  9.  
  10. # Se define ecuación diferencial como sistema de dos
  11. # ecuaciones de primer orden.
  12. def dydt(t,y,L):
  13. theta,thetaPrima = y
  14. thetaPrimaPrima = -(g/L) * scipy.sin(theta)
  15. return [thetaPrima,thetaPrimaPrima]
  16.  
  17. # Definimos unas constantes a manera de ejemplo.
  18. # g: aceleración de la gravedad.
  19. # L: longitud del péndulo
  20. # theta0: ángulo desde el que se suelta el péndulo.
  21. # thetaPrima0: velocidad inicial con la que se suelta.
  22.  
  23. g = 9.8
  24. L = 1.0
  25. theta0 = scipy.pi/2 # Ángulo inicial: 90 grados.
  26. thetaPrima0 = 0.0
  27.  
  28. solucionador = scipy.integrate.ode(dydt)
  29. # 'dopri5' es para indicarle al solucionador que resuelva
  30. # la ecuación por el método de Runge-Kutta 4,5
  31. solucionador.set_integrator('dopri5')
  32. # .set_f_params es la función para pasarle
  33. # los argumentos adicionales a la ecuación diferencial.
  34. # Para nuestro caso, la longitud del péndulo
  35. solucionador.set_f_params(L)
  36. # Le indicamos al solucionador el valor inicial del problema.
  37. # theta0: ángulo desde el que se suelta el péndulo.
  38. # thetaPrima0: velocidad inicial con la que se suelta.
  39. solucionador.set_initial_value([theta0,thetaPrima0] , 0)
  40.  
  41. thetas = [] # Crear vector vacío de ordenadas.
  42. dt = 0.01 # Pequeño intervalo delta de t.
  43. while solucionador.successful() and solucionador.t < 10:
  44. solucionador.integrate(solucionador.t+dt)
  45. thetas.append(solucionador.y[0]*180/scipy.pi) # Llenar el vector de ordenadas con valor de theta
  46.  
  47. # Creamos vector de abscisas de tiempo.
  48. t=[]
  49. for i in range(len(thetas)):
  50. t.append(i*dt)
  51.  
  52. fig = plt.figure() # Creamos una nuevo gráfico con Matplotlib.
  53. plt.plot(t,thetas) # Graficamos el vector de abscisas vs el vector de ordenadas.
  54. plt.xlabel('tiempo (s)') # Título eje x
  55. plt.ylabel('Amplitud theta(t)') # Título eje y
  56. plt.show() # Mostramos el gráfico en pantalla.
Success #stdin #stdout 0.77s 70464KB
stdin
import numpy as np
import matplotlib.pyplot as plt

# Pedir al usuario cuántos puntos quiere graficar
n = int(input("Ingrese la cantidad de puntos para graficar: "))

# Solicitar los valores de x al usuario
x_values = []
for i in range(n):
    x = float(input(f"Ingrese el valor de x_{i+1}: "))
    x_values.append(x)

x = np.array(x_values)

# Definir las funciones
f1 = np.cos(x**2 - 1)
f2 = np.exp(x**2 - 2)
f3 = np.sin(x**2 - 2)

# Graficar las funciones
plt.plot(x, f1, label="f(x) = cos(x^2 - 1)")
plt.plot(x, f2, label="g(x) = e^(x^2 - 2)")
plt.plot(x, f3, label="f(x) = sen(x^2 - 2)")
plt.legend()
plt.xlabel("x")
plt.ylabel("y")
plt.title("Gráficas de funciones")
plt.show()
stdout
Standard output is empty