Побудова квантових станів
Package versions
Код на цій сторінці розроблено з використанням наведених нижче залежностей. Рекомендуємо використовувати ці або новіші версії.
qiskit[all]~=2.4.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.
Квантовий стан — це або матриця густини (ермітова матриця), або statevector (комплексний вектор). Матриця густини пов'язана зі statevector'ом співвідношенням
і є більш загальною, оскільки може представляти змішані стани (позитивна сума statevector'ів)
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)
- LaTeX
- City
- Hinton
- Pauli vector
- Qsphere
- Bloch
Хоча технічно це й не «графік», Qiskit може відображати LaTeX-представлення об'єктів Statevector і DensityMatrix, які гарно виглядають у Jupyter-ноутбуках. Вони відповідають стандартним математичним угодам для запису квантових станів. Детальніше читай у Основи квантової інформації: Одиночні системи.
Statevector'и за замовчуванням використовують «ket-нотацію», тоді як матриці густини відображаються у вигляді матриці 2×2.
Ти також можеш замінити "latex" на "latex_source", щоб отримати рядок із вихідним кодом LaTeX.
Цей графік відображає дійсні та уявні частини кожного елемента матриці густини у вигляді двох тривимірних стовпчастих діаграм. Він називається «city» (місто), тому що стовпці нагадують хмарочоси. Стан, який ми відображаємо, має таку матрицю густини.
Дивись документацію API для отримання додаткової інформації.
Цей графік дуже схожий на «city», але величина кожного елемента представлена розміром квадрата, а не висотою стовпця. Білі квадрати відповідають елементам з додатними значеннями, а чорні — з від'ємними. Стан, який ми відображаємо, має таку матрицю густини.
Дивись документацію API для отримання додаткової інформації.
Спостережувана (observable) — це спосіб вимірювання квантового стану, при якому можливі результати вимірювання є дійсними числами. Очікуване значення результату також відоме як математичне сподіван ня спостережуваної на цьому стані, і його можна розглядати як середнє значення нескінченно великої кількості спостережень цього стану.
Тензорні добутки матриць Паулі — це спостережувані, що повертають +1 або -1. Цей графік відображає математичні сподівання стану на різних операторах Паулі у вигляді стовпчастої діаграми. Будь-яку матрицю густини можна записати як суму цих матриць Паулі, зважених їхніми математичними сподіваннями.
Наприклад, цей стан можна записати як суму доданків:
Ці коефіцієнти також можна обчислити за допомогою SparsePauliOp.
Дивись документацію API для отримання додаткової інформації.
«QSphere» — унікальний для Qiskit спосіб відображення квантового стану, при якому амплітуда та фаза кожного елемента statevector'а відображаються на поверхні сфери. Товщина кожної точки відповідає амплітуді, а колір — фазі. Для змішаних станів б уде показано окрему сферу для кожної компоненти.
Дивись документацію API для отримання додаткової інформації.
Вектор Блоха стану кубіта — це його математичне сподівання за спостережуваними Паулі X, Y і Z, відображене на осях X, Y і Z у тривимірному просторі. Цей графік проектує багатокубітні квантові стани на простір одного кубіта й відображає кожен кубіт на сфері Блоха. Ця візуалізація показує лише математичні сподівання окремих кубітів. Вона не може показати кореляції між кубітами, а тому не може повністю описати заплутані квантові стани.
Дивись документацію API для отримання додаткової інформації.
psi.draw("latex") # psi is a Statevector object
from qiskit.quantum_info import DensityMatrix
DensityMatrix(psi).draw("latex") # convert to a DensityMatrix and draw
from qiskit.visualization import plot_state_city
plot_state_city(psi)
# Alternative: psi.draw("city")
from qiskit.visualization import plot_state_hinton
plot_state_hinton(psi)
# Alternative: psi.draw("hinton")
from qiskit.visualization import plot_state_paulivec
plot_state_paulivec(psi)
# Alternative: psi.draw("paulivec")
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")
from qiskit.visualization import plot_bloch_multivector
plot_bloch_multivector(psi)
# Alternative: psi.draw("bloch")
Параметри функцій побудови станів
Усі функції побудови станів приймають такі аргументи (крім drawer'а LaTeX, який не повертає рисунок Matplotlib, та plot_state_qsphere, який приймає лише figsize):
- title (str): рядок для заголовка графіка, що відображається у верхній частині
- figsize (tuple): розмір рисунка в дюймах (ширина, висота)
Функції plot_state_city і plot_state_paulivec також приймають аргумент color (список рядків), що задає кольори стовпців. Дивись документацію API для отримання додаткової інформації.
Наступні кроки
- Потрібно освіжити знання з квантової інформації? Переглянь курс Основи квантової інформації на IBM Quantum Learning.
- Прочитай настанови зі внесення змін, якщо хочеш зробити внесок у відкритий SDK Qiskit.