TP 8 : utilisation de aléa

Exercice 1 : probabilités discrètes

Question 1 : Créer une variable aléatoire discrète X de distribution : $$ (0.4, 0.3, 0.2, 0.1) $$

In [ ]:
 

Question 2 : Tirer aléatoirement $M = 10000$ valeurs selon $X$, puis afficher l'histogramme correspondant.

In [ ]:
 

Exercice 2 : autour de la loi normale

On considère la loi normale, centrée en $0$ et de variance $\sigma = 1$, aussi nommé loi gaussienne.

Question 1 : Afficher la fonction de densité de probabilité de la loi normale, entre $x_{\rm min} = -5$ et $x_{\rm max} = 5$.

In [ ]:
 

Question 2 : Sur le même graphique, afficher dans une autre couleur la fonction de répartition de la loi normale.

In [ ]:
 

Question 3 (optionnelle) : Calculer, de manière approchée, l'espérance et la variance de la loi normale. Pour rappel, si $f(t)$ est la densité de probabilité de la loi normale $N$, alors l'espérance de $N$ est donnée par $$ \mathbb{E}(N) = \int_{-\infty}^{+\infty} t f(t) dt $$ et sa variance est donnée par $$ \mathbb{V}(N) = \int_{-\infty}^{+\infty} t^2 f(t) dt - \mathbb{E}(N)^2 $$

Pour calculer une intégrale de manière approchée, on pourra utiliser la fonction d'intégration numérique numerical_integrate(f(x), (x, -oo, oo)), où le symbole oo représente $\infty$.

In [ ]:
 

Exercice 3 : approximation de $\pi$

Question 1 : Écrire une fonction interieur_disque(x, y) qui teste si un point de coordonnées $(x,y)$ est à l'intérieur du cercle de centre $(0, 0)$ et de rayon $1$.

In [ ]:
 

Question 2 : Écrire une fonction tirages_disque(N) qui tire $N$ points $(x, y)$ uniformément dans $[-1, 1]^2$, et qui compte le nombre de points contenus dans le disque de centre $(0, 0)$ et de rayon $1$.

In [ ]:
 

Pour de grandes valeurs de $N$, le rapport entre le nombre de tirages à l'intérieur du disque et le nombre de tirages total, tend vers le rapport des aires du disque et du carré $[-1, 1]^2$.

Question 3 : Déduire de la remarque précédente une approximation de $\pi$.

In [ ]:
 

Exercice 4 : paradoxe des anniversaires

Le paradoxe des anniversaires stipule, informellement, que la probabilité qu'un groupe de $N = 23$ personnes contienne deux personnes ayant le même jour d'anniversaire dépasse $1/2$.

Si le groupe contient 4 fois plus de personnes ($N = 92$), alors cette probabilité est supérieure à $0.999$.

Pour simplifier, on ne considère pas les années bissextiles.

Question 1 : Écrire une fonction experience_anniversaire(N) qui tire une liste de $N$ valeurs uniformémement parmi les entiers $\{0, 1, \dots, 364 \}$ (cela représente les jours de l'année), et qui teste si au moins deux des éléments de la liste sont égaux. La valeur du test sera retournée par la fonction.

In [ ]:
 

Question 2 : En réalisant suffisamment de fois l'expérience ci-dessus (par exemple, $10000$ ou $100000$ fois), vérifier les résultats donnés en préambule de l'exercice.

In [ ]:
 

Exercice 5 : précision des sondages

Dans une élection, $N$ électeurs votent pour élire un candidat parmi deux. On suppose que le candidat $A$ reçoit une proportion des voix $a \in ]1/2, 1]$, et donc que le candidat $B$ reçoit la proportion des voix restante $b = 1-a$. Le candidat $A$ est donc censé être le vainqueur des élections.

Juste avant l'élection, un sondage est effectué avec $M$ électeurs.

Question 1 : Écrire une fonction liste_votes(N, a) qui retourne la liste des votes. On supposera que $aN$ est un entier.

In [ ]:
 

Question 2 : En utilisant la fonction Subsets(N, M).random_element(), écrire une fonction sondage(L, M) qui choisit aléatoirement $M$ élécteurs parmi $N$, et qui retourne la proportion de votes pour le candidat $A$ parmi les votes de la liste $L$.

Attention, la fonction Subsets(N, M).random_element() renvoie un ensemble d'indices entre $1$ et $N$.

In [ ]:
 

On dit que le sondage est correct s'il donne le bon vainqueur des élections.

Question 3 : Écrire une fonction experience_sondage(L, M, T) qui réalise $T$ sondages de taille $M$, et qui retourne le nombre moyen de fois que $A$ sort vainqueur des élections selon ces sondages.

In [ ]:
 

Question 4 : On fixe une liste de votes $L$ fixée, de taille $N = 100000$ avec une valeur de $a = 0.52$. On fixe également $T = 200$. Afficher la fonction experience_sondage(L, M, T) en fonction de $M$. On prendra des valeurs de $M$ entre $100$ et $4000$, grandissant de $100$ en $100$.

Commenter le résultat.

Remarque : le temps de calcul peut être un peu long, quelques dizaines de secondes par exemple.

In [ ]:
 

Question 5 : On fixe une liste de votes $L$ fixée, de taille $N = 100000$. On fixe une taille d'échantillon $M = 100$ et on garde $T = 200$. Afficher la fonction experience_sondage(L, M, T) en fonction de $a$. On prendra des valeurs de $a$ entre $0.501$ et $0.55$, grandissant de $0.01$ en $0.01$.

Commenter le résultat.

Remarque : le temps de calcul peut être un peu long, quelques dizaines de secondes par exemple.

In [ ]:
 

Exercice 6 : fougère de Barnsley

Le but de cet exercice est de produire la fractale appelée "fougère de Barnsley".

Pour construire cette fractale, on considère $4$ matrices $M_1$, $M_2$, $M_3$, $M_4$ et $4$ vecteurs $b_1$, $b_2$, $b_3$ et $b_4$ : $$ M_1 = \begin{pmatrix} 0 & 0 \\ 0 & 0.16 \end{pmatrix},\quad M_2 = \begin{pmatrix} 0.8 & 0.04 \\-0.04 & 0.85 \end{pmatrix},\quad M_3 = \begin{pmatrix} 0.2 & -0.26 \\ 0.23 & 0.22 \end{pmatrix},\quad M_4 = \begin{pmatrix} -0.15 & 0.28 \\ 0.26 & 0.24 \end{pmatrix} $$

$$ b_1 = \begin{pmatrix} 0 \\ 0\end{pmatrix},\quad b_2 = \begin{pmatrix} 0 \\ 1.6 \end{pmatrix},\quad b_3 = \begin{pmatrix} 0 \\ 1.6 \end{pmatrix},\quad b_4 = \begin{pmatrix} 0 \\ 0.44 \end{pmatrix} $$

Cette fractale est produite de la manière suivante :

  • on part du point initial $P_0 = (x_0, y_0) = (0, 0)$
  • puis, pour tout $n$, le point $P_n$ est construit en fonction de $P_{n-1}$ avec un processus aléatoire :
    • avec probabilité $0.01$, on a $P_n = M_1 P_{n-1} + b_1$
    • avec probabilité $0.85$, on a $P_n = M_2 P_{n-1} + b_2$
    • avec probabilité $0.07$, on a $P_n = M_3 P_{n-1} + b_3$
    • avec probabilité $0.07$, on a $P_n = M_4 P_{n-1} + b_4$

Pour un entier $N$ fixé, la fractale de Barnsley de taille $N$ correspond à l'ensemble des points $P_0, \dots, P_{N-1}$ ainsi construit.

Voici la fractale voulue (avec $250000$ points).

image.png

Question : Construire une fonction ̀fougere(N) qui construit la liste des points de la fractale de Barnsley de taille $N$.

Puis, afficher cette fractale pour $N = 100$, $N = 1000$, $N = 10000$ et si possible, $N= 100000$. Pour l'affichage, on utilisera un nuage de points verts de taille size=2 ou size=1, et on enlèvera les axes de la figure avec l'option axes=False.

In [ ]: