Dalam pelajaran sebelumnya, kita melihat pertama kali kelas Statevector dan Operator dalam Qiskit, dan menggunakannya untuk mensimulasikan operasi dan pengukuran pada Qubit tunggal.
Dalam bahagian ini, kita akan menggunakan kelas-kelas ini untuk meneroka tingkah laku berbilang Qubit.
# Added by doQumentation β required packages for this notebook !pip install -q numpy qiskit
from qiskit import __version__ print(__version__)
2.1.1
Kita akan mulakan dengan mengimport kelas Statevector dan Operator, serta fungsi punca kuasa dua daripada NumPy.
Mulai sekarang, secara amnya, kita akan menjaga semua import yang diperlukan terlebih dahulu dalam setiap pelajaran.
from qiskit.quantum_info import Statevector, Operator from numpy import sqrt
Kelas Statevector mempunyai kaedah tensor, yang mengembalikan hasil darab tensor Statevector itu dengan yang lain, yang diberikan sebagai argumen.
Argumen itu ditafsirkan sebagai faktor tensor di sebelah kanan.
Kelas Operator juga mempunyai kaedah tensor (serta kaedah from_label), seperti yang kita lihat dalam contoh berikut.
H = Operator.from_label("H") Id = Operator.from_label("I") X = Operator.from_label("X") display(H.tensor(Id).draw("latex")) display(H.tensor(Id).tensor(X).draw("latex"))
Dalam pelajaran sebelumnya, kita menggunakan kaedah measure untuk mensimulasikan pengukuran vektor keadaan kuantum.
Kaedah ini mengembalikan dua item: keputusan pengukuran yang disimulasikan, dan Statevector baru setelah pengukuran itu.
Secara lalai, measure mengukur semua Qubit dalam vektor keadaan.
Kita boleh, secara alternatif, memberikan senarai integer sebagai argumen, yang menyebabkan hanya indeks Qubit tersebut sahaja diukur.
Untuk menunjukkan ini, kod di bawah mencipta keadaan
dan mengukur Qubit nombor 0, iaitu Qubit paling kanan.
(Qiskit menomborkan Qubit bermula dari 0, dari kanan ke kiri. Kita akan kembali kepada konvensyen penomboran ini dalam pelajaran seterusnya.)
w = Statevector([0,1,1,0,1,0,0,0]/ sqrt(3)) display(w.draw("latex")) result, state = w.measure([0]) print(f"Measured: {result}\nState after measurement:") display(state.draw("latex")) result, state = w.measure([0,1]) print(f"Measured: {result}\nState after measurement:") display(state.draw("latex"))