import numpy as np
import matplotlib.pyplot as plt

def suite(f,u0,n):
    """ Retourne la liste des termes de 0 a n de la suite u definie par u(n+1) = f(u(n))"""
    L = [u0]
    u = u0
    for i in range(n) :
        u = f(u)
        L.append(u)
    return(L)

f = lambda x: np.sin(x)

def trace(f,u0,n):
    """Trace les termes uk pour n entre 0 et n"""
    LesN = [u0]
    L = [f(u0)]
    T = np.linspace(-1.1*u0,1.1*u0)
    u = u0
    for i in range(n) :
        u = f(u)
        L.append(u)
        L.append(u)
    LesN = LesN + L
    LesN.pop()
    S = [f(t) for t in T]
    plt.figure("Trace")
    plt.plot(T,T)
    plt.plot(T,S)
    plt.plot(LesN,L,'r')
    plt.axis('equal')
    plt.show()
    return(L,LesN)

trace(f,1,10)
