Práctica 2 — Bra-ket y matrices de Pauli¶
Clase 4 NumPy · Qiskit
En esta práctica trabajas el álgebra del Capítulo 2 con la computadora: representas kets como vectores, calculas productos internos \( \langle\phi|\psi\rangle \), verificas los autovectores de las matrices de Pauli y compruebas qué significa medir en distintas bases.
Abrir en Colab Descargar notebook
Objetivos¶
- Representar kets y bras como vectores complejos con NumPy.
- Calcular el producto interno y comprobar la normalización.
- Definir las matrices de Pauli y verificar que sus autovalores son \(\pm 1\).
- Ver que medir \(|+\rangle\) en la base \(\{|0\rangle,|1\rangle\}\) da 50/50.
1. Kets, bras y producto interno¶
import numpy as np
# base computacional
ket0 = np.array([1, 0], dtype=complex)
ket1 = np.array([0, 1], dtype=complex)
# un qubit |psi> = (|0> + i|1>)/sqrt(2)
psi = (ket0 + 1j*ket1) / np.sqrt(2)
# el bra <psi| es el conjugado transpuesto
bra_psi = psi.conj()
# producto interno <psi|psi> (debe ser 1)
print("<psi|psi> =", np.vdot(psi, psi).real) # np.vdot ya conjuga el primer argumento
2. Probabilidades (regla de Born)¶
# amplitudes de |psi> en la base {|0>, |1>}
alpha = np.vdot(ket0, psi)
beta = np.vdot(ket1, psi)
print("P(0) =", abs(alpha)**2, " P(1) =", abs(beta)**2) # 0.5 y 0.5
3. Matrices de Pauli y sus autovalores¶
I = np.array([[1,0],[0,1]], dtype=complex)
X = np.array([[0,1],[1,0]], dtype=complex)
Y = np.array([[0,-1j],[1j,0]], dtype=complex)
Z = np.array([[1,0],[0,-1]], dtype=complex)
for nombre, M in [("X",X),("Y",Y),("Z",Z)]:
valores, vectores = np.linalg.eigh(M) # eigh: matrices hermíticas
print(nombre, "-> autovalores:", np.round(valores,3))
Verás que los tres dan autovalores \(-1\) y \(+1\): los dos resultados posibles de medir el espín.
4. Medir en distintas bases¶
# base de Hadamard
plus = (ket0 + ket1)/np.sqrt(2) # |+>
minus = (ket0 - ket1)/np.sqrt(2) # |->
# medir |+> en la base {|0>,|1>}
print("|+> medido en Z: P(0)=", abs(np.vdot(ket0,plus))**2,
" P(1)=", abs(np.vdot(ket1,plus))**2)
# medir |0> en la base {|+>,|->}
print("|0> medido en X: P(+)=", abs(np.vdot(plus,ket0))**2,
" P(-)=", abs(np.vdot(minus,ket0))**2)
Para explorar¶
- Comprueba numéricamente que \(X\) y \(Z\) no conmutan: calcula
X@Z - Z@X. - Verifica que la Hadamard \(H=\tfrac{1}{\sqrt2}\begin{bmatrix}1&1\\1&-1\end{bmatrix}\) es hermítica y unitaria (
H@Hdebe dar la identidad). - Construye el estado de dos qubits \(|00\rangle\) con
np.kron(ket0, ket0)y explora \(\tfrac{1}{\sqrt2}(|00\rangle+|11\rangle)\).
Entrega¶
Guarda tu notebook con las respuestas de "Para explorar" y compártelo según lo indicado en clase.