Матрица последовательности и независимых вентилей
$$X=\begin{bmatrix}0&1\\1&0\end{bmatrix},\qquad Z=\begin{bmatrix}1&0\\0&-1\end{bmatrix},\qquad H=\frac1{\sqrt2}\begin{bmatrix}1&1\\1&-1\end{bmatrix}.$$
В Qiskit порядок базисных строк — $|q_1q_0\rangle$: кубит 0 — правый множитель тензорного произведения.
1. Вычислите однокубитную унитарную матрицу $U=XZH$. Проверьте результат симулятором Aer в Qiskit. Правый оператор действует первым.
2. Попробуйте изменить вентили в предшествующей схеме. Вычислите их произведение Кронекера и проверьте ответ симулятором Aer.
Непосредственно перед заданием дана двухкубитная схема с X на кубите 1 и единичным действием на кубите 0; её исходный рисунок сохранён. В приведённом исходном примере также показаны H на кубите 0 и X на кубите 1. Полная последовательность исходных программ приведена ниже.
Примечание автора: книги и программы могут выбирать разный порядок кубитов, поэтому матрицы одной схемы могут выглядеть по-разному.
from qiskit import QuantumCircuit, Aer, assemble
import numpy as np
from qiskit.visualization import plot_histogram, plot_bloch_multivector
qc = QuantumCircuit(2)
qc.h(0)
qc.x(1)
qc.draw()
usim = Aer.get_backend('aer_simulator')
qc.save_unitary()
qobj = assemble(qc)
unitary = usim.run(qobj).result().get_unitary()
# 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)
qc.x(1)
qc.draw()
# Simulate the unitary
usim = Aer.get_backend('aer_simulator')
qc.save_unitary()
qobj = assemble(qc)
unitary = usim.run(qobj).result().get_unitary()
# Display the results:
array_to_latex(unitary, prefix="\\text{Circuit = } ")
Сообщить об ошибке
Войти, чтобы отправить материал.