انتقل إلى المحتوى الرئيسي
هذا المشروع في مرحلة تجريبية. وجدت خطأ؟ افتح مشكلة على GitHub. لديك سؤال أو فكرة؟ اسأل في Discussions — نحب سماع ملاحظاتك!
كيف جودة الترجمة في هذه الصفحة؟

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

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

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

qiskit[all]~=2.5.2

في كثير من الحالات – مثل التعلم أو تصحيح الأخطاء – يكون من المفيد تصور حالة الحاسوب الكمومي. هنا نفترض أن لديك بالفعل حالة معينة من المحاكاة أو من التصوير المقطعي للحالة (state tomography). لا يمكن عرض إلا حالات الأنظمة الكمومية الصغيرة.

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

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

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

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

توصيات