$k$ costante elastica molla
$m$ massa che oscilla
$b$ coefficiente di attrito
$omegaS = \sqrt{\dfrac{k}{m}} $ pulsazione propria del sistema ricordare che la frequenza è $\nu = 2 \pi \omega$
$omegaF$ pulsazione forzante
import numpy as np
import matplotlib.pyplot as plt
import math
m = 0.1
k = 1.3
b = 0.02
x0 = 10*10**-2
omegaS = math.sqrt(k/m)
print(omegaS)
T = 2*math.pi/omegaS
print(T)
k2 = -((b**2/m**2-4*k/m))/4
def Forzante(A,omegaF,x):
F = A*math.cos(omegaF*x)
return F
A = x0/10
omegaF = omegaS
utilizziamo il metodo alle differenze finite con:
$a = \dfrac{1}{m} \left( -kx-bv +A \cos\left(\underline{\omega}t \right) \right)$
$x \leftarrow x + vt$
$v \leftarrow v + at$
dove $A$ e $\underline{\omega}$ sono rispettivamente l'ampiezza e la pulsazione della forzante.
x = x0
v = 0
dt = 0.01 #s
t = 0.0
tOsservazione = 80*T #s
posizione = []
tempo = []
a = 0
while t<tOsservazione:
posizione.append(x)
a=(-b*v-k*x+Forzante(A,omegaS,t))/m
x=x+v*dt
v=v+a*dt
tempo.append(t)
t=t+dt
posizione = np.array(posizione, dtype=np.float64)
tempo = np.array(tempo, dtype=np.float64)
plt.figure(figsize=(20,10))
plt.plot(tempo, posizione, 'b-', label='line 2')
plt.show()