import numpy as np
import matplotlib.pyplot as plt

# Grandeurs du problème
g = 9.8
m = 0.1
k = 0.5
fs = 0.8
fd = 0.2
xo = 2
v = 2

# Periode propre
wo = np.sqrt(k/m)
To = 2 * np.pi/wo
Tmax = 3 * To

# Création des listes et choix du nombre de points 
N = 500  # (le vrai nombre de points sera + grand que N)
dt = Tmax/N
x = [xo]
vx = [v]

epsilon=0.05
while(len(vx) < N):
    while (k *(x[-1] - xo) < fs * m * g + epsilon):
        vx.append(v)
        x.append(x[-1] + v *dt)

    while(vx[-1] - v<= epsilon):
        vx.append(vx[-1] + (fd * g - k*(x[-1] - xo)/m) * dt)
        x.append(vx[-1]*dt + x[-1])
    # On remarque que la boucle s'arrête forcément au moment du passage en glissement

t = [i *dt for i in range(len(vx))]
plt.title("Vitesse de x")
plt.plot(t,vx)
plt.figure()
plt.title("Variation de l'abscisse x")
plt.plot(t,x, '-r')
plt.show()
