algorithme
algorithme
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()
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()
-
- Messages : 10354
- Enregistré le : lun. 30 août 2010 11:15
Re: algorithme
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)
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').
Un appel de cette fonction d'affichage
donne le graphique suivant
Bonne continuation
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
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()
Code : Tout sélectionner
graphique_u(12)
Re: algorithme
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()
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()
-
- Messages : 10354
- Enregistré le : lun. 30 août 2010 11:15
Re: algorithme
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
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