Simulation logique d’un polariseur.
Cette page présente une approche réaliste locale tentant d’expliquer les corrélations EPR à l’aide de variables cachées locales.
Elle utilise une fonction permettant de simuler le comportement d’un polariseur sous une forme logique, plutôt qu’une simulation de phénomènes physiques.
Le résultat retourné par cette fonction permet de:
-
Générer la loi de Malus entre polariseurs.
- Produire les coïncidences de détection pour des photons non intriqués.
- Produire 3/4 des coïncidences de détection pour des photons intriqués.
- Prédire dans ce dernier cas si la mesure est conforme aux corrélations
QM ou pas.
Ecrite en langage C elle a la forme suivante:
int polarize(struct pho_t *p, int a_pol);
Avec p une structure représentant l’état du photon, et contenant deux variables cachées locales.
struct pho_t
{
int a;
int b;
};
La fonction utilise l’angle du polariseur local et les deux variables cachées du photon afin de définir la sortie du polariseur prise par le photon.
Elle retourne un nombre entier contenant dans les bits b0 et b1 deux informations.
Le bit b0
indique la sortie du polariseur prise par le photon.
Le bit b1 définit un état de la particule après le passage dans le polariseur.
Lors d’un test de corrélation de détection entre deux photons, le couple de bits b1 permet de définir 4 états.
Particule
A B
b1 0 0
b1 0 1
b1 1 0
b1 1 1
Les paires de particules avec des états identiques 00 et 11 généreront alors
les corrélations de détection QM.
Il est alors possible avec un unique test utilisant un ou exclusif de connaitre
à l'avance la corrélation.
Avec r1 et r2 étant les résultats retournés par chaque polariseur, on peut définir la variable c :
c = (r1 ^ r2) & 2
Si
c = 0 =>
paire corrélée QM
c = 2 => paire non corrélée QM
Voici 3 programmes permettant de tester la fonction.
Ce programme simule une source de photons intriqués et effectue des mesures de corrélations pour des différences d’angle entre polariseurs de 0 à 90° par pas de 5 degrés.
Il sélectionne les paires contenant des photons dans des états identiques en utilisant le test décrit ci-dessus.
En utilisant ces paires il fait la mesure des taux de corrélations de coïncidences et les compares avec les résultats théoriques prévus pas la MQ.
Pour rappel, ceux-ci sont cos²(a_diff) et sin²(a_diff) pour les corrélations de détection ++/-- et +-/-+.
Ce programme
est identique au précédent, mais simule deux sources de photons indépendantes
polarisées.
Il utilise alors toutes les paires détectée, et compare les mesures de
corrélation avec celles prévues pour des photons non intriqués.
Celles ci sont 0.25 + 0.5*cos²(a_diff) et 0.25 + 0.5*sin²(a_diff)
Ce programme
permet de vérifier la conformité avec la loi de Malus en calculant le taux de
photons transmis en fonction de l'angle entre les polariseurs.
Il définit un nombre aléatoire de polariseurs alignés et vérifie l’intensité de
transmission.
Un autre test évaluant la précision est effectué en alignant 91 polariseurs.
Cela permet de montrer que les directions de sortie choisies par la fonction du
polariseur sont précises.
Compilation.
Ces programmes fonctionnent en mode texte et peuvent se compiler avec GCC en
utilisant la commande suivante :
Exemple pour correl_QM.c
gcc -O2 correl_QM.C -lm -o correl_QM
Et pour executer:
./correl_QM
Des graphiques et explications sur le fonctionnement sont disponibles ici.
Mise à jour 04/08/2020