Перейти до основного вмісту

Побудова квантових станів

Версії пакетів

Код на цій сторінці розроблено з використанням наведених нижче залежностей. Рекомендуємо використовувати ці або новіші версії.

qiskit[all]~=2.3.0

У багатьох ситуаціях — наприклад, під час навчання або налагодження — корисно візуалізувати стан квантового комп'ютера. Тут ми припускаємо, що у тебе вже є певний стан, отриманий із симуляції або томографії стану. Переглядати стани можна лише для невеликих квантових систем.

Використання результатів функцій

Усі функції на цій сторінці повертають насичені об'єкти. Коли останній рядок комірки коду виводить ці об'єкти, Jupyter-ноутбуки відображають їх під коміркою. Якщо ти викликаєш ці функції в інших середовищах або у скриптах, тобі потрібно буде явно показати або зберегти результати.

Більшість функцій повертають зображення — об'єкти matplotlib.Figure. Є два варіанти:

  • Виклич .show() на поверненому об'єкті, щоб відкрити зображення у новому вікні (за умови, що налаштований matplotlib-бекенд є інтерактивним).
  • Виклич .savefig("out.png"), щоб зберегти рисунок у out.png у поточному робочому каталозі. Метод savefig() приймає шлях, тому ти можеш налаштувати місце та ім'я файлу для збереження. Наприклад, plot_state_city(psi).savefig("out.png").

Вивід у форматі LaTeX — це об'єкти IPython.display.Latex. Найкращий варіант у середовищі поза Jupyter — уникати такого виводу: або виводь стан у вигляді тексту, або перейди на drawer latex_source, щоб отримати рядок із вихідним кодом LaTeX.

Квантовий стан — це або матриця густини ρ\rho (ермітова матриця), або statevector ψ|\psi\rangle (комплексний вектор). Матриця густини пов'язана зі statevector'ом співвідношенням

ρ=ψψ,\rho = |\psi\rangle\langle \psi|,

і є більш загальною, оскільки може представляти змішані стани (позитивна сума statevector'ів)

ρ=kpkψkψk.\rho = \sum_k p_k |\psi_k\rangle\langle \psi_k |.

Qiskit представляє квантові стани через класи Statevector і DensityMatrix та надає багато функцій візуалізації. Перегляньте розділи після наступної комірки коду, щоб побачити, як різні функції візуалізації Qiskit відображають такий квантовий стан.

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit
from math import pi
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector

# Create a Bell state for demonstration
qc = QuantumCircuit(2)
qc.h(0)
qc.crx(pi / 2, 0, 1)
psi = Statevector(qc)

Хоча технічно це й не «графік», Qiskit може відображати LaTeX-представлення об'єктів Statevector і DensityMatrix, які гарно виглядають у Jupyter-ноутбуках. Вони відповідають стандартним математичним угодам для запису квантових станів. Детальніше читай у Основи квантової інформації: Одиночні системи.

Statevector'и за замовчуванням використовують «ket-нотацію», тоді як матриці густини відображаються у вигляді матриці 2×2.

Ти також можеш замінити "latex" на "latex_source", щоб отримати рядок із вихідним кодом LaTeX.

psi.draw("latex")  # psi is a Statevector object

2200+1201i211\frac{\sqrt{2}}{2} |00\rangle+\frac{1}{2} |01\rangle- \frac{i}{2} |11\rangle

from qiskit.quantum_info import DensityMatrix

DensityMatrix(psi).draw("latex") # convert to a DensityMatrix and draw
[122402i424140i400002i4i4014] \begin{bmatrix} \frac{1}{2} & \frac{\sqrt{2}}{4} & 0 & \frac{\sqrt{2} i}{4} \\ \frac{\sqrt{2}}{4} & \frac{1}{4} & 0 & \frac{i}{4} \\ 0 & 0 & 0 & 0 \\ - \frac{\sqrt{2} i}{4} & - \frac{i}{4} & 0 & \frac{1}{4} \\ \end{bmatrix}
from qiskit.visualization import plot_state_city

plot_state_city(psi)
# Alternative: psi.draw("city")

Output of the previous code cell

from qiskit.visualization import plot_state_hinton

plot_state_hinton(psi)
# Alternative: psi.draw("hinton")

Output of the previous code cell

from qiskit.visualization import plot_state_paulivec

plot_state_paulivec(psi)
# Alternative: psi.draw("paulivec")

Output of the previous code cell

from qiskit.quantum_info import SparsePauliOp

SparsePauliOp.from_operator(psi)
SparsePauliOp(['II', 'IX', 'XY', 'YI', 'YX', 'YZ', 'ZI', 'ZX', 'ZZ'],
coeffs=[ 0.25 +0.j, 0.1767767+0.j, -0.1767767+0.j, -0.125 +0.j,
-0.1767767+0.j, 0.125 +0.j, 0.125 +0.j, 0.1767767+0.j,
0.125 +0.j])
from qiskit.visualization import plot_state_qsphere

plot_state_qsphere(psi)
# Alternative: psi.draw("qsphere")

Output of the previous code cell

from qiskit.visualization import plot_bloch_multivector

plot_bloch_multivector(psi)
# Alternative: psi.draw("bloch")

Output of the previous code cell

Параметри функцій побудови станів

Усі функції побудови станів приймають такі аргументи (крім drawer'а LaTeX, який не повертає рисунок Matplotlib, та plot_state_qsphere, який приймає лише figsize):

  • title (str): рядок для заголовка графіка, що відображається у верхній частині
  • figsize (tuple): розмір рисунка в дюймах (ширина, висота)

Функції plot_state_city і plot_state_paulivec також приймають аргумент color (список рядків), що задає кольори стовпців. Дивись документацію API для отримання додаткової інформації.

Не можеш згадати назву потрібної функції побудови графіків? Спробуй запитати Qiskit Code Assistant.

Наступні кроки

Рекомендації