#!/usr/bin/python3
# Spins.py
# Calcul de l'espérance d'un mesurement du spin

import numpy as np

# les trois matrices 2x2 de Pauli
sigma = np . array ([[[0, 1], [1, 0]],
                     [[0, -1j], [1j, 0]],
                     [[1, 0], [0, -1]]], dtype=complex)

# la norme d'un vecteur complexe                     
def norme(psi): 
    psic = np.conjugate(psi)
    return np.sqrt(psic @ psi)

# construire le vecteur psi    
psi1 = complex(input("Entrer psi1: ")) 
psi2 = complex(input("Entrer psi2: "))
psi = np.array([psi1, psi2], dtype=complex)
psi /= norme(psi)

psic = np.conjugate(psi) # le vecteur conjugué complexe
vm = [psic @ sigma[i] @ psi for i in range(3)] # les moyennes quantiques

print("Valeurs moyennes:\n <sigma1> =", vm[0].real,
      "\n <sigma2> =", vm[1].real,
      "\n <sigma3> =", vm[2].real)
