<h1>Initiation à la mécanique quantique<br> Interféromètre de Mach-Zenhder</h1>

<h2>Présentation</h2>

<ul>
<li> La lumière est constituée de particules élémentaires indivisibles: les photons.
<li> On sait réaliser des miroirs semi-transparents (ou des lames semi-réfléchissantes) qui laissent passer la moitié de la lumière et qui réfléchissent la moitié de la lumière. (C'est assez facile à faire en jouant sur l'épaisseur du dépôt métallique). Très exactement, cela veut dire ceci: si on éclaire ce miroir semi-transparent avec un laser de 100 mW: 50 mW est réfléchi et 50 mW est transmis.
</ul>

<h3>Dispositif à une séparatrice</h3>

Dans le cas où un photon unique arrive sur un miroir semi-transparent, on ne peut pas prédire si celui-ci sera transmis ou réfléchi. Le phénomène est aléatoire (complètement imprévisible). 



Simuler l'arrivée d'un photon sur un miroir semi-transparent
<ul>
<li> en utilisant des probabilités classiques
<li> en utilisant le formalisme quantique.<br>
Ce formalisme repose sur trois principes.
<ul>
<li> Premier principe:
la probabilité $P$ pour qu'une particule, émise initialement en $I$, soit détectée finalement en $F$, est le module
carré d'un nombre complexe qui représente l'amplitude de probabilité pour que la particule aille de $I$ à $F$.
On écrit: $P=\Big|\,{\langle F|I\rangle}\,\Big|^2$.<br>
Avec cette notation: le symbole $\langle...\rangle$ signifie "amplitude de probabilité pour que ..." et le contenu des crochets signifie "condition finale $|$ condition initiale".<br>
Pour une particule libre (i.e. soumise à aucune force), d'impulsion $\vec p$, l'amplitude de probabilité
d'aller de $I$ à $F$ est (à un facteur numérique près):
$\langle F|I\rangle={1\over IF}.e^{i.\vec p.\overrightarrow{IF\ }/\hbar}$<br>
avec $p^2.c^2=E^2-(m_0.c^2)^2$ pour une particule relativiste<br>
ou $p^2 =2.m.E_c$ (i.e. $\vec p=m.\vec v$) pour une particule non-relativiste.

<li> Deuxième principe:
lorsqu'une particule a à sa disposition deux chemins indiscernables \encercle{1} <b> ou</b> \encercle{2} pour aller de $I$ à $F$,
on <b> somme</b> les amplitudes de probabilité: $\langle F|I\rangle=\langle F|I\rangle_1+\langle F|I\rangle_2$.
On a alors: $P=\Big|\,\langle F|I\rangle_1+\langle F|I\rangle_2\,\Big|^2$.<br>
En revanche, si les deux chemins sont discernables, on somme les probabilités (et non les amplitudes):
$P=\Big|\,\langle F|I\rangle_1\,\Big|^2+\Big|\,\langle F|I\rangle_2\,\Big|^2=P_1+P_2$.

<li> Troisième principe:
lorsqu'un chemin particulier se décompose en deux étapes, par exemple s'il faut que la particule aille de $I$ à $E$
<b> et</b> de $E$ à $F$, on <b> multiplie</b> les amplitudes de probabilité:
$\langle F|I\rangle=\langle F|E\rangle.\langle E|I\rangle$.
</ul>

Ici, la source émet une particule dans l'état $|S\rangle$.<br>
On montre, en électromagnétisme, que la réflexion sur un miroir introduit un déphasage qui se traduit ici par une multiplication par $e^{i.\pi/2}=i$.<br>
L'état initial $|S\rangle$ doit s'écrire: $|S\rangle={1\over\sqrt{2}}.(|T\rangle + i.|R\rangle)$;
calculer $\langle T|S\rangle$ et $\langle R|S\rangle$; en déduire les probabilités d'atteindre les détecteurs $R$ et $T$.<br>
On pourra utiliser la bibliothèque <tt>sympy</tt>:
<pre>
from sympy.physics.quantum import Bra,Ket,qapply
</pre>
</ul>

<h3>Deux séparatrices en cascade</h3>

Simuler le comportement d'un photon sur deux miroirs semi-transparents en cascade (voir figure).

<ul>
<li> en utilisant des probabilités classiques
<li> en utilisant le formalisme quantique.<br>
Calculer $\langle TT|S\rangle$, $\langle TR|S\rangle$, $\langle RR|S\rangle$ et $\langle RT|S\rangle$; en déduire les probabilités d'atteindre les différents détecteurs.
</ul>



<h3>Interféromètre de Mach Zehnder</h3>

Simuler le comportement d'un photon dans un interféromètre de Mach Zehnder (voir figure).

<ul>
<li> en utilisant des probabilités classiques
<li> en utilisant le formalisme quantique.<br> Les miroirs parfaits transforment $|T\rangle$ en $|T\rangle=i.|T'\rangle$ et $|R\rangle$ en $|R\rangle=i.|R'\rangle$.
Calculer $\langle D_1|S\rangle$ et $\langle D_2|S\rangle$; en déduire les probabilités d'atteindre les détecteurs $D_1$ et $D_2$.
</ul>

Comparer les deux méthodes et conclure.



<h1>Solution</h1>

<h3>Monte Carlo</h3>


```ocaml
let separatrice () = 
    let choix = ["R";"T"] in
    List.nth choix (Random.int 2)
```




<pre style="color:slategray;max-height:100px;overflow:hidden" 
onclick="
if (this.style.maxHeight === 'none') 
    this.style.maxHeight = '100px';
else
    this.style.maxHeight = 'none'; 
">val separatrice : unit -&gt; string = &lt;fun&gt;
</pre>




```ocaml
let proba_separatrice nbre_essais =
    let rec loop num_essai proba_R proba_T =
       if num_essai<nbre_essais then
           if separatrice () = "R"
              then loop (num_essai+1) (proba_R+1) proba_T
              else loop (num_essai+1) proba_R (proba_T+1)
       else 
           List.map (fun x -> float_of_int x/.(float_of_int nbre_essais))
                    [proba_R; proba_T] in
            
    loop 0 0 0;;

proba_separatrice 1000;;
```




<pre style="color:slategray;max-height:100px;overflow:hidden" 
onclick="
if (this.style.maxHeight === 'none') 
    this.style.maxHeight = '100px';
else
    this.style.maxHeight = 'none'; 
">val proba_separatrice : int -&gt; float list = &lt;fun&gt;
</pre>






<pre style="color:slategray;max-height:100px;overflow:hidden" 
onclick="
if (this.style.maxHeight === 'none') 
    this.style.maxHeight = '100px';
else
    this.style.maxHeight = 'none'; 
">- : float list = [0.491; 0.509]
</pre>




```ocaml
let separatrice_en_cascade () =
    if separatrice()="R" then 
        begin
        let choix = ["RR";"RT"] in
        List.nth choix (Random.int 2)
        end
    else begin
        let choix = ["TR";"TT"] in
        List.nth choix (Random.int 2)
        end;;
```




<pre style="color:slategray;max-height:100px;overflow:hidden" 
onclick="
if (this.style.maxHeight === 'none') 
    this.style.maxHeight = '100px';
else
    this.style.maxHeight = 'none'; 
">val separatrice_en_cascade : unit -&gt; string = &lt;fun&gt;
</pre>




```ocaml
exception Error;;
let proba_separatrice_en_cascade nbre_essais =
     let rec loop num_essai proba_RR proba_RT proba_TR proba_TT =
          if num_essai<nbre_essais then
             let res = separatrice_en_cascade () in
             match res with
             | "RR" -> loop (num_essai+1) (proba_RR+1) proba_RT proba_TR proba_TT
             | "RT" -> loop (num_essai+1) proba_RR (proba_RT+1) proba_TR proba_TT
             | "TR" -> loop (num_essai+1) proba_RR proba_RT (proba_TR+1) proba_TT
             | "TT" -> loop (num_essai+1) proba_RR proba_RT proba_TR (proba_TT+1)
             | _ -> raise Error
         else
         List.map (fun x -> float_of_int x/.(float_of_int nbre_essais))
                  [proba_RR; proba_RT; proba_TR; proba_TT] in
                  
    loop 0 0 0 0 0;;

proba_separatrice_en_cascade 1000;;
```




<pre style="color:slategray;max-height:100px;overflow:hidden" 
onclick="
if (this.style.maxHeight === 'none') 
    this.style.maxHeight = '100px';
else
    this.style.maxHeight = 'none'; 
">exception Error
</pre>






<pre style="color:slategray;max-height:100px;overflow:hidden" 
onclick="
if (this.style.maxHeight === 'none') 
    this.style.maxHeight = '100px';
else
    this.style.maxHeight = 'none'; 
">val proba_separatrice_en_cascade : int -&gt; float list = &lt;fun&gt;
</pre>






<pre style="color:slategray;max-height:100px;overflow:hidden" 
onclick="
if (this.style.maxHeight === 'none') 
    this.style.maxHeight = '100px';
else
    this.style.maxHeight = 'none'; 
">- : float list = [0.242; 0.248; 0.255; 0.255]
</pre>




```ocaml
let mach_zehnder() =
    if separatrice()="R" then 
        begin
        let choix = ["D1";"D2"] in
        List.nth choix (Random.int 2)
        end
    else begin
        let choix = ["D1";"D2"] in
        List.nth choix (Random.int 2)
        end;;
```




<pre style="color:slategray;max-height:100px;overflow:hidden" 
onclick="
if (this.style.maxHeight === 'none') 
    this.style.maxHeight = '100px';
else
    this.style.maxHeight = 'none'; 
">val mach_zehnder : unit -&gt; string = &lt;fun&gt;
</pre>




```ocaml
exception Error;;
let proba_mach_zehnder nbre_essais =
     let rec loop num_essai proba_D1 proba_D2 =
          if num_essai<nbre_essais then
             let res = mach_zehnder () in
             match res with
             | "D1" -> loop (num_essai+1) (proba_D1+1) proba_D2
             | "D2" -> loop (num_essai+1) proba_D1 (proba_D2+1)
             | _ -> raise Error
         else
         List.map (fun x -> float_of_int x/.(float_of_int nbre_essais))
                  [proba_D1; proba_D2] in
                  
    loop 0 0 0;;

proba_mach_zehnder 1000;;
```




<pre style="color:slategray;max-height:100px;overflow:hidden" 
onclick="
if (this.style.maxHeight === 'none') 
    this.style.maxHeight = '100px';
else
    this.style.maxHeight = 'none'; 
">exception Error
</pre>






<pre style="color:slategray;max-height:100px;overflow:hidden" 
onclick="
if (this.style.maxHeight === 'none') 
    this.style.maxHeight = '100px';
else
    this.style.maxHeight = 'none'; 
">val proba_mach_zehnder : int -&gt; float list = &lt;fun&gt;
</pre>






<pre style="color:slategray;max-height:100px;overflow:hidden" 
onclick="
if (this.style.maxHeight === 'none') 
    this.style.maxHeight = '100px';
else
    this.style.maxHeight = 'none'; 
">- : float list = [0.505; 0.495]
</pre>



<h3>Discussion</h3>
<h4>Dispositif à une séparatrice</h4>

<ul>
<li> Le comportement du photon est complètement aléatoire.<br>
Il n'y a <b>aucun</b> moyen de prévoir le comportement d'une seule particule. Le hasard n'a <b>pas de mémoire</b>. Si les trois premières particules ont été détectées sur le chemin R, rien ne dit que la quatrième suivra également le chemin R. Il ne faut pas croire non plus qu'il y ait une sorte de "déficit" sur le chemin T et que, pour compenser, la prochaine particule devra suivre le chemin T.

<li> En revanche, comme la séparatrice a une réflectivité de 50%: 
si on envoie 100 milliards de particules,
on aura à peu près (aux fluctuations statistiques près) 50 milliards de particules réfléchies et 50 milliards de particules transmises. Le comportement collectif lui est complètement prévisible.

<li> Le hasard quantique n'est pas de même nature que celui que l'on rencontre en mécanique classique dans l'étude des phénomènes chaotiques par exemple. (Le chaos se manifeste dans des systèmes extrêmement sensibles aux conditions initiales). Dans les phénomènes chaotiques, l'impression de hasard vient du fait que l'expérience n'est pas exactement reproductible; mais, sur le principe, si on pouvait lancer une pièce de monnaie (ou un dé ou une bille à la roulette d'un casino) avec des conditions initiales strictement identiques, on obtiendrait des résultats reproductibles et la trajectoire de la pièce (ou du dé ou de la bille) serait, en théorie, prédictible. Ici, dans l'expérience du photon sur la séparatrice, les conditions initiales sont parfaitement définies et pourtant le résultat n'est pas prédicitible.

<li> Les probabilités quantiques ne sont pas, non plus, de même nature que les probabilités de la mécanique statistique (où l'on s'intéresse à des milliards de milliards de particules, alors que - dans l'expérience quantique décrite - on s'intéresse à un seul photon). Si, en mécanique statistique, on fait des moyennes c'est parce que l'on n'a pas le courage d'écrire un milliard d'équations (on parle d'explosion calculatoire). Il n'empêche que - sur le principe - ça serait possible. D'ailleurs, avec de très gros ordinateurs, on peut simuler le comportement de quelques centaines, voire quelques milliers, de particules. On est alors capable de prédire la trajectoire de toutes les particules individuellement.
</ul>

<h4>Deux séparatrices en cascade</h4>

Pour un physicien, quelque chose de rigoureusement impossible à calculer, c'est tellement nouveau que certains ont imaginé des <b> échappatoires</b> pour rétablir - <b> pour des raisons philosophiques</b> - le déterminisme.
Certains ont objecté que, peut-être, toutes les particules émises par la source ne sont pas identiques. Certaines particules pourraient être programmées pour ne faire que des transmissions, d'autres que des réflexions. C'est astucieux: qui dit que, dans l'avenir, on ne découvrira pas un paramètre interne (une sorte de "gène") qui explique le comportement individuel des particules sans invoquer le hasard.

L'expérience avec deux séparatrice en cascade permet de rejeter cette objection.

Comme tout à l'heure, la particule peut être transmise ou réfléchie puis à nouveau transmise ou réfléchie. Tout se passe bien comme prévu: 1 chance/2 d'être transmise la première fois; puis 1 chance/2 d'être transmise une seconde fois. Finalement, quand on mesure la probabilité d'arriver en TT, on obtient bien de 1 chance/4. De même pour les autres trajets (TR, RT, RR). (La situation est analogue à deux tirages "pile" successifs ou bien pile-face, face-pile, face-face). Si certaines particules étaient programmées pour ne faire que des transmissions, on aurait mesuré une probabilité nulle pour le chemin TR (de même pour le chemin RT si d'autres étaient programmées pour ne faire que des réflexions).

C'est la preuve que le phénomène est parfaitement aléatoire.

<h4>Interféromètre de Mach Zehnder</h4>

A la première séparatrice, la particule peut "choisir" de continuer tout droit (1 chance/2), c'est le chemin T, puis elle est réfléchie avec une probabilité de 100 %, enfin elle peut "choisir" de continuer tout droit ou d'être réfléchie.
De même pour le chemin R.

Essayons de deviner ce que va être le résultat de cette expérience. Facile, non ? La probabilité pour arriver en (TR ou RT) devrait s'écrire: $P(TR)+P(RT)={1\over2}.{1\over2}+{1\over2}.{1\over2}={1\over4}+{1\over4}={1\over2}$. De même pour (TT ou RR).

Pourtant l'expérience montre que toutes les particules vont en (TR ou RT). Aucune en (TT ou RR).
L'effet de la première séparatrice est complètement aléatoire.
L'effet de la deuxième séparatrice est complètement aléatoire. Mais l'effet de l'ensemble est certain !

<h3>Conclusion</h3>

Les probabilités quantiques sont de nature différente des probabilités classiques.
On ne peut pas simuler une expérience quantique avec la fonction <tt>random</tt> sur un ordinateur classique.

Dans l'interféromètre de Mach Zehnder, seul le calcul quantique permet de démontrer que toutes particules vont en (TR ou RT).



```ocaml

```

6b004c31457992cf5c41c1dca4be6b3da8682fdc
ipynb
Jupyter Notebook
Mach_Zehnder/Mach_Zehnder_OCaml_solution.ipynb
kf71/Probabilite_avec_OCaml
3966a154217d6ca6abbf2223823615ad8ae0e64b
MIT
Mach_Zehnder/Mach_Zehnder_OCaml_solution.ipynb
kf71/Probabilite_avec_OCaml
3966a154217d6ca6abbf2223823615ad8ae0e64b
MIT
Mach_Zehnder/Mach_Zehnder_OCaml_solution.ipynb
kf71/Probabilite_avec_OCaml
3966a154217d6ca6abbf2223823615ad8ae0e64b
MIT
Qwen/Qwen-72B
1. YES
2. YES