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
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.
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
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 ?
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 ?
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.
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 ?
(-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 ?
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...
***********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 et
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é")
*****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************
***********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é")
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
?
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... !
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
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
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 ?
flight
je voulais dire : les parenthèses manquantes
an+1= (an +bn) / 3
bn+1= (an + bn + cn)/ 3
cn+1 = (bn+cn) /3
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)
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
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.
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
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 ?
pour moi A0 = -1 et C0 = 1
Mais dans la question il faut justifier, donc on doit trouver leurs résultats...
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 ?
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 ?
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 ?
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.
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.
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...
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)
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
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :