Перейти до основного вмісту
Цей проєкт у бета-версії. Знайшов(-ла) помилку? Відкрити issue на GitHub. Є запитання чи ідея? Запитати в Discussions — будемо раді твоєму відгуку!
Яка якість перекладу на цій сторінці?

Графічне відображення квантових станів

Package versions

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

qiskit[all]~=2.5.2

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

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

Усі функції на цій сторінці повертають насичені об'єкти. Коли останній рядок комірки коду виводить ці об'єкти, 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 — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"qiskit": "qiskit"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
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

22∣00⟩+12∣01⟩−i2∣11⟩\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
[122402i424140i40000−2i4−i4014] \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 для отримання додаткової інформації.

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

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