import matplotlib.pyplot as plt def f(x): '''la fonction qu'on veut representer''' return(x**2/2 - 3*x/2 + 2) def graphe(f,a,b,N): '''trace le graphe de la fonction f entre a et b avec N segments''' lx = [a+i*(b-a)/N for i in range(N+1)] ly = [f(x) for x in lx] return(plt.plot(lx,ly,'m',label ="$f$")) def suite_rec(f,u0,a,b,N): '''dessine sur [a,b] la suite des segments reliant les points qui representent la suite u_{n+1}=f(u_n) partant de u0 avec N termes''' u,v = u0,0 # on crée les listes des abscisses et ordonnées des segments lx = [u] ; ly = [v] v = f(u) ; lx.append(u) ; ly.append(v) # premier segment vertical for i in range(N): u = v ; lx.append(u) ; ly.append(u) # segment horizontal v = f(u) ; lx.append(u) ; ly.append(v) # segment vertical plt.plot(lx,ly,'r',label = "$u_{n+1} =f(u_n)$") # on trace la droite d'équation y = x plt.plot([a,b],[a,b],'b',label = "$y=x$") #on trace le graphe de f sur le même intervalle graphe(f,a,b,30) plt.legend(loc='upper left') # ces legendes doivent avoir ete creees (option 'label' de plot) plt.title("$u_{0} = $ "+str(u0)+", $N = $"+str(N)) # on ajoute les axes plt.axhline(color = 'k') plt.axvline(color='k') # et une grille plt.grid() # on affiche ! plt.show()