Accueil / Contact

Bienvenu sur :

logo-mathetpython







ESPACE PRIVE

EXERCICES PREMIERE:SPECIALITE MATH


PROBABILITE/PROBABILITE CONDITIONNELLE:

On tourne une roue avec une vitesse de départ assez rapide,permettant de faire plusieurs tours:on repère la couleur du cadran qui contient la flèche quand la roue s'arrête.Dans le cas ci dessous la roue s'arrête sur la couleur rouge
carre
On donne le programme suivant:
En langage Python
from random import *
R=[]
def roue(n):
   for i in range (n) :
      L=["bleu","rouge","vert","noir"]
      a=choice(L)
      R.append(a)
   return R
print(roue(12))

1.A quoi sert la première ligne de code ainsi que la sixième et septième ligne?
2.Que fait ce programme ?
3.Que faut il modifier dans la fonction pour compter le nombre de fois ou la roue s'arrête sur la couleur bleue ?
4.Vers quel nombre devrait se rapprocher le résultat affiché si on demande print(roue(100)) ?
le jeu de la bataille navale appelé également le touché-coulé se joue à deux: Chacun des joueurs placent dans une grille des bateaux:
un torpilleur se représente par 2 carreaux, un sous marin par 3 carreaux, un contre torpilleur 3 carreaux, un croiseur 4 carreaux,un porte avion par 5.
cf un exemple de grille ci dessous.
carre
Tour à tour les candidats annoncent une lettre et un chiffre. Si un candidat touche un bateau par exemple un torpilleur il a le droit de rejouer.
1.Quelle est la probabilité pour que du premier coup,un joueur touche un bateau ?
2.Quelle est la probabilité pour qu 'un joueur coule un bateau en deux coup ?
3.On donne le programme suivant :
En langage Python

def choisir(l,c) :
   croiseur=["B2","B3","B4","B5"]
   porte_avion=["I5","I6","I7","I8","I9"]
   contre_torpilleur=["E3","F3","H3"]
   sous_marin=["F7","F8","F9"]
   torpilleur=["D7","D8"]
   resultat= l+str(c)
   if resultat in croiseur:
      return"vous avez touche un croiseur "
   if resultat in porte_avion:
      return"vous avez touché un porte avion"
   if resultat in contre_torpilleur:
      return"vous avez touché un contre torpilleur"
   if resultat in sous_marin :
      return"vous avez touché un sous marin"
   elif resultat in torpilleur:
      return"vous avez touché un torpilleur"
   else:
      return "vous avez perdu !"
print(choisir("F",8))

Que contient la variable resultat?
4.Ecrire un programme plus court annoncant à chaque fois au joueur si un bateau sans le nommer a été coulé.
Marche aléatoire à deux dimensions :


Exemple :
On imagine une souris qui part du centre de la figure ci dessous.
carre
la souris se déplace chaque seconde,de façon aléatoire d'un carreau, et peut se diriger uniquement dans les quatre directions suivantes :
horizontalement(à gauche ou a droite )
verticalement (en haut ou en bas).
Le chemin parcouru par la souris au bout de t secondes et bien aléatoire,de plus elle se déplace dans un plan :on peut modéliser le trajet parcouru par la souris comme une marche aléatoire de dimension 2.
1.Représenter en utilsant matplotlib ,une grille qui affichera le quadrillage du dessin c'est à dire deux axes gradués de 1 en 1 à partir de 0 et de valeur maximale 9.
2.On donne le programme suivant:
En langage Python
def graph_aleatoire(n) :
      x=[5]
      y=[5]
      for i in range (1,n):
          L1=[0,-1,1]
          L2=[-1,1]
          h1=choice(L1)
          h2=choice(L2)
          if h1==0 :
            x.append(x[i-1])
            y.append(y[i-1]+h2)
          else :
            x.append(x[i-1]+h1)
            y.append(y[i-1])
            plt.plot(x,y)
      plt.show()
graph_aleatoire(25)

Que fait l'instruction conditionnelle?
3.Que fait ce programme ?
4.Modifier le programme pour écrire les coordonnées du point d'arrivée de la souris.
Méthode de Monté Carlo pour l'approximation du nombre pi :

C'est une méthode probabiliste :On se donne deux figures simples dont l'aire de la surface d'une des figures dépend du nombre pi.
Exemple :
figure_monte_carlo
Première figure: un carré de côté 1(unité)
Deuxième figure: un quart de disque de rayon 1 (unité), inscrit dans le carré précédent,l'aire notée A1 de cette surface est égale à pi/4 unite ².
si on définit un point M d'abscisse et d'ordonnée aléatoires entre 0 et 1,la probabilité p pour que le point M appartienne au quart de disque de rayon 1 est égale au rapport des surfaces.
p = Aire de la surface du quart du disque / Aire de la surface du carré
p= pi/4
Or d'après les lois de probabilités p= f
avec f désignant la fréquence des points qui appartienent au quart du disque si on fait une simulation avec un nombre de points assez grand pris aléatoirement.
Le principe est donc de construire un nombre de point N alétoires et de vérifier si ils sont dans le quart du disque (frontière comprise), d'en déduire f et ainsi on aura une approximation du nombre pi !
On donne l’algorithme suivant :
En langage Python
from math import*
from random import *
import matplotlib.pyplot as plt
plt.axis(xmin=0, xmax=1,ymin=0,ymax=1)
Lx=[x/400 for x in range (401)]
Ly=[sqrt(1-x**2) for x in Lx]
plt.plot(Lx,Ly,"black",".",ms=4)
def point_monte_carlo(N):
      L_abs =[ random() for i in range(N) ]
      L_ord =[ random() for i in range(N) ]
      plt.plot(L_abs,L_ord ,"b.",ms=5)
      plt.show()
point_monte_carlo(30)

1. Expliquer les lignes 5 et 6 du code.
2. Quelle est la différence entre la ligne de code plt.plot(Lx,Ly,"black",".",ms=4) et plt.plot(L_abs,L_ord ,"b.",ms=5)
3. Que fait ce programme ?
4. Modifier ce programme pour qu'il affiche:
-  le nombre de points parmi les N construits qui appartiennent à la surface du quart du disque.
-  la probabilité p pour qu'un point appartiennent à cette surface.
-  On pourra également faire apparaître en bleu les points qui appartiennent à cette surface en rouge ceux qui sont à l'extérieur.

Réponses possibles
EX1:
Question 1: on importe la bibliothèque random pour utiliser la fonction choice qui permet de choisir une couleur aléatoire dans la liste L (ligne 6 du code)
la ligne 7 sert à ajouter la couleur dans la liste R.
Question 2: Ce programme simule 12 lancers d'une roue partagée en quatre secteurs identiques mais de couleurs différentes.A chaque fois on note sur quelle couleur s'arrête la roue, cette couleur est mise dans la liste R
Question 3: Il faut rajoute R.count (L[0])la méthode count permet de compter le nombre de fois où la couleur bleue (c'est à dire L[0] )apparaît
Question 4: Les secteurs de la roue étant identiques,la probabilité que la roue s'arrête sur le secteur de couleur bleue est de 0,25 . Si on fait cent lancér le nombre devrait être proche de 25 .
EX2 Question 1 : au total la grille compte 90 carreaux. L'ensemble des bateaux nécessitent 17 carreaux.La probabilité pour qu'un joueur touche un bateau du premier coup est donc de 17/90 /
Question 2 : pour qu'un joueur coule un bateau en deux coups il ne peut s'agir que d'un torpilleur car c'est le seul bâteau constitué de deux carreaux.
Si on note A l'évenement : "un joueur touche du premier coup un torpilleur "
P(A) = 2 / 90
Si on note B l'évenement : "le joueur touche le torpilleur"
la probabilté que le joueut touche à nouveau le torpilleur est la probabilité conditionnelle P(B/A) .
ensuite le joueur dans le cas de la figure a 4 possibilités différentes pour choisir l'autre carreau du torpilleur P(B/A) = 1/4 la probabilite p pour qu'un joueur coule en deux coups le torpilleur est p= 2/90* 1/4 = 1/180
Question 3: change 8 en chaîne de caractères pour faire une concaténation de ces deux châînes de caractères .La variable résultat contient la case choisie par le joueur.
Question 4: un programme possible
En langage Python
def choisir(l,c) :
   L1 = ["B2","B3","B4","B5","I5","I6","I7","I8","I9","E3","F3","H3","F7","F8","F9","D7","D8"]
   resultat= l+str(c)
   if resultat in L1:
      return"vous avez touche un bateau "
   else:
      return "vous avez perdu !"
print(choisir("F",8))
EX3: Attention ce programme ne peut pas être utiliser avec l'éditeur présent sur le site ! il faut le faire avec un EDI (pyzo etc ) Question 1: réglage de la grille de façon précise en utilisant matplotlib :
En langage Python
import matplotlib.pyplot as plt
axes=plt.gca()
axes.xaxis.set_ticks(range(11))
axes.yaxis.set_ticks(range(11))
plt.axis([0,10,0,10])
plt.grid()
plt.show()
Question 2: L'instruction conditionnelle if sert à tenir compte du fait que la souris se déplace d'un seul carreau et de façon aléatoire d'où utilisationd de la fonction choice
Question 3:Ce programme sert à enregistrer et visualiser ( attention il faudrait rajouter la grille précédemment construite) le déplacement alèatoire de la souris en ajoutant à chaque fois une liste de nouveau point à construire .

En langage Python
import matplotlib.pyplot as plt
axes=plt.gca()
axes.xaxis.set_ticks(range(11))
axes.yaxis.set_ticks(range(11))
plt.axis([0,10,0,10])
plt.grid()
def graph_aleatoire(n) :
      x=[5]
      y=[5]
      for i in range (1,n):
          L1=[0,-1,1]
          L2=[-1,1]
          h1=choice(L1)
          h2=choice(L2)
          if h1==0 :
            x.append(x[i-1])
            y.append(y[i-1]+h2)
          else :
            x.append(x[i-1]+h1)
            y.append(y[i-1])
            plt.plot(x,y)
      plt.show()
graph_aleatoire(5)
plt.show()
Question 4 : il suffit de demander d'afficher la valeur d 'indice n-1 de la liste de x et de y !
En langage Python
import matplotlib.pyplot as plt
axes=plt.gca()
axes.xaxis.set_ticks(range(11))
axes.yaxis.set_ticks(range(11))
plt.axis([0,10,0,10])
plt.grid()
def graph_aleatoire(n) :
      x=[5]
      y=[5]
      for i in range (1,n):
          L1=[0,-1,1]
          L2=[-1,1]
          h1=choice(L1)
          h2=choice(L2)
          if h1==0 :
            x.append(x[i-1])
            y.append(y[i-1]+h2)
          else :
            x.append(x[i-1]+h1)
            y.append(y[i-1])
            print(x[n-1],y[n-1])
            plt.plot(x,y)
      plt.show()
graph_aleatoire(5)
plt.show()
EX4:
Question 1: Cette fonction contient 4 paramètres : n, a,b,c
Question 2:L.appen(i) rajoute i si y = 0
Question 3:Ce programme affiche les 30 points positionnés aléatoirement dans le carré de côté 1.
Il suffit de compter le nombre de points à l'intérieur de la surface définie par le quart de cercle pour définir la probabilité p.
point_monte_carlo
Dans le cas présent il ya 25 points à l'intérieur du quart du disque p= 25 / 30
or p= surface du quart du disque / surface du carré
p = pi / 4
pi = 4 p
pi = 4* 25 /30
pi proche de 3,3.On est cencore loin de 3,14 ..........
Question 4 :
En langage Python
from math import*
from random import *
import matplotlib.pyplot as plt
plt.axis(xmin=0, xmax=1,ymin=0,ymax=1)
Lx=[x/400 for x in range (401)]
Ly= [sqrt(1-x**2) for x in Lx]
plt.plot(Lx,Ly,"black",".",ms=4)
plt.show()
def point_monte_carlo(N):
   c=0
   L_abs =[ random() for i in range(N) ]
   L_ord =[ random() for i in range(N) ]
   for i in range(N):
    if L_abs[i]**2 + L_ord[i]**2 <= 1 :
      plt.plot(L_abs[i],L_ord[i],"b.",ms=4)
      c=c+1
    elif L_abs[i]**2 + L_ord[i]**2 >1:
      plt.plot(L_abs[i],L_ord[i],"r.",ms=4)
   plt.show()
   print("p=",c/N)
   print("une approximation de pi est ",4*c/N )
point_monte_carlo(30)

					
					
logotop