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.
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 saout.pngsa kasalukuyang working directory. Tinatanggap ngsavefig()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 (Hermitian matrix) o statevector (complex vector). Ang density matrix ay may kaugnayan sa statevector sa pamamagitan ng
at mas pangkalahatan ito, dahil maaari itong kumatawan sa mga mixed state (positibong kabuuan ng mga statevector)
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)
- LaTeX
- City
- Hinton
- Pauli vector
- Qsphere
- Bloch
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.
Ipinapakita ng plot na ito ang real at imaginary na bahagi ng bawat elemento ng density matrix sa dalawang three-dimensional na bar chart. Tinatawag itong "city" plot dahil ang mga bar ay kahawig ng mga gusaling mataas sa isang lungsod. Ang estado na nipo-plot natin ay may sumusunod na density matrix.
Tingnan ang API documentation para sa higit pang impormasyon.
Ang plot na ito ay halos kapareho ng "city" plot, ngunit ang magnitude ng bawat elemento ay kinakatawan ng laki ng isang parisukat sa halip na ang taas ng isang bar. Ang mga puting parisukat ay kumakatawan sa mga elemento na may positibong halaga, at ang mga itim na parisukat ay kumakatawan sa mga elemento na may negatibong halaga. Ang estado na nipo-plot natin ay may sumusunod na density matrix.
Tingnan ang API documentation para sa higit pang impormasyon.
Ang isang observable ay isang paraan ng pagsukat ng isang quantum state kung saan ang mga posibleng resulta ng pagsukat ay mga real na numero. Ang inaasahang halaga ng resulta ay kilala rin bilang expectation value ng observable sa state na iyon, at maaari itong isiping average ng walang katapusang maraming obserbasyon ng state na iyon.
Ang mga tensor product ng Pauli matrix ay lahat ng observable na nagbabalik ng +1 o -1. Ipinapakita ng plot na ito ang mga expectation value ng state sa iba't ibang Pauli operator bilang isang bar chart. Lahat ng density matrix ay maaaring isulat bilang kabuuan ng mga Pauli matrix na ito, na tinimbang ng kanilang mga expectation value.
Halimbawa, ang state na ito ay maaaring isulat bilang kabuuan ng mga term:
Maaari mo ring kalkulahin ang mga coefficient na ito gamit ang SparsePauliOp.
Tingnan ang API documentation para sa higit pang impormasyon.
Ang "QSphere" ay isang natatanging view ng Qiskit ng isang quantum state kung saan ang amplitude at phase ng bawat elemento sa isang statevector ay nipo-plot sa ibabaw ng isang sphere. Ang kapal ng bawat tuldok ay kumakatawan sa amplitude, at ang kulay ay kumakatawan sa phase. Para sa mga mixed state, magpapakita ito ng sphere para sa bawat component.
Tingnan ang API documentation para sa higit pang impormasyon.
Ang Bloch vector ng isang qubit state ay ang expectation value nito sa X, Y, at Z na Pauli observable na na-map sa X, Y, at Z na axis sa three-dimensional na espasyo. Ipinaprojekt ng plot na ito ang mga multi-qubit quantum state sa single-qubit space at nipo-plot ang bawat qubit sa isang Bloch sphere. Ipinapakita lamang ng visualization na ito ang mga expectation value ng mga indibidwal na qubit. Hindi nito maipapakita ang mga correlation sa pagitan ng mga qubit kaya hindi nito ganap na mailalarawan ang mga entangled quantum state.
Tingnan ang API documentation para sa higit pang impormasyon.
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")
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.
Mga susunod na hakbangβ
- Kailangan bang i-refresh ang iyong kaalaman sa quantum information? Tingnan ang kursong Basics of quantum information sa IBM Quantum Learning.
- Basahin ang contributing guidelines kung gusto mong mag-ambag sa open-source Qiskit SDK.