Спиновые энергии водорода
Оцените энергии четырёх спиновых состояний основного уровня водорода на qasm_simulator. Дано
$$H=A(X\otimes X+Y\otimes Y+Z\otimes Z),\quad A=1.47\cdot10^{-6}\ \text{эВ},\quad E=A(\langle XX\rangle+\langle YY\rangle+\langle ZZ\rangle).$$
1. Выразите каждое среднее для произвольного двухкубитного состояния в вычислительном базисе. Автор даёт $\langle ZZ\rangle=p_{00}-p_{01}-p_{10}+p_{11}$; заполните XX и YY.
2. Измерьте ожидаемую энергию в четырёх состояниях Белла:
$$Tri1=(|00\rangle+|11\rangle)/\sqrt2,\quad Tri2=(|00\rangle-|11\rangle)/\sqrt2,$$
$$Tri3=(|01\rangle+|10\rangle)/\sqrt2,\quad Sing=(|10\rangle-|01\rangle)/\sqrt2.$$
A. Создайте схемы подготовки всех четырёх состояний.
B. Создайте измерительные схемы XX,YY,ZZ по ответу на пункт 1.
C. Запустите их на qasm_simulator и вычислите E для каждого состояния, используя $2^{14}$ измерений для каждой схемы. Требуемое определение симулятора: sim = Aer.get_backend('qasm_simulator').
D. Разберитесь в результате: автор связывает разность энергий триплета и синглета со сверхтонкой структурой и 21-сантиметровым излучением. Выполните данную проверку длины волны в заключительной ячейке. Там используются $4.1357\cdot10^{-15}$ эВ·с и $3\cdot10^{10}$ см/с.
Исходные определения и заготовки (код сохранён без исполнения):
from qiskit import *
import numpy as np
from numpy import linalg as la
from qiskit.tools.monitor import job_monitor
import qiskit.tools.jupyter
# circuit for the state Tri1
Tri1 = QuantumCircuit(2)
# your code goes here
# circuit for the state Tri2
Tri2 = QuantumCircuit(2)
# your code goes here
# circuit for the state Tri3
Tri3 = QuantumCircuit(2)
# your code goes here
# circuit for the state Sing
Sing = QuantumCircuit(2)
# your code goes here
# <ZZ>
measure_ZZ = QuantumCircuit(2)
measure_ZZ.measure_all()
# <XX>
measure_XX = QuantumCircuit(2)
# your code goes here
# <YY>
measure_YY = QuantumCircuit(2)
# your code goes here
shots = 2**14 # number of samples used for statistics
A = 1.47e-6 #unit of A is eV
E_sim = []
for state_init in [Tri1,Tri2,Tri3,Sing]:
Energy_meas = []
for measure_circuit in [measure_XX, measure_YY, measure_ZZ]:
# run the circuit with a the selected measurement and get the number of samples that output each bit value
qc = state_init+measure_circuit
counts = execute(qc, sim, shots=shots).result().get_counts()
# calculate the probabilities for each computational basis
probs = {}
for output in ['00','01', '10', '11']:
if output in counts:
probs[output] = counts[output]/shots
else:
probs[output] = 0
Energy_meas.append( probs['00'] - probs['01'] - probs['10'] + probs['11'] )
E_sim.append(A * np.sum(np.array(Energy_meas)))
# Run this cell to print out your results
print('Energy expection value of the state Tri1 : {:.3e} eV'.format(E_sim[0]))
print('Energy expection value of the state Tri2 : {:.3e} eV'.format(E_sim[1]))
print('Energy expection value of the state Tri3 : {:.3e} eV'.format(E_sim[2]))
print('Energy expection value of the state Sing : {:.3e} eV'.format(E_sim[3]))
# reduced plank constant in (eV) and the speed of light(cgs units)
hbar, c = 4.1357e-15, 3e10
# energy difference between the triplets and singlet
E_del = abs(E_sim[0] - E_sim[3])
# frequency associated with the energy difference
f = E_del/hbar
# convert frequency to wavelength in (cm)
wavelength = c/f
print('The wavelength of the radiation from the transition\
in the hyperfine structure is : {:.1f} cm'.format(wavelength))