Lumaktaw sa pangunahing nilalaman

I-plot ang mga quantum state

Mga bersyon ng package

Ang code sa pahinang ito ay ginawa gamit ang mga sumusunod na requirements. Inirerekomenda naming gamitin ang mga bersyong ito o mas bago.

qiskit[all]~=2.3.0

Sa maraming sitwasyon β€” tulad ng pag-aaral o pag-debug β€” nakakatulong ang pag-visualize ng estado ng isang quantum computer. Dito ipinagpapalagay namin na mayroon ka nang partikular na estado mula sa simulation o state tomography. Posible lamang na tingnan ang mga estado ng maliliit na quantum system.

Paggamit ng output mula sa mga function

Lahat ng function sa pahinang ito ay nagbabalik ng mga rich object. Kapag ang huling linya ng isang code cell ay nag-output ng mga object na ito, ipinapakita sila ng Jupyter notebooks sa ibaba ng cell. Kung gagamitin mo ang mga function na ito sa ibang mga environment o sa mga script, kailangan mong explicitly ipakita o i-save ang mga output.

Karamihan sa mga function ay nagbabalik ng mga imahe, na mga matplotlib.Figure object. Dalawang opsyon ang available:

  • Tawagin ang .show() sa ibinalik na object para buksan ang imahe sa bagong window (basta ang iyong naka-configure na matplotlib backend ay interactive).
  • Tawagin ang .savefig("out.png") para i-save ang figure sa out.png sa kasalukuyang working directory. Tinatanggap ng savefig() method ang isang path kaya maaari mong ayusin ang lokasyon at filename kung saan mo sine-save ang output. Halimbawa, plot_state_city(psi).savefig("out.png").

Ang mga LaTeX output ay IPython.display.Latex object. Ang pinakamainam na opsyon sa isang non-Jupyter environment ay ang iwasan ang output na ito sa pamamagitan ng pag-print ng estado para sa text representation, o sa pag-switch sa latex_source drawer para makakuha ng LaTeX source string.

Ang isang quantum state ay alinman sa isang density matrix ρ\rho (Hermitian matrix) o statevector ∣ψ⟩|\psi\rangle (complex vector). Ang density matrix ay may kaugnayan sa statevector sa pamamagitan ng

ρ=∣ψ⟩⟨ψ∣,\rho = |\psi\rangle\langle \psi|,

at mas pangkalahatan ito, dahil maaari itong kumatawan sa mga mixed state (positibong kabuuan ng mga statevector)

ρ=βˆ‘kpk∣ψk⟩⟨ψk∣.\rho = \sum_k p_k |\psi_k\rangle\langle \psi_k |.

Kinakatawan ng Qiskit ang mga quantum state sa pamamagitan ng mga klase na Statevector at DensityMatrix at nagbibigay ng maraming visualization function. Tingnan ang mga seksyon pagkatapos ng sumusunod na code cell para makita kung paano nipo-plot ng iba't ibang visualization function ng Qiskit ang sumusunod na quantum state.

# 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)

Kahit hindi ito teknikal na "plot", kaya ng Qiskit na mag-render ng mga LaTeX representation ng parehong Statevector at DensityMatrix object na maganda ang hitsura sa Jupyter notebooks. Sinusunod nito ang mga karaniwang mathematical convention sa pagsulat ng mga quantum state. Basahin ang higit pa sa Basics of quantum information: Single systems.

Ang mga Statevector ay default sa "ket notation", samantalang ang mga density matrix ay ipinapakita bilang isang 2Γ—2 matrix.

Maaari mo ring palitan ang "latex" ng "latex_source" para makuha ang raw LaTeX string.

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

Mga opsyon para sa mga state-plotting function​

Lahat ng state-plotting function ay tumatanggap ng mga sumusunod na argumento (maliban sa LaTeX drawer, na hindi nagbabalik ng Matplotlib figure, at plot_state_qsphere, na tumatanggap lamang ng figsize):

  • title (str): isang string para sa pamagat ng plot, ipinapakita sa itaas ng plot
  • figsize (tuple): laki ng figure sa pulgada (lapad, taas)

Ang mga function na plot_state_city at plot_state_paulivec ay tumatanggap din ng color na argumento (listahan ng mga string) na tumutukoy sa mga kulay ng mga bar. Tingnan ang API documentation para sa higit pang impormasyon.

Hindi matandaan ang pangalan ng plotting function na kailangan mo? Subukang tanungin ang Qiskit Code Assistant.

Mga susunod na hakbang​

Mga rekomendasyon