Page 1 sur 1
algorithme
Posté : mar. 10 nov. 2020 19:34
par Cédric
Bonjour,
pourquoi le script ci-dessous fait avec Edupython ne représente-t-il pas les points de la suite définie par U0=0
et U(n+1)=U(n)+2n+2 quand je rentre par exemple plotu(3) dans la console ?
Je ne suis pas sûr de ce 'r' et de son intérêt (je me suis inspiré d'autres exemples du livre de Barbazo ...).
Merci de votre aide !
from lycee import *
def u(n):
u=0
for k in range(n):
u=u+2*k+2
return n
import matplotlib.pyplot as plt
def plotu(n):
for k in range(n+1):
plt.plot(k,u(k),'r')
plt.show()
Re: algorithme
Posté : mar. 10 nov. 2020 22:28
par sos-math(21)
Bonjour,
si tu veux que cela retourne le terme d'indice \(n\) de ta suite :
il faut déclarer une variable u à 0 (c'est le \(u_0\) ) : c'est ce que tu as fait
il faut ensuite répéter le calcul défini par récurrence n fois en partant de \(k=0\) : c'est ce que tu as fait
En revanche on renvoie u, pas n (je pense que c'est une faute de frappe)
Code : Tout sélectionner
def u(n):
"""calcule le terme de rang n de la suite """
u = 0
for k in range(n):
u = u + 2*k + 2
return u
Pour le tracé, c'est presque bon, mais il vaut mieux construire deux listes : une liste d'abscisses et une liste d'ordonnées puis appeler la fonction plt.plot sur ces deux listes, en précisant que tu veux des points (lettre 'o'), avec la couleur rouge (lettre 'r').
Code : Tout sélectionner
def graphique_u(n):
"""affiche la représentation des termes de la suite de 0 à n inclus"""
abscisses = [k for k in range(n+1)]
ordonnees = [u(k) for k in abscisses]
plt.plot(abscisses,ordonnees, 'or')
plt.show()
Un appel de cette fonction d'affichage
donne le graphique suivant
Bonne continuation
Re: algorithme
Posté : mer. 11 nov. 2020 11:30
par Cédric
Bonjour et merci beaucoup !
oui, j'avais fait une erreur de frappe.
Merci pour votre script qui est plus clair que :
from lycee import *
import matplotlib.pyplot as plt
def u(n):
u=0
for k in range(n):
u=u+2*k+2
return u
def plotu(n):
for k in range(n+1):
plt.plot(k,u(k),'r.')
plt.show()
Re: algorithme
Posté : mer. 11 nov. 2020 11:51
par sos-math(21)
Bonjour,
en effet pour matplotlib, d'un point de vue de la mémoire de l'ordinateur, il vaut mieux créer les listes d'abscisses et d'ordonner et faire un seul appel à plt.plot plutôt que n appels à plt.plot.
Vérifie que cela marche bien comme demandé.
Bonne continuation