import numpy as np
import scipy.integrate as integr
import matplotlib.pyplot as plt
import scipy.optimize as resol

# Solution approchée de l'équation du pendule

omega = 4

def f(x,t) :
    a,b = x
    return [b,-omega**2*np.sin(a)]
    
T = np.arange(0,2*np.pi,0.1)
X = integr.odeint(f,[2.5,0],T)
# plt.plot(T,X[:,0])

# fonction F
r = .9

def F(t) :
    def g(x) :
        return 1/(np.sqrt(1-r**2*(np.sin(omega*x))**2))
    return integr.quad(g,0,t)[0]


# fonction réciproque

def recF(t) :
    def g(x) :
        return F(x)-t
    a = resol.fsolve(g,0)
    return a[0]

# Tracé de F et phi
    
X = np.linspace(-5,5,50)
Y,Z = [],[]
for x in X :
    Y.append(F(x))
    Z.append(2*np.arcsin(0.9*np.sin(omega*recF(x))))
plt.plot(X,Y)
plt.plot(X,Z)
plt.show()
