1. El oscilador armónico simple es uno de los fenómenos más fundamentales de la Física.
Esencialmente describe el movimiento de una masa unida a un resorte. La ecuación que describe
su comportamiento nace como consecuencia de combinar la segunda ley de Newton y la ley de
Hooke, ambas definiciones del concepto de fuerza.
…….2da Ley de Newton …….Ley de Hooke
Reemplazar la ley de Newton en la ley de Hooke da como resultado la ecuación diferencial del
oscilador armónico simple:
Donde 𝛚𝟐
= √
𝒌
𝒎
Una fórmula tan simple, pero tan útil en la mecánica newtoniana.
Las ecuaciones diferenciales se pueden resolver analíticamente (si la solución es exacta) o
numéricamente (si la solución no tiene forma exacta). La solución a esta ecuación se puede
encontrar analíticamente, y la forma general es:
Superposición lineal de funciones trigonométricas, donde A y B son constantes de amplitud. Ec.
(4)
Recomiendo jugar con estas funciones en sitios web que brindan herramientas para graficarlas,
como Desmos. Esto es realmente útil para obtener una visión visual para mejorar el proceso de
aprendizaje. Alternativamente, siempre puede trazarlos usando Python o su lenguaje de
programación preferido.
Con esta breve explicación en mente, vamos a saltar al lado de la codificación, donde usaremos
la biblioteca SciPy para encontrar una solución numérica. Lo importante de esta metodología es
su versatilidad, ya que puede generalizarse para múltiples tipos de ecuaciones diferenciales.
En Python
Primero, importamos las bibliotecas relevantes.
2. import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
Luego definimos un rango de integración para el tiempo, un valor para omega al cuadrado y los
valores iniciales para la posición (x) y la velocidad (v), que en este caso son 0 y 2 respectivamente
como se muestra en la variable y.
t = np.linspace(0,15,1000)
omega_sq = 1
y = [0,2] #y[0]=x and y[1]=v
Ahora es donde comienza la diversión. Primero, descomponemos la EDO (ecuación diferencial
ordinaria) de segundo orden en dos ecuaciones diferenciales de primer orden.
La velocidad es la tasa de cambio de posición con respecto al tiempo. ecuación (5)
Luego, el proceso es el siguiente, definimos un vector con las variables que se diferencian, como
puede ver arriba, son x y v, ambas varían en función del tiempo (Eq 5).
Definición general. ecuación (6)
Si la comprensión de la ecuación (5) es correcta, entonces es natural insertar nuestras variables
en la definición general (ecuación (6)).
3. La definición general utilizada para nuestro ejemplo (de Eq(3))
Una vez llegado a este punto, solo nos queda crear una función que devuelva el vector dy/dt,
como se muestra en el siguiente código:
def harmonic(t,y):
solution = [y[1],-omega_sq*y[0]]
return solutionsho = solve_ivp(harmonic, [0,1000], y0 = y,
t_eval = t)
Solve_ivp es una función de la biblioteca SciPy que resuelve problemas de valor inicial para
sistemas de ODE, que resulta ser este caso. Para obtener información adicional, visite la
documentación en línea.
La solución a cualquier problema de valor inicial es una solución particular, y para este caso
dadas las condiciones iniciales antes enunciadas, llegamos a una función trigonométrica, de
acuerdo con la solución general, Eq(4). Ahora solo usamos la biblioteca matplotlib para visualizar
esta solución en particular.
plt.plot(t,sho.y[0])
plt.ylabel("Position")
plt.xlabel("Time")
plt.title('SHO', fontsize = 20)