Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Des suites particulières _ Programmation python

Posté par
Lennie215
04-03-22 à 14:46

Bonjour, j'ai un devoir maison de maths à rendre pour lundi et je n'arrive pas à le faire; pourriez-vous m'aider s'il vous plait.

Soit le programme suivant écrit en langage naturel:
u⬅ 6000
Pour i allant de 1 à n
            u⬅  u+300
Fin Pour

1.) Lequel de ces deux scripts est sa traduction en langage python ? Expliquer la différence.

def suite(n):                                                       def suite(n) :
         u=6000                                                               u=6000
         for i in range(n) :                                              for i in range(n+1) :
                 u=u+300                                                              u=u+300
          return u                                                                return u

2.) Ecrire un algorithme permettant de déterminer la valeur un, n étant une valeur donnée par l'utilisateur

3.) Implémenter cet algorithme sur ordinateur ou sur une calculatrice en Python

4.) A l'aide du programme, déterminer les valeurs de u9, u10, u199, u200, u499 et u500

5.) Que peut-on en déduire quand n tend vers +∞

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 15:23

bonjour

qu'est-ce que tu ne comprends pas exactement ?
que retourne le  programme écrit en langage naturel lorsque n=2, par exemple ?

l'énoncé est-il bien complet ? (pour les questions 2 et suivantes)
la suite (un) n'est pas clairement définie ?

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 15:45

Pour la question 1 je pense qu'il s'agit du deuxième script mais je ne saurais comment l'expliquer.
En langage naturel i va de 1 à 2 ?
Oui l'énoncé est complet, c'est tout ce que j'ai

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 16:12

si tu ne sais pas l'expliquer, c'est que tu réponds au hasard
... on va essayer d'aider le hasard en commençant par le début
(on laisse python de coté pour le moment).

u⬅ 6000
Pour i allant de 1 à n
            u⬅  u+300
Fin Pour
Afficher u  
  -- je rajoute cette ligne

En langage naturel i va de 1 à 2 ?  --- oui, très bien, lorsque l'on prend pour exemple n=2,
i prendra la valeur 1 au premier passage dans la boucle pour
puis la valeur 2, au second passage dans la boucle

déroule ton algo à la main, ligne après ligne
que va retourner l'exécution de la ligne "Afficher u" ?

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 16:15

L'éxécution va retourner 6300 ?

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 16:16

Oui l'énoncé est complet, c'est tout ce que j'ai
ben alors, il est mal rédigé.

parce que si l'algo en langage naturel nous permet de comprendre de quel type de suite il s'agit,
il manque l'information sur l'indice du 1er terme.
(est-ce u0 ? u1 ? u25?)
et donc, à mon avis,  on ne peut pas répondre à la question 2.

si quelqu'un a une autre idée, je suis preneuse.

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 16:20

non, pas 6300

u=6000   -----  avant d'entrer dans la boucle, initialisation de la valeur de u
Pour i allant de 1 à n
            u= u+300

Fin Pour
Afficher u

ce que je mets en bleu va "tourner" 2 fois (si n=2)

1er passage :       i= 1  ==> u=u+300  ==> u = ...combien ?
2eme passage :   i= 2  ==> u=u+300  ==> u = ...?

donc en sortie u = ...?

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 16:20

Mais faut-il un premier terme pour déterminer de quel type de suite il s'agit ?

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 16:24

302 ?

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 16:28

carita @ 04-03-2022 à 16:20

non, pas 6300

u=6000   -----  avant d'entrer dans la boucle, initialisation de la valeur de u
Pour i allant de 1 à n
            u= u+300
Fin Pour
Afficher u

ce que je mets en bleu va "tourner" 2 fois (si n=2)

1er passage :       i= 1  ==> u=u+300  ==> u = 6000 + 300 = 6300
2eme passage :   i= 2  ==> u=u+300  ==> u =6300 + 300 = 6600

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 16:30

Ah d'accord je viens de comprendre

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 16:33

avec ce que donne l'énoncé, la suite est définie par récurrence,
il doit donc clairement identifier (en plus) le 1er terme.

je m'explique :

>>  si le 1er terme de la suite est u0=6000 --- indice 0
alors u2 = 6600  --- cas n=2, voir message de 16h28

>>  si le 1er terme de la suite est u1=6000 --- indice 1
alors u2 = 6300  --- car u2 = u1 + 300 = 6300

tu vois, cela a de l'importance.
tu as possibilité de demander à ton professeur ?

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 16:36

Oui je comprends la différence.
Je vais lui demander

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 16:42

super
en attendant sa réponse, on peut toutefois répondre à la question 1)
je poursuis.

u⬅ 6000
Pour i allant de 1 à n
            u⬅  u+300
Fin Pour

on vient de voir que la boucle pour  doit tourner autant de fois que le le précise l'entier n
si n= 2, elle tourne 2 fois
si n= 5, elle tourne 5 fois
etc.

observe les 2 fonctions python :
la seule différence est   for i in range(n) :              ou            for i in range(n+1) :

==> regarde dans le cours (ou sur le net) comment fonctionne une instruction  for i in range()
qu'est-il important de savoir à son sujet ?

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 16:50

De ce que j'ai vu, for i in range sert à répéter l'instruction

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 16:52

Mon prof dit qu'il n'y a aucune erreur et que la première ligne sert à initialiser la suite par le premier terme à 6000

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 16:52

tout à fait,
mais ce qui est important est justement ce qui précisé entre les parenthèses du in range ()

fais une petite recherche perso sur le net
ce sera la meilleure façon de t'en souvenir

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 16:57

Le dernier élément ne fait jamais partie de la liste si par exemple on a in range(10) les valeurs vont donc de 0 à 9.

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 17:08

in range(10) les valeurs vont donc de 0 à 9. ------  parfait !


donc avec   for i in range(n) :          --- la boucle va tourner.... combien de fois ?

mm question pour     for i in range(n+1) :

ps : prends un exemple avec une valeur pour n pour mieux compter, par ex n= 5, vois ce qui se passe

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 17:11

Lennie215 @ 04-03-2022 à 16:52

Mon prof dit qu'il n'y a aucune erreur et que la première ligne sert à initialiser la suite par le premier terme à 6000


ça on l'a déjà compris !
mais ça ne nous dit toujours pas l'indice du 1er terme

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 17:14

Pour n= 5:
For in range(n), l'instruction va tourner 5 fois
For in range(n+1), l'instruction va tourner 5 + 1 fois donc 6

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 17:19

dans un cas pareil, on va devoir prendre une décision à la place de l'énoncé :
on va choisir 0 pour indice du 1er terme de la suite, donc u0=6000,
définissant ainsi clairement une suite (un) pour tout n

de quel type de suite s'agit-il ?
tu vas trouver la réponse dans le cours.

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 17:21

Lennie215 @ 04-03-2022 à 17:14

Pour n= 5:
For in range(n), l'instruction va tourner 5 fois
For in range(n+1), l'instruction va tourner 5 + 1 fois donc 6


très bien
donc si on veut que ça boucle exactement n fois, quelle instruction tu vas choisir, la première ou la seconde ?

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 17:43

Il s'agit donc d'une suite arithmétique de premier terme u0= 6000

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 17:44

On doit choisir la première instruction

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 18:01

oui, première instruction, donc 1er script

oui, une suite arithmétique de premier terme u0= 6000 et de raison ...?  (on doit préciser ces 2 données)

---

2.) Ecrire un algorithme permettant de déterminer la valeur un, n étant une valeur donnée par l'utilisateur

là, on te demande un algorithme en langage naturel (comme celui donné au début de l'énoncé),

n étant une valeur donnée par l'utilisateur  ---  qu'est-ce que cela implique, dans l'algo ?

nb : pour cette question 2), tu peux faire de 2 façons différentes :
- soit tu adaptes et complète l'algo de l'énoncé (donc en gardant sa logique)
- soit tu utilises directement la formule générale d'un terme d'une suite arithmétique (ou terme général, voir formule dans le cours)

prends le temps de réfléchir; essaie de produire quelque chose, ça nous servira de base pour continuer.

je repasse de temps en temps pour te lire, mais un autre intervenant disponible peut prendre le relais.

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 18:27

Mais nous n'avons pas la raison, à part si c'est 300.

Au lieu d'une forme explicite de formule un= u0 + n x r, il ne s'agirait pas plutôt d'une suite arithmétique par récurrence dont la formule est un + 1= u0 + r et c'est bien ce que l'on a : un= u0 + 300

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 18:45

Ah non finalemnt c'est bon j'ai compris et c'est donc bien une forme explicite et pas par explicite

---------
Pour n= 5    u0= 6000 et r= 300 on a:
un + 1= u0 + r
∀ n ∈ N, u5= 6000 +5 x300
                        = 7 500

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 19:05

bien sur que la raison est 300 !

en effet, on additionne toujours le même nombre (300) pour passer d'un terme au suivant.

---

dans ce que tu dis ensuite, tu t'emmêles un peu les pinceaux, je démêle le vrai du faux :

>>  Au lieu d'une forme explicite de formule un= u0 + n x r ----  exact
un= u0 + n* r    est en effet le terme général d'une suite arithmétique
que devient cette formule dans ton exo ?

>> il ne s'agirait pas plutôt d'une suite arithmétique  par récurrence dont la formule est un + 1= u0 + r  
ce qui est en rouge est faux

une définition de suite arithmétique par récurrence est de la forme un+1 = un + r,
où on définit un terme par rapport à son précédent :
le terme indice n+1 est défini par rapport au terme d'indice n auquel on ajoute la raison r.

>> et c'est bien ce que l'on a : un= u0 + 300   ---  eh non, on n'a pas ceci ! c'est la boucle pour qui le dit

regarde :
si tu écris  un= u0 + 300     pour tout n
alors
u2 =  u0 + 300 = 6000+300=6300
u80 =  u0 + 300 = 6000+300=6300   tous les termes seraient égaux à 6300 !

alors qu'avec la boucle, dans l'algo, on va ajouter plusieurs fois la raison 300, autant de fois que l'indice n l'indique.

en résumé, pour définir notre suite arithmétique, il y a 2 façons :

1) soit par récurrence   :   u0 = 6000 ET un+1 = un + 300  
--- c'est ce que traduit l'algo de l'énoncé : on calcule tous les termes les uns après les autres : u1 , u2, ... un

2) soit par son terme général :  un = u0 + nr     soit ici,     un = 6000 + 300 * n  
--- on calcule un terme directement en fonction de n, pas besoin de calculer tous ceux qui précédent;
on peut par ex calculer directement u100 = 6000 + 300*100

---

pour la question 2) tu peux donc utiliser une des 2  définitions, celle que tu veux;
évidemment les 2 programmes seront bien différents.

avec la 1ère définition, il te suffit d'utiliser/adapter la question 1...

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 19:14

messages croisés, je corrige toutefois pour écarter toute ambiguité :

Lennie215 @ 04-03-2022 à 18:45

...u0= 6000 et r= 300 on a:
∀ n ∈ N,   un + 1=u0 + r         un = u0 + n*r   ---- ici, c'est la définition par le terme général (ou forme explicite), soit un = 6000 + 300n

application  pour n= 5 :
u5= 6000 +5 x300 = 7 500  

Posté par
Lennie215
re : Des suites particulières _ Programmation python 04-03-22 à 19:56

Ah d'accord je comprends mes erreurs

"n étant une valeur donnée par l'utilisateur" cela ne sous-entendait pas que c'était à nous de donner une valeur à n ? Ou fallait-il juste traduire un en fonction de n

Posté par
carita
re : Des suites particulières _ Programmation python 04-03-22 à 20:37

c'est à nous de donner une valeur à n
i.e. de permettre à l'utilisateur de saisir la valeur n de son choix lors du lancement de l'algo.
tu as certainement déjà vu ça dans des exemples de cours.
---

2.) Ecrire un algorithme permettant de déterminer la valeur un, n étant une valeur donnée par l'utilisateur
relis nos échanges si besoin.
... en fait ce n'est pas très difficile si tu as bien compris ce que fait l'algo déjà donné par l'énoncé.
il y a juste 2 lignes à ajouter.

je vais couper pour ce soir, et passe le relais à qui est disponible.
à défaut, je reviendrai lire demain ta proposition de réponse.

bonne soirée

Posté par
Lennie215
re : Des suites particulières _ Programmation python 05-03-22 à 14:12

u0 ⬅ 6000
Pour i allant de 1 à n
            u⬅  u+300
un= u0 + n*r
∀ n ∈ N, un= 6000 + 300n
Fin Pour

Posté par
carita
re : Des suites particulières _ Programmation python 05-03-22 à 14:35

bonjour Lennie215

non, ce n'est pas correct, pour plusieurs raisons :

1) la "machine" ne connait ni ∀, ni N, ni un, ni u0, ni r...
... elle va te recracher tout ça avec un beau message d'erreur.
==> tous ces éléments n'ont aucune raison, voire utilité, de figurer dans ton algorithme.

2) à aucun moment tu ne permets à l'utilisateur de saisir une valeur pour n

3) à aucun moment tu ne permets d'afficher le résultat attendu.

---

on doit essayer de 'réfléchir' comme la machine
('réfléchir' est un bien grand mot pour une machine : elle est hyper rapide et dispose une énorme mémoire, mais est foncière stupide).

c'est à toi de lui fournir et détailler tout ce dont elle a besoin, pas à pas,
afin qu'elle puisse t'afficher la seule chose qui t'intéresse :  la variable u, après que tu lui auras précisé une valeur pour n.

question : que fait cet algorithme ?
u⬅ 6000
Pour i allant de 1 à n
            u⬅  u+300
Fin Pour

tout part de là...
je reviens plus tard  (si d'autres aidants souhaitent intervenir, pas de souci)

Posté par
Lennie215
re : Des suites particulières _ Programmation python 05-03-22 à 16:14

Les variables i et n sont des entiers naturels (N) et u est un réel
Posons u0 comme premier terme de la suite

u0 ⬅ 6000
Pour i allant de 1 à n
            un⬅  u0+300
un= u0 + n*r
Pour tout entier naturel n ∈ N, un= 6000 + 300n
Fin Pour
Afficher u

Posté par
carita
re : Des suites particulières _ Programmation python 05-03-22 à 20:52

tu n'y es pas.
... tu n'as pas répondu à ma question : que fait le programme écrit en langage naturel au début de l'énoncé ?

coup de pouce pour 2) :

.....? il manque cette ligne
u⬅ 6000
Pour i allant de 1 à n
            u⬅  u+300
Fin Pour
Afficher u

relis mon dernier message de 14h35

Posté par
Lennie215
re : Des suites particulières _ Programmation python 05-03-22 à 21:09

Le programme cherche à donner la valeur de u
Je ne comprends pas

Posté par
carita
re : Des suites particulières _ Programmation python 06-03-22 à 10:17

oui, tu en doutes ?
relire message 04-03-22 à 16:28
le programme du début de l'énoncé écrit en langage naturel permet de calculer la valeur de u.

2.) Ecrire un algorithme permettant de déterminer la valeur un, n étant une valeur donnée par l'utilisateur

carita @ 05-03-2022 à 20:52

coup de pouce pour 2) :
.....? il manque cette ligne
u⬅ 6000
Pour i allant de 1 à n
            u⬅  u+300
Fin Pour
Afficher u

carita @ 04-03-2022 à 20:37

c'est à nous de donner une valeur à n
i.e. de permettre à l'utilisateur de saisir la valeur n de son choix lors du lancement de l'algo.
tu as certainement déjà vu ça dans des exemples de cours.

Posté par
Lennie215
re : Des suites particulières _ Programmation python 06-03-22 à 15:15

Saisir une valeur pour n
u0⬅ 6000
Pour i allant de 1 à n
            un⬅  u0+300
un= u0+ n*r
Pour tout entier naturel n ∈ N, un= 6000 + 300n
Fin Pour
Afficher u



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1510 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !