Inscription / Connexion Nouveau Sujet

1 2 +


Niveau terminale
Partager :

Algorithmie avec python

Posté par
sarah1828
16-02-23 à 11:40

Bonjour tout le monde, j'ai un DM a rendre pour Mardi sur Python, je n'ai rien fait, python n'est pas du tout mon ami ! voici l'exercice :

on considere une passerelle sans rambarde de 10 m de long et 2m de large que va emprunter le robot Tik qui se déplace de la façon suivante:
- soit il avance d'un mètre tout droit
- soit il se déplace en diagonale vers la gauche (déplacement équivalent à un mètre tout droit ou vers la droite)
- soit il se déplace en diagonale vers la droite
on suppose que ces trois type de déplacement sont aléatoire et équiprobable. L'objectif de cet exercice est d'estimer la probabilité p de l'événement S "Tik traverse la passerelle" c'est-à-dire "Tik n'est pas tombé dans l'eau"  et se trouve encore sur la passerelle au bout de 10 déplacement"

Partie A:
on schématise la passerelle par un rectangle dans le plan muni d'un reprère orthonormé (O,I,J) comme l'indique la figure ci dessous (voir photo 1) . On suppose que Tik se trouver au point de coordonnée (0,0) au début de la traversée. On note (x,y) les coordonnée de la position de Tik après x déplacement.

On a écrit l'algorithme suivant en langage naturel qui simule la position de Tik au bout de x déplacement:

x <-- 0
y <-- 0
Tant que y > ou = à -1 et y < ou  = 1 et x < ou = à 9
                    affecter a n valeur choisie au hasard entre -1, 0 et 1
                    y<-- y+n
                    x <-- x+1
fin tant que
afficher "la position de Tik est" (x;y)

1) on donne les couples suivants : (-1;1), (10;0), (2;4) , (10,2). Lesquels ont pu être obtenus avec cet algorithme ? Justifier la réponse
2) modifier cet algorithme pour qu'a la place de "la position de Tij est (x, y), il affiche finalement "Tik a réussi la traversée" ou "Tik est tombé"

Partie B

pour tout n entier naturel compris entre 0 et 10, on note:
An l'événement "après n déplacement tik, se trouve sur un point d'ordonnée -1"
Bn l'évenement "après n déplacement tik, se trouve sur un point d'ordonnée 0"
Cn l'événement "après n déplacement tik, se trouve sur un point d'ordonnée 1"
on note an, bn, cn les probabilités respectives des événements An, Bn, Cn

1) justifier que a0= 0, b0= 1, c0=1
2) montrer que pour tout entier naturel n compris entre 0 et 9 on a : an+1= an+bn / 3
bn+1= an + bn + cn/ 3
cn+1 = bn+cn /3

on pour s'aider d'un arbrer pondéré
3) calcul les probabilité p(A1), p(B1) et p(C)
4) calculer la probabilité que Tik se trouve sur la passerelle au bout de deux déplacements

Algorithmie avec python

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 12:04

Bonjour,

tu dis "je n'ai rien fait"  :   qu'est ce qui te gêne au juste ?
comprends tu comment fonctionne l'algorithme ?
NB : ce n'est pas du python, c'est du langage naturel, donc même si Python n'est pas ton ami, tu peux faire l'exercice.

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 12:14

Bonjour Leile,
c'est l'algorithme que je ne comprend pas, je ne vois pas ce que je dois remplacé pour répondre aux deux questions

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 12:25

la question 1) ne te demande pas de modifier l'algorithme, mais juste de dire s'il peut afficher les résultats qu'on te propose.

prenons (-1 ; 1)     c'est donc   x=-1   et y=1  
est ce que l'algo peut afficher ça ?

l'algorithme :
x <-- 0
y <-- 0                     (  au départ, le robot est en 0 (0, 0). )
Tant que y > ou = à -1 et y < ou  = 1 et x < ou = à 9
                    affecter a n valeur choisie au hasard entre -1, 0 et 1
                    y<-- y+n
                    x <-- x+1
fin tant que
afficher "la position de Tik est" (x;y)

la condition du tant que  se traduit par :
tant que    y est compris entre -1 et 1  et que x9
ensuite  n  : c'est le mouvement du robot, qui fait changer y
et on ajoute 1 à x
tu vois plus clair ?

alors est ce que   x=-1   et y=1    est possible ?

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 13:05

tu ne réponds plus ?
Je m'absente, je reviens voir plus tard si tu as répondu.

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 14:18

ok, je pense avoir compris donc :
(-1; 1) est possible car -1 < 9  et 1 > -1
(10, 0) n'est pas possible car 10 > 9
(2; 4) n'est pas possible car 4 n'est pas compris entre -1 et 1
(10, 2) n'est pas possible car 10 > 9 et 2 n'est pas compris entre -1 et 1

est ce que c'est bon ?

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 15:59

fais attention : on regarde si y est compris entre -1 et 1, et si oui, on entre dans la boucle, dans laquelle on va faire varier y et x..
donc y peut avoir comme valeur -2, -1, 0, 1, 2   en sortie


(-1; 1) est possible car -1 < 9  et 1 > -1

x=-1  est possible ?
au départ x=0, et à chaque tour tu lui ajoutes 1....

(10, 0) n'est pas possible car 10 > 9

x=10  est possible, c'est précisemment quand x=10 que le robot arrive au bout de la passerelle.
On entre dans la boucle quand x=9,   et on ajoute 1 à x ...

(2; 4) n'est pas possible car 4 n'est pas compris entre -1 et 1
en effet, y = 4  est impossible.

(10, 2) n'est pas possible car 10 > 9 et 2 n'est pas compris entre -1 et 1
x=10  est ce possible ? y=2  est ce possible (d'après ce que j'ai écrit en debut de post).. ?
donc ?


rectifie ta réponse.

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 16:15

ok, donc  (-1, 1) n'est pas possible  car x ne peut pas prendre des valeurs négatives
(10, 0) est possible car y peut prendre la valeur de 0 est x=10 signifie que le robot est au bout de la passerelle
(2, 4) n'est pas possible car 4 n'est pas compris entre -1 et 1
( 10, 2) est possible car y peut également prendre la valeur 2

est ce que c'est ok ?

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 16:21

(-1, 1) n'est pas possible  car x ne peut pas prendre des valeurs négatives
(10, 0) est possible car y peut prendre la valeur de 0 est x=10 signifie que le robot est au bout de la passerelle
(2, 4) n'est pas possible car y  est < 2, y=4 est impossible 4 n'est pas compris entre -1 et 1
( 10, 2) est possible car y peut également prendre la valeur 2

Oui, c'est correct.

2) modifier cet algorithme pour qu'a la place de "la position de Tij est (x, y), il affiche finalement "Tik a réussi la traversée" ou "Tik est tombé"
à ton avis, et vu les réponses de la question 1, quand peux tu dire que Tik a réussi la traversée ?

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 16:36

j'ai une course à faire.
je viens voir ta réponse dans une heure.

A tout à l'heure.

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 16:39

tik a réussi a traversé la passerelle lorsque x est supérieurs a 10. Et que y doit toujours être compris entre -2 et 2, sinon il tombe sur les côtés
mais je ne vois pas quelle ligne je dois modifier dans l'algorithme...

Posté par
Howard75
re : Algorithmie avec python 16-02-23 à 16:52

***********malou edit > HORS SUJET ***************

Bonjour Sarah, je vais t'aider un petit peu pour la partie Python
?

D'abord, je te conseille de traduire ton programme qui est actuellement en langage naturel en langage Python.

ÉTAPES À SUIVRE

1) Initialiser 2 variables x et y à 0
2) Écrire une boucle while utilisant ces 2 variables et faire attention car \leq et \geq s'écrivent respectivement <= et >= en Python
3) Afficher le résultat avec la fonction print() une fois la boucle finie

À COMPLÉTER À PARTIR DU SCRIPT EN LANGAGE NATUREL


import random

x = ...
y = ...

while y >= ... and y <= ... and x <= ...:
    n = random.randint(-1, 1)
    y = ...
    x = ...

# Affichage du résultat de base
print("La position de Tik est : (%s , %s)" %(x, y))

# Affichage du résultat modifié
if (x == ... and y >= ... and y <= ...):
    print("Tik a réussi la traversée")
else:
    print("Tik est tombé")


Appuie-toi sur le script en langage naturel pour compléter le script et réfléchis bien pour l'affichage du résultat aux valeurs permises pour x et y pour réussir la traversée ?

***********HORS SUJET**************

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 16:58

*****HORS SUJET*****
import random

x =  0
y = 0

while y >= -1  and y <= 1 and x <= 9
    n = random.randint(-1, 1)
    y = y+n
    x = x+1

# Affichage du résultat de base
print("La position de Tik est : (%s , %s)" %(x, y) Je sais pas du tout quoi mettre ici

# Affichage du résultat modifié
if (x == 10 and y >= - 2 and y <= 2):
    print("Tik a réussi la traversée")
else:
    print("Tik est tombé")

**********HORS SUJET************

Posté par
Howard75
re : Algorithmie avec python 16-02-23 à 17:06

***********HORS SUJET*************
Le début (l'initalisation et la boucle) est correct.

Il y a 2 erreurs dans l'affichage du résultat.

Dans l'affichage de base du résultat, tu n'as rien à modifier.
En fait les %s vont être remplacés par les valeurs précisées après, autrement dit par les valeurs de x et y.

Dans l'affichage modifié du résultat où on te demande si il a réussi à traverser ou non, tu as fais une erreur.
-2 et 2 ne sont pas des valeurs acceptables si tu utilises >= et <=.
Soit tu utilises > -2 et < 2, soit tu utilises >= -1 et <= 1.

Sinon si Tik est en -2 ou en 2, il est tombé du pont, regarde ton schéma ?

Au final tu obtiens ceci :


import random

x = 0
y = 0

while y >= -1 and y <= 1 and x <= 9:
    n = random.randint(-1, 1)
    y = y + n
    x = x + 1
    print("x =", x, ", y =", y) # ?? Cette ligne n'est pas obligatoire, c'est juste pour que tu comprennes ce qui se passe à chaque tour de boucle dans tes variables x et y

# Affichage du résultat de base
print("La position de Tik est : (%s , %s)" %(x, y))

# Affichage du résultat modifié
if (x == 10 and y >= -1 and y <= -1):
    print("Tik a réussi la traversée")
else:
    print("Tik est tombé")


Je te suggère de copier-coller le script et de l'essayer en suivant ce lien puis de cliquer sur Run à plusieurs reprises pour voir ce qui se passe :
https://www.programiz.com/python-programming/online-compiler/

*********HORS SUJET**********

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 17:18

Très bien, j'ai compris cet algorithme !!!
merci beaucoup pour votre aide

Posté par
flight
re : Algorithmie avec python 16-02-23 à 17:57

bonjour .. suis passé par là ... sans vouloir perturber les explications de leile   que je salue , ne faut il pas lire  pour la partie B :

2) montrer que pour tout entier naturel n compris entre 0 et 9 on a : an+1= an/3+bn / 3
bn+1= an/3 + bn/3 + cn/ 3
cn+1 = bn/3+cn /3

?

Posté par
flight
re : Algorithmie avec python 16-02-23 à 18:31

aussi est ce que Co vaut bien 1 ?   ca me parait bizzare

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 18:31

Bonsoir flight ,
sur ma fiche d'exercice il y a bien marqué :
an+1= an+bn / 3
bn+1= an + bn + cn/ 3
cn+1 = bn+cn /3

je sais pas si vous avez compris cette partie B, et que vous pouvez m'aider à m'en sortir... !

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 18:33

et effectivement il faut justifier que C0= 0. J'ai mal recopié mon énoncé

Posté par
flight
re : Algorithmie avec python 16-02-23 à 18:42

cette ecriture

an+1= an+bn / 3
bn+1= an + bn + cn/ 3
cn+1 = bn+cn /3

sans les parenthèses est fausse , ca ouvre toutes les portes à une mauvaise interpretation
an+1= an+(bn / 3)
bn+1= an + bn + (cn/ 3)
cn+1 = bn+(cn /3)      --< ce qui est faux


par contre
an+1= an/3+bn / 3
bn+1= an/3 + bn/3 + cn/ 3
cn+1 = bn/3+cn /3

passe mieux

Posté par
flight
re : Algorithmie avec python 16-02-23 à 18:43

qu'a tu fais pour la partie B ?

il s'agit de faire un graphe des probabilités , et utiliser les formules des probabilités totales

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 18:47

bonjour flight,
pour la  question 2, il manque des parenthèses (comme souvent) .
Mais j'en étais encore à la question 1b)...  

Howard75,
je ne comprends pas  : il n'est pas demandé de traduire l'algorithme en Python, au contraire : il s'agit pour moi de comprendre l'algorithme sans le coder.
Il est important de comprendre et de dérouler un algorithme avant même de le coder.

D'autre part, ce que tu as écrit pour l'affichage modifié : je ne suis pas d'accord. Pour moi, Il suffit de tester la valeur de x : si x=10, alors il a traversé  la passerelle. La valeur de y n'importe pas. Que le dernier pas soit trop à gauche ou trop à droite n'a pas d'importance, le robot sera sur la rive quand même.
et  "if (x == 10 and y >= -1 and y <= -1):"  est faux , cela réduit la valeur de y à -1.

sarah1828
veux tu passer à la question 2 ?
reprends ton énoncé et place les bonnes parenthèses.
As tu dessiné un arbre ?

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 18:50

flight
je voulais dire : les parenthèses manquantes
an+1= (an +bn) / 3
bn+1= (an + bn + cn)/ 3
cn+1 = (bn+cn) /3

Posté par
mathafou Moderateur
re : Algorithmie avec python 16-02-23 à 18:58

bonjour,
@Leile et Howard75
Howard75 est coutumier du fait de répondre à ce qui n'est pas demandé pendant l'exo.
le pire à mon sens étant ce print ( ... % ...) totalement inapproprié dans un exo à ce niveau, fût il même sur Python !! (ce qu'il n'est même pas)
ça perturbe la discussion de façon nuisible
et peut être faudra-t-il de nouveau sévir
modérateur.
(je signale à malou pour qu'il juge de ce qu'il en pense)

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 19:04

Leile,
ducoup pour la question 2, j'ai recopié l'algorithme en changeant la fin. J'ai donc mis if (x == 10 and y >= -2and y <= 2)

Pour la partie j'ai fait un arbre pondéré avec 3 branches:
- j'ai placé an+1 sur une branche
- puis an+1
- et cn+1

que faut-il faire ensuite

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 19:06

bonsoir Mathafou,
donc tu la question 2 est fausse, peut- tu m'aider à cette question ?

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 19:21

sarah1828
tu peux poster l'image de ton arbre..

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 19:27

pour la question 2, (modifier l'algorithme), tu n'as pas lu mon post ?

Pour moi, Il suffit de tester la valeur de x : si x=10, alors il a traversé  la passerelle. La valeur de y n'importe pas.
et on ne te demande de le modifier en python mais en langage  naturel.

A la place de afficher "la position de Tik est" (x;y)
il faut écrire  
   si x=10, alors afficher "Tik a réussi la traversée"
                     sinon afficher "Tik est tombé".

Et c'est tout.

Allez, on passe à la partir B.
poste ton arbre.

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 19:31

très bien, merci pour la question 2 !

pour mon arbre j'ai simplement fait le début, mais il faut commencer par les deux premières questions

Algorithmie avec python

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 19:41

1) justifier que a0= 0, b0= 1, c0=0

au départ (n=0),   Tik est en (0; 0)  (y=0)

on te dit Bn l'évenement "après n déplacement tik, se trouve sur un point d'ordonnée 0"
si n=0, on lit
B0 l'évenement "après 0 déplacement tik  se trouve sur un point d'ordonnée 0"
c'est vrai, donc B0  est vrai. Alors que vaut b0 ?
les évenements A0 et C0  sont faux. Alors que valent a0 et c0 ?

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 19:46

pour moi A0 = -1 et C0 = 1
Mais dans la question il faut justifier, donc on doit trouver leurs résultats...

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 19:47

Je ne comprend pas cette question

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 19:55

l'événement A0  c'est   "quand n=0, y vaut -1". p(A0)  s'écrit  a0
l'événement B0  c'est   "quand n=0, y vaut 0". p(B0)  s'écrit  b0
l'événement C0  c'est   "quand n=0, y vaut 1". p(C0)  s'écrit  c0

au départ, y=0
la proba que y soit égal à -1   est nulle puisque y vaut 0,
cette proba s'écrit a0      donc  a0=0
idem pour c0..

la proba que y=0  vaut combien ? quelle est la proba d'un événement sûr ?

Posté par
mathafou Moderateur
re : Algorithmie avec python 16-02-23 à 20:03

Nota :
l'énoncé tel qu'il a été recopié ici prétend
1) justifier que a0= 0, b0= 1, c0=1
??

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 20:05

la proba que y = 0 est de 1, or b est l'événement dans lequel y=1 lorsque n = 0. Donc nous pouvons en déduire que b0 = 1

nous savons que y= 0, au départ :
a0 c'est l'évènement dans lequel y= -1. Donc a0 = 0
c0 c'est l'événement dans lequel y= 1. Donc c0= 0

est ce que c'est bon ?

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 20:05

mathafou, ceci a déjà été corrigé  (18:33).

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 20:06

Mathafou,
je dois justifier que c0= 0
j'ai fait une erreur en recopiant

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 20:14

sarah1828, oui, c'est ça, mais fais attention, les majuscules ont de l'importance.

la proba que y = 0 est de 1, or B0 est l'événement dans lequel y=1 lorsque n = 0. Donc nous pouvons en déduire que b0 = 1
A0 et C0  sont des évenements.   a0 et c0  sont des probas.

question suivante : on te dit que tu peux t'aider d'un arbre. Mais "l'arbre" que tu as posté ne t'aidera pas ...   et manifestement, tu as des difficultés pour dessiner l'arbre..

Je vais te donner le début de l'arbre. Et tu essayeras de le compléter et de répondre aux questions, d'accord ?


Posté par
Leile
re : Algorithmie avec python 16-02-23 à 20:18

voici l'arbre  à compléter.

Algorithmie avec python

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 20:18

Ok , je te remercie pour ton aide précieuse !

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 20:20

je te laisse le compléter.

En l'utilisant, tu pourras répondre aux questions.
A toi !

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 20:20

je suis désolé mais la je comprend vraiment pas ...

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 20:24

qu'est ce que tu ne comprends pas ?
evenement   An (y=-1) : on y arrive avec une proba an
de là, tik se déplace.
On a une chance sur 3  pour faire -1     ca nous donne y=-2
une chance sur 3  pour faire 0     ca donne y=-1   (donc An+1)
une chance sur 3  pour faire 1   ca donne y=0  (donc Bn+1)

compléte les branches sur lesquelles je n'ai rien mis.

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 20:47

est ce que c'est ok ?

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 20:49

.

Algorithmie avec python

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 20:58

oui, c'est bien, mais tu dois aussi placer les probas sur les branches où il n'y en a pas.
à côté du -1  (qui est juste), tu peux écrire An+1 (comme je l'ai fait plus haut).

maintenant, la question :
montrer que an+1  =  (an + bn)/3
c'est montrer que p(An+1)  =  (an + bn)/3

Il y a deux chemins qui mènent à  An+1
calcule la proba de chacun de ces chemins.    
  

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 21:08

ok , pour les probas, elles sont toutes égale à 1/3.
Pour an+1, les deux chemins sont
- an + bn
- bn + an

Pour bn +1, les chemins sont
- an + cn
- bn + bn
- cn + an

Pour cn +1, les chemins sont :
- bn + cn
- cn + bn

mais ducoup je n'arrive pas a an+1 = an + bn / 3...

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 21:17

sarah1828,
concentre  toi stp....
l'an dernier, tu en as fait des arbres.  Tu savais calculer la proba d'une issue , n'est ce pas ?

la proba d'une issue est obtenue en multipliant les probas 'ramassées' sur les chemins qui y mènent.


pour atteindre An+1
premier chemin : on passe par An et on va vers -1  :   p= an * 1/3
deuxième chemin : on passe par Bn et on va vers -1  : p = bn * 1/3
p(An+1)  =  somme des deux
donc ca donne ?

je te laisse faire le calcul pour p(Bn+1)   et  C(n+1)

Posté par
sarah1828
re : Algorithmie avec python 16-02-23 à 21:27

An+1 = an * 1/3 + bn*1/3 = an +bn / 3
Bn +1 = an * 1/3 + bn*1/3  + cn*1/3 = an+bn+cn / 3
Cn + 1 = bn *1/3 + cn*1/3 = bn+cn /3

Posté par
Leile
re : Algorithmie avec python 16-02-23 à 21:28

sarah1828  mets des parenthèses , voyons !

1 2 +




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 1675 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 !