$\newcommand{\ket}[1]{|{#1}\rangle}\newcommand{\bra}[1]{\langle{#1}|}$Modelamos un fotón con polarización lineal $\theta$ con el estado puro $\ket{\theta} = \bigl[\begin{smallmatrix}\cos(\theta)\\ \sin(\theta)\end{smallmatrix}\bigr]$.
Consideremos un experimento que genera un fotón con una polarización bien $\ket{\pi/3}$ o $\ket{\pi/4}$, pero desconocemos cuál de ellas. Si las dos polarizaciones tienen la misma probabilidad, el estado resultante se corresponde con la mezcla probabilística de las matrices de densidad de cada posibilidad: \begin{align*} \rho = \frac{1}{2} \ket{\pi/3} \bra{\pi/3} + \frac{1}{2} \ket{\pi/4} \bra{\pi/4}. \end{align*}
import numpy as np
def foton(theta):
ket_theta = np.array([np.cos(theta), np.sin(theta)])
rho = np.outer(ket_theta, ket_theta)
return rho
rho = 1/2 * foton(np.pi/3) + 1/2 * foton(np.pi/4)
print("rho =\n", str(rho))
rho = [[0.375 0.46650635] [0.46650635 0.625 ]]
Se puede comprobar que $\rho$ cumple las propiedades de una matriz de densidad de un sistema cuántico: $\rho\succeq 0$, $\rho=\rho^H$ y $\text{Tr}[\rho]=1$.
autovalores_rho, _ = np.linalg.eigh(rho)
print("autovalores_rho = ", autovalores_rho, " (se puede ver que son no negativos)")
if np.array_equal(rho, np.transpose(np.conj(rho))):
print('rho es autohermitica')
else:
print('rho no es autohermitica')
traza_rho = np.trace(rho)
print("traza_rho = ", traza_rho)
autovalores_rho = [0.01703709 0.98296291] (se puede ver que son no negativos) rho es autohermitica traza_rho = 1.0
Además en este caso, el estado resultante es un estado mixto, ya que el rango de $\rho$ es igual a $2 > 1$.
# Calculamos su rango con el comando:
rango = np.linalg.matrix_rank(rho)
print("rango = ", rango)
rango = 2