import numpy as np
import matplotlib.pyplot as plt
import monedo as mo


N=2000

VN=np.arange(10,N,30)

def f(t,x):
    return 1/t

def y(t):
    return np.log(t)

err1=mo.erreur(mo.euler_all,f,1,2,0,VN,y)
err2=mo.erreur(mo.ptmilieu_all,f,1,2,0,VN,y)
err3=mo.erreur(mo.heun_all,f,1,2,0,VN,y)
err4=mo.erreur(mo.myrk4_all,f,1,2,0,VN,y)
p1, = plt.plot(VN,err1,'+')
p2, = plt.plot(VN,err2,'*')
p3, = plt.plot(VN,err3,'o')
p4, = plt.plot(VN,err4,'x')
q1, = plt.plot(VN,1/VN)
q2, = plt.plot(VN,1/(VN**2))
q3, = plt.plot(VN,1/(VN**4))
l1 = plt.legend([p1 , p2, p3, p4], ["Euler", "Pt au milieu", "Heun", "Runge Kutta 4"],loc=3)
l2 = plt.legend([q1, q2, q3],["1/N", "1/N^2", "1/N^4"],loc=1)
plt.gca().add_artist(l1)
plt.xscale('log')
plt.yscale('log')
plt.show()


