Состояние Белла и изображение амплитуд
$|0\rangle=(1,0)^T$, $|1\rangle=(0,1)^T$, $|\pm\rangle=(|0\rangle\pm|1\rangle)/\sqrt2$.
В Qiskit порядок базисных строк — $|q_1q_0\rangle$: кубит 0 — правый множитель тензорного произведения.
1. Создайте квантовую схему, которая готовит состояние Белла $\tfrac1{\sqrt2}(|01\rangle+|10\rangle)$. Проверьте результат симулятором вектора состояния.
2. Ваша схема из пункта 1 переводит $|00\rangle$ в указанное состояние. Вычислите её унитарную матрицу симулятором Qiskit и проверьте, что она действительно выполняет нужное преобразование.
3. Подумайте о других способах показать вектор состояния. Можете ли вы придумать изображение, по которому читаются модуль и фаза каждой амплитуды?
Контекст автора: приведённый исходный пример готовит другое состояние Белла, $(|00\rangle+|11\rangle)/\sqrt2$, посредством H(0), CNOT(0,1). На исходных рисунках по порядку показаны эта схема, отдельные векторы Блоха и Q-сфера. Векторы Блоха отдельных кубитов здесь не передают корреляции. По описанию автора, на Q-сфере размер кружка пропорционален модулю амплитуды, а цвет передаёт её фазу. Положение кружков определяется двоичными метками; геометрия самой сферы физического смысла не имеет.
Полные исходные примеры подготовки, симуляции и изображения:
from qiskit import QuantumCircuit, Aer, assemble
import numpy as np
from qiskit.visualization import plot_histogram, plot_bloch_multivector
qc = QuantumCircuit(3)
# Apply H-gate to each qubit:
for qubit in range(3):
qc.h(qubit)
# See the circuit:
qc.draw()
# Let's see the result
svsim = Aer.get_backend('aer_simulator')
qc.save_statevector()
qobj = assemble(qc)
final_state = svsim.run(qobj).result().get_statevector()
# In Jupyter Notebooks we can display this nicely using Latex.
# If not using Jupyter Notebooks you may need to remove the
# array_to_latex function and use print(final_state) instead.
from qiskit.visualization import array_to_latex
array_to_latex(final_state, prefix="\\text{Statevector} = ")
# In Jupyter Notebooks we can display this nicely using Latex.
# If not using Jupyter Notebooks you may need to remove the
# array_to_latex function and use print(unitary) instead.
from qiskit.visualization import array_to_latex
array_to_latex(unitary, prefix="\\text{Circuit = }\n")
qc = QuantumCircuit(2)
# Apply H-gate to the first:
qc.h(0)
# Apply a CNOT:
qc.cx(0,1)
qc.draw()
# Let's get the result:
qc.save_statevector()
qobj = assemble(qc)
result = svsim.run(qobj).result()
# Print the statevector neatly:
final_state = result.get_statevector()
array_to_latex(final_state, prefix="\\text{Statevector = }")
plot_bloch_multivector(final_state)
from qiskit.visualization import plot_state_qsphere
plot_state_qsphere(final_state)
Сообщить об ошибке
Войти, чтобы отправить материал.