انتقل إلى المحتوى الرئيسي

رسم الحالات الكمومية

إصدارات الحزم

تم تطوير الكود في هذه الصفحة باستخدام المتطلبات التالية. ننصح باستخدام هذه الإصدارات أو ما هو أحدث منها.

qiskit[all]~=2.3.0

في كثير من الحالات — كالتعلم أو تصحيح الأخطاء — يكون من المفيد تصوير حالة الحاسوب الكمومي. هنا نفترض أنك حصلت بالفعل على حالة معينة من خلال المحاكاة أو التوموغرافيا. لا يمكن عرض الحالات إلا لأنظمة كمومية صغيرة.

استخدام المخرجات من الدوال

جميع الدوال في هذه الصفحة تُعيد كائنات غنية. عندما يكون السطر الأخير في خلية الكود يُخرج هذه الكائنات، تعرضها دفاتر Jupyter تلقائيًا أسفل الخلية. إذا استدعيت هذه الدوال في بيئات أخرى أو في سكريبتات، ستحتاج إلى عرض المخرجات أو حفظها بشكل صريح.

معظم الدوال تُعيد صورًا هي كائنات matplotlib.Figure. خياران متاحان:

  • استدعاء .show() على الكائن المُعاد لفتح الصورة في نافذة جديدة (بافتراض أن الـ backend الخاص بـ matplotlib مُهيَّأ بوضع تفاعلي).
  • استدعاء .savefig("out.png") لحفظ الشكل في out.png في مجلد العمل الحالي. تقبل الدالة savefig() مسارًا لتتمكن من تحديد موقع واسم ملف المخرج. مثلًا: plot_state_city(psi).savefig("out.png").

مخرجات LaTeX هي كائنات IPython.display.Latex. الخيار الأفضل في بيئات غير Jupyter هو تجنب هذا المخرج إما بطباعة الحالة للحصول على تمثيل نصي، أو التبديل إلى drawer الخاص بـ latex_source للحصول على سلسلة نصية بصيغة LaTeX.

الحالة الكمومية إما مصفوفة كثافة ρ\rho (مصفوفة هرميتية) أو متجه حالة ψ|\psi\rangle (متجه مركب). ترتبط مصفوفة الكثافة بمتجه الحالة بالعلاقة:

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

وهي أكثر عمومية إذ تستطيع تمثيل الحالات المختلطة (مجموع موجب من متجهات الحالة):

ρ=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. تتبع هذه التمثيلات الاصطلاحات الرياضية المعيارية لكتابة الحالات الكمومية. اقرأ المزيد في أساسيات المعلومات الكمومية: الأنظمة الفردية.

متجهات الحالة تعرض افتراضيًا "تدوين 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 لمزيد من المعلومات.

Can't remember the name of the plotting function you need? Try asking Qiskit Code Assistant.

الخطوات التالية

توصيات