Langkau ke kandungan utama

Eksperimen Stern-Gerlach menggunakan komputer kuantum

Untuk modul Qiskit in Classrooms ini, pelajar perlu mempunyai persekitaran Python yang berfungsi dengan pakej-pakej berikut dipasang:

  • qiskit v2.1.0 atau lebih baru
  • qiskit-ibm-runtime v0.40.1 atau lebih baru
  • qiskit-aer v0.17.0 atau lebih baru
  • qiskit.visualization
  • numpy
  • pylatexenc

Untuk menyediakan dan memasang pakej-pakej di atas, lihat panduan Pasang Qiskit. Untuk menjalankan kerja pada komputer kuantum sebenar, pelajar perlu menyediakan akaun dengan IBM Quantum® dengan mengikuti langkah-langkah dalam panduan Sediakan akaun IBM Cloud anda.

Modul ini telah diuji dan menggunakan 2 saat masa QPU. Ini adalah anggaran sahaja. Penggunaan sebenar anda mungkin berbeza.

# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-aer qiskit-ibm-runtime
# Uncomment and modify this line as needed to install dependencies
#!pip install 'qiskit>=2.1.0' 'qiskit-ibm-runtime>=0.40.1' 'qiskit-aer>=0.17.0' 'numpy' 'pylatexenc'

Tonton panduan modul oleh Dr. Katie McCormick di bawah, atau klik di sini untuk menontonnya di YouTube.


Latar belakang

Pada awal tahun 1900-an, bukti tingkah laku terkuantum pada skala atom semakin bertambah. Banyak tafsiran data yang berjaya seperti penjelasan Max Planck tentang bencana ultraungu, dan eksperimen seperti yang dilakukan oleh Otto Stern dan Walther Gerlach adalah kritikal dalam meyakinkan dunia bahawa sistem mekanik kuantum adalah perlu, dan bahawa fenomena fizikal tertentu adalah terkuantum. Dalam kes eksperimen Stern-Gerlach (dibayangkan oleh Stern pada tahun 1921 dan dilaksanakan oleh Stern dan Gerlach pada tahun 1922), tujuannya adalah untuk menyemak kuantisasi momentum sudut dalam atom.

Sekitar masa yang sama, model atom yang lazim ialah model Bohr-Sommerfeld, yang merupakan perluasan kepada model Bohr, dan seperti model Bohr, ia meramalkan bahawa elektron wujud dalam orbit terkuantum tertentu yang serupa dengan planet-planet mengorbit matahari.

Diagram model Bohr-Sommerfeld. Titik di tengah mewakili nukleus atom. Bulatan atau elips di sekitar titik itu mewakili orbital atom, yang kelihatan sangat mirip dengan orbit planet mengelilingi matahari. Orbit bertenaga lebih tinggi berada lebih jauh dari nukleus.

Walaupun pada akhirnya rawatan ini terbukti tidak mencukupi untuk menjelaskan tingkah laku mekanik kuantum atom, secara umumnya ia memang meramalkan banyak fenomena yang diperhatikan, seperti garis spektrum diskrit atom. Orbit terkuantum elektron dengan tenaga tertentu sepadan dengan nilai momentum sudut yang terkuantum. Inilah momentum sudut orbital yang ingin diperhatikan oleh Stern dan Gerlach dalam eksperimen mereka, walaupun eksperimen ini juga terpakai kepada sebarang jenis momentum sudut terkuantum, termasuk spin. Anda mungkin sering mendengar eksperimen Stern-Gerlach dikaitkan dengan spin. Fokus eksperimen asal adalah pada momentum sudut orbital semata-mata kerana George Uhlenbeck dan Samuel Goudsmit tidak akan mengemukakan teori kewujudan spin sehingga tahun 1925.

Tanpa mengira jenis momentum sudut, cas yang mempunyai momentum sudut mempunyai momen magnet. Dalam rawatan klasik gerakan orbital, seseorang akan menjangkakan zarah bercas qq, jisim mm dan momentum sudut L\vec{L} mempunyai momen magnet μ\mu yang diberikan oleh

μ=q2mL\vec{\mu} = \frac{q}{2m}\vec{L}

Ternyata hampir formula yang sama berlaku untuk momentum sudut mekanik kuantum, dengan amaran penambahan nisbah berangka yang berkaitan dengan jenis momentum sudut, dipanggil faktor-g gg. Apabila menggabungkan jenis-jenis momentum sudut yang berbeza, atau umum kepada jenis sewenang-wenangnya, seseorang sering melihat J\vec{J} digunakan dan bukannya L\vec{L}, jadi kita tulis:

μ=gq2mJ\vec{\mu} = \frac{gq}{2m}\vec{J}

Untuk objek klasik g=1g=1. Untuk elektron, g2g\approx 2, dan terdapat banyak nilai untuk pelbagai nuklei dan zarah subatom. Perkara utama di sini ialah momentum sudut terkuantum bermaksud momen magnet yang terkuantum!

Momen magnet ini akan mengalami tork dalam medan magnet:

τ=μ×B\vec{\tau}=\vec{\mu}\times \vec{B}

Dan ia akan mengalami daya dalam medan magnet dengan kecerunan bukan sifar:

F=(μB)\vec{F} = \nabla(\vec{\mu}\cdot\vec{B})

Kita sering akan mempertimbangkan ungkapan di atas satu komponen pada satu masa, jadi mungkin mudah untuk memikirkan komponen zz-nya:

Fz=μzdBzdzF_z = \mu_z \frac{dB_z}{dz}

Dengan menggabungkan ungkapan, kita dapat memperoleh

Fz=gq2mdBzdzJzF_z = \frac{gq}{2m} \frac{dB_z}{dz} J_z

Stern dan Gerlach tidak tahu tentang faktor gg, tetapi walaupun dengan ia dalam ungkapan, kita mempunyai daya yang sama dengan beberapa pemalar yang diketahui atau boleh diukur darab momentum sudut. Jadi dengan menggunakan medan magnet dengan kecerunan yang diketahui, dan mengukur pesongan zarah semasa ia melepasi medan, kita seharusnya mendapat maklumat tentang momentum sudut. Inilah inti eksperimen Stern-Gerlach.

Atom perak bergerak melalui medan magnet tak seragam, dan disongsangkan ke atas atau ke bawah bergantung pada spin mereka. Secara klasik, kita menjangkakan taburan berterusan pada skrin, tetapi dalam eksperimen kita melihat dua titik berbeza.

Rajah. Eksperimen Stern–Gerlach[1]: Atom perak bergerak melalui medan magnet tak seragam, dan disongsangkan ke atas atau ke bawah bergantung pada spin mereka. Secara klasik, kita menjangkakan taburan berterusan pada skrin, tetapi dalam eksperimen kita melihat dua titik berbeza.

Atom perak neutral dipanaskan dalam relau. Apabila aliran atom perak mengalir dari relau, kolimator aliran digunakan untuk memilih hanya atom yang bergerak berhampiran pusat medan magnet tak seragam. Tentu saja, sesetengah atom menyimpang sedikit ke kiri atau kanan, dan mengalami kecerunan yang lebih lemah dalam medan, atau tiada kecerunan langsung. Jadi, kita tidak terlalu risau tentang tingkah laku atom yang jauh ke kiri atau kanan. Kita berminat dengan apa yang berlaku kepada atom yang bergerak di sepanjang tengah saluran, di mana kecerunan medan magnet akan menghasilkan daya yang memesongkan atom dalam arah zz sahaja.

Apa yang patut kita jangkakan, secara klasik?

Bagaimana atom-atom ini berkelakuan jika mereka betul-betul seperti magnet klasik yang besar? Anda boleh buat eksperimen ini. Bayangkan menembakkan magnet neodymium kecil melepasi magnet besar yang kuat. Orientasi magnet kecil adalah rawak. Tetapi semasa mereka melepasi magnet besar, mereka cepat menyejajarkan diri dengan medan, dan tertarik kepada magnet besar. Sebahagian besar magnet kecil disongsangkan ke arah magnet besar. Pemerhati yang sangat teliti mungkin akan bertanya, "Bagaimana pula dengan pemuliharaan tenaga?"

Memang, momen magnet dalam medan magnet luaran mempunyai tenaga potensi yang berkaitan dengannya:

U=μB=μBcos(θ)U = -\vec{\mu}\cdot \vec{B} = -\mu B \cos(\theta)

Jadi, jika momen magnet berputar dalam medan magnet luaran, akan ada perubahan tenaga yang diberikan oleh:

ΔU=UfUi=μB(cos(θf)cos(θi)).\Delta U = U_f - U_i = -\mu B (\cos(\theta_f) - \cos(\theta_i)).

Dalam kes khas magnet kecil yang sejajar sempurna bertentangan dengan medan luaran yang terbalik dan sejajar dengannya, ini akan sepadan dengan penurunan tenaga potensi:

ΔU=UfUi=μB(cos(0)cos(π))=2μB.\Delta U = U_f - U_i = -\mu B (\cos(0) - \cos(\pi)) = -2\mu B.

Jadi ke mana tenaga itu pergi? Magnet klasik seperti magnet peti sejuk neodymium kecil mempunyai banyak zarah dan boleh menyebarkan hampir sebarang jumlah tenaga sebagai haba. Sudut awal dan akhir antara momen magnet dan medan magnet luaran boleh menjadi apa-apa sahaja, dan sekurang-kurangnya orientasi awal adalah rawak. Jadi jumlah tenaga yang berbeza akan disebarkan sebagai haba untuk setiap magnet kecil. Tetapi secara klasik ini tidak menjadi masalah, kerana ensembel zarah klasik boleh menyebarkan sebarang jumlah tenaga sebagai haba.

Apa yang patut kita jangkakan apabila menerapkan pemikiran klasik pada skala atom?

Sekurang-kurangnya ini tidak sama untuk magnet berskala atom, kerana terdapat lebih sedikit zarah yang terlibat, lebih sedikit darjah kebebasan melalui mana tenaga boleh disebarkan. Cadangan-cadangan mekanik kuantum awal mencadangkan lebih lanjut bahawa tenaga yang boleh diserap oleh zarah individu, seperti elektron, akan terkuantum, bermakna elektron hanya boleh menyerap beberapa jumlah tenaga tertentu. Oleh kerana orientasi awal rawak akan memerlukan penyebaran jumlah tenaga yang rawak, ini seharusnya tidak mungkin bagi sistem dengan aras tenaga terkuantum. Tenaga lebihan tidak boleh disebarkan sebagai haba. Jadi apa yang akan berlaku sebaliknya?

Semak kefahaman anda

Baca soalan-soalan di bawah, fikirkan jawapan anda, kemudian klik segi tiga untuk mendedahkan penyelesaiannya.

Terangkan apa yang anda fikir akan berlaku dalam situasi seperti yang diterangkan di atas. Iaitu, anda mempunyai magnet berskala atom yang tidak boleh menyebarkan sebarang tenaga sebagai haba. Jadi, sebarang tenaga potensi magnet awal mesti kekal dalam sistem. Namun, tork dikenakan oleh medan magnet luaran, yang cuba memutar magnet kecil untuk sejajar dengan medan luaran. Apa yang berlaku?

Jawapan:

Momen magnet kecil akan berputar ke arah penjajaran dengan medan luaran. Tetapi apabila ia sejajar seketika, ia akan mempunyai tenaga kinetik putaran yang akan terus memutarnya melepasi medan dan keluar dari penjajaran. Tingkah laku ini boleh dilihat juga pada magnet klasik yang besar. Tetapi dalam sistem klasik tersebut, ayunan momen magnet kecil akhirnya berhenti apabila tenaga disebarkan menjadi haba. Tetapi dalam sistem tanpa mekanisme serakan sedemikian, ayunan seharusnya berterusan tanpa had.

Memandangkan tingkah laku yang dijangkakan dalam jawapan di atas, apakah taburan zarah magnet yang anda jangkakan akan dilihat pada skrin?

Jawapan:

Taburan lancar dari beberapa pesongan maksimum ke arah sisi yang lebih kuat dalam medan magnet (zarah-zarah yang kebetulan bermula sejajar dengan medan luaran) kepada beberapa pesongan maksimum ke arah sisi yang lebih lemah dalam medan (zarah-zarah yang bermula bertentangan dengan medan luaran), dan setiap pesongan di antara, bersesuaian dengan setiap orientasi awal antara dua ekstrem tersebut.

Diagram aliran zarah yang melepasi magnet. Mereka disongsangkan ke pelbagai darjah sepanjang arah medan magnet. Jadi apabila mereka menghentam skrin jauh, mereka membentuk garisan.

Apa yang diramalkan mekanik kuantum?

Mungkin yang paling ganjil dari semua kemungkinan adalah yang berikut: Bagaimana jika momentum sudut elektron terkuantum, tetapi juga unjurannya pada suatu paksi juga terkuantum? Kuantisasi momentum sudut sebagai magnitud adalah menarik, tetapi seseorang mungkin cuba menghujahkannya melalui intuisi klasik, cara orbit planet menetap ke laluan tetap yang tidak bersilang, hanya mempunyai momentum sudut yang dibenarkan tertentu. Tetapi bagaimana jika vektor momentum sudut itu hanya boleh menunjuk tepat di sepanjang zz atau tepat bertentangan zz, tetapi tidak mempunyai sebarang komponen lain di sepanjang zz? Bagaimana jika kemudian apabila diukur sepanjang arah yang berbeza, vektor itu hanya boleh menunjuk sepenuhnya di sepanjang xx atau sepenuhnya bertentangan xx, dan tiada di antara keduanya? Itu akan menjadi ganjil dengan cara yang menggagalkan semua intuisi klasik.

Semak kefahaman anda

Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segi tiga untuk mendedahkan penyelesaiannya.

Apakah jenis taburan zarah pada skrin yang anda jangkakan dalam kes terakhir ini, di mana unjuran momentum sudut sepanjang arah medan adalah terkuantum? Sila pertimbangkan sama ada hanya zarah yang melepasi tepat di tengah peranti, atau termasuk zarah yang sedikit tersasar ke tepi di mana kecerunan adalah lebih lemah. Jelaskan sahaja.

Jawapan:

Zarah-zarah di tengah peranti akan mengalami satu medan tak seragam tunggal dan semuanya akan diukur mempunyai salah satu daripada dua orientasi pada momen magnet mereka. Jadi, mereka akan disongsangkan secara maksimum dengan kecerunan atau secara maksimum menentang kecerunan, dan tiada di antara keduanya. Sudah tentu, jauh ke salah satu sisi, di mana kecerunan lebih lemah, pesongan akan lebih kecil. Pada kedudukan sisi yang sangat besar, mereka mungkin berada sepenuhnya di luar kecerunan, dan mungkin hanya ada satu kawasan zarah yang tidak disongsangkan.

Diagram aliran zarah yang disongsangkan sama ada ke atas atau ke bawah, menghentam salah satu daripada dua titik pada skrin, tanpa zarah di antara dua maksimum ini

Bagaimana qubit akan membantu kita menguji ini?

Kebanyakan komputer kuantum menggunakan "qubit" - analog kuantum bit klasik. Lebih khusus lagi, ia direka sebagai sistem dua-aras, analog dengan keadaan "hidup"/"mati" bit klasik. Paradigma pengkomputeran kuantum memang wujud yang menggunakan sistem tiga-aras (yang dikenali sebagai "qutrit") atau sistem berbilang-aras (dipanggil "qudit"). Tetapi kebanyakan kerja tertumpu pada Qubit. Khususnya, komputer kuantum IBM® menggunakan apa yang dipanggil Qubit transmon frekuensi tetap. Ini agak berbeza daripada momentum sudut orbital atau spin atom. Tetapi seperti spin elektron, Qubit IBM® adalah sistem mekanik kuantum yang boleh berinteraksi dengan cahaya dan yang mana pengukuran boleh dibuat. Malah, seseorang sering mendapati analogi dibuat antara keadaan spin mekanik kuantum dan keadaan pengiraan Qubit. Sebagai contoh, seseorang sering melihat keadaan "spin-ke-atas" dikaitkan dengan keadaan pengiraan 0, dan "spin-ke-bawah" dikaitkan dengan keadaan pengiraan 1:

0|\uparrow\rangle \sim |0\rangle 1|\downarrow \rangle \sim |1\rangle

Kita boleh menggunakan persamaan ini untuk memerhatikan tingkah laku mekanik kuantum dalam komputer kuantum IBM yang meniru tingkah laku mekanik kuantum momentum sudut orbital atau spin dalam atom. Kita akan membuat pemerhatian yang serupa menggunakan gabungan linear keadaan-keadaan ini yang membolehkan kita melanjutkan perbincangan kepada momentum sudut dalam sebarang arah.

Eksperimen pertama: Pengukuran tunggal

Dalam eksperimen pertama ini dan sepanjang modul, kita akan menggunakan rangka kerja untuk pengkomputeran kuantum yang dikenali sebagai "corak Qiskit", yang membahagikan aliran kerja kepada langkah-langkah berikut:

  • Langkah 1: Petakan input klasik kepada masalah kuantum
  • Langkah 2: Optimumkan masalah untuk pelaksanaan kuantum
  • Langkah 3: Laksanakan menggunakan Qiskit Runtime Primitives
  • Langkah 4: Pasca-pemprosesan dan analisis klasik

Kita akan umumnya mengikuti langkah-langkah ini, walaupun kita mungkin tidak selalu melabelnya secara eksplisit.

Langkah 1: Petakan input klasik kepada masalah kuantum

Di sini, input klasik adalah orientasi spin sebelum pengukuran dalam peranti Stern-Gerlach. Jangan terlalu risau tentang sifat tepat keadaan kuantum sebelum pengukuran. Itulah topik modul Qiskit Classrooms yang berbeza, tentang teorem Bell.

Perhatikan bahawa komputer kuantum IBM mengukur keadaan di sepanjang paksi zz. Jadi eksperimen pertama ini akan sangat mirip dengan eksperimen Stern-Gerlach dengan kecerunan medan magnet di sepanjang zz. Kita akan melihat cara menukar sistem untuk mengukur dalam arah yang berbeza, kemudian.

Mari kita mulakan dengan membuat analog keadaan spin, iaitu, beberapa campuran |\uparrow\rangle dan |\downarrow\rangle atau secara setara 0|0\rangle dan 1|1\rangle. Kami telah mencadangkan beberapa nilai awal. Tetapi sila cuba nilai lain atau bahkan nilai rawak.

import random
from numpy import pi
import numpy as np

# Use these lines to choose your own arbitrary state vector and normalize it.
# a = 2
# b = (1+1j)
# norm = np.sqrt(a*np.conjugate(a)+b*np.conjugate(b))
# a = a/norm
# b = b/norm
# print(a,b)

# Use these lines if you would rather look at at random spin orientations.
a = random.random()
b = random.random()
norm = np.sqrt(a * np.conjugate(a) + b * np.conjugate(b))
a = a / norm
b = b / norm
print(a, b)
0.7032089086145691 0.7109832845047109

Kini kita akan menggunakan sudut-sudut di atas sebagai parameter dalam Circuit kuantum. Kita mempertimbangkan hanya satu zarah pada satu masa, jadi kita akan menggunakan hanya satu Qubit dalam Circuit kita, dan kita hanya memerlukan satu daftar klasik.

from qiskit.circuit import QuantumRegister, ClassicalRegister, QuantumCircuit, Parameter

# Define registers
qr = QuantumRegister(1, "q")
cr = ClassicalRegister(1, "c")
qc = QuantumCircuit(qr, cr)

# Initialize the quantum state
qc.initialize([a, b])
qc.measure(0, 0)
qc.draw("mpl")

Output of the previous code cell

Langkah 2: Optimumkan masalah untuk pelaksanaan kuantum

Untuk menjalankan eksperimen kita pada komputer kuantum sebenar, kita perlu memuatkan Qiskit Runtime Service, dan memilih komputer kuantum (atau "Backend"). Di bawah, kita hanya memilih komputer kuantum yang paling kurang sibuk yang tersedia untuk kita.

Terdapat kod di bawah untuk menyimpan kelayakan anda semasa penggunaan pertama. Pastikan anda memadam maklumat ini dari notebook selepas menyimpannya ke persekitaran anda, supaya kelayakan anda tidak terkongsi secara tidak sengaja apabila anda berkongsi notebook. Lihat Sediakan akaun IBM Cloud anda dan Mulakan perkhidmatan dalam persekitaran tidak dipercayai untuk panduan lanjut.

# Load the Qiskit Runtime service
from qiskit_ibm_runtime import QiskitRuntimeService

# Syntax for first saving your token. Delete these lines after saving your credentials.
# QiskitRuntimeService.save_account(channel='ibm_quantum_platform', instance = '<YOUR_IBM_INSTANCE_CRN>', token='<YOUR-API_KEY>', overwrite=True, set_as_default=True)
# service = QiskitRuntimeService(channel='ibm_quantum_platform')

# Syntax for specifying a channel and instance (if you need to change from the default set above)
# service = QiskitRuntimeService(channel='<channel name here>', instance="<your instance name here>")

# Load saved credentials
service = QiskitRuntimeService()
# Load the Runtime primitive and session
from qiskit_ibm_runtime import Session, SamplerV2 as Sampler

# Use the least busy backend, specify options as needed
# backend = service.least_busy(operational=True, simulator=False, min_num_qubits = 127)
backend = service.least_busy()
print(backend.name)
ibm_sherbrooke

Kita kini perlu mentranspilkan Circuit, bermakna kita perlu memetakan Circuit kita kepada Gate asas yang tersedia untuk komputer kuantum yang dipilih, dan kita ingin mengoptimumkan Circuit kita untuk dijalankan pada komputer kuantum tersebut.

# Transpile the circuit and optimize for running on the quantum computer selected
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

pm = generate_preset_pass_manager(optimization_level=3, backend=backend)
qc_ibm = pm.run(qc)

Langkah 3: Laksanakan menggunakan Qiskit Runtime Primitives

Kini kita ingin menjalankan ini pada komputer kuantum sebenar. Semua sintaks yang diperlukan untuk itu ada dalam blok kod di bawah. Jika anda telah kehabisan masa yang diperuntukkan pada komputer kuantum sebenar, atau jika anda tidak mempunyai sambungan internet, anda boleh nyahkomen blok kod seterusnya, yang akan menjalankan kod pada simulator tempatan.

# Specify that we want to use only a single shot, to represent a single measurement of a spin in a SG device.
num_shots = 1

# Evaluate the problem using a QPU via Qiskit IBM Runtime
# The best practice is to use a session as shown below. This is available to Premium Plan, Flex Plan, and On-Prem (IBM Quantum Platform API) Plan users.
with Session(backend=backend) as session:
sampler = Sampler(mode=session)
dist = sampler.run([qc_ibm], shots=num_shots).result()
session.close()
counts = dist[0].data.c.get_counts()

# Open users can still carry out this experiment, but without making use of a session, meaning repeated queuing is possible.
# from qiskit_ibm_runtime import Batch,
# batch = Batch(backend=backend)
# sampler = Sampler(mode=batch)
# dist = sampler.run([qc_ibm], shots=num_shots).result()
# Close the batch because no context manager was used.
# batch.close()
# counts = dist[0].data.c.get_counts()

Gunakan kod di bawah jika anda tidak boleh menjalankan eksperimen pada komputer kuantum sebenar.

# This uses a local simulator
# from qiskit_aer import AerSimulator

# This generates a simulator that mimics the real quantum system
# backend_sim = AerSimulator.from_backend(backend)

# Import an estimator, this time from qiskit (we import from Runtime for real hardware)
# from qiskit.primitives import BackendSamplerV2
# sampler = BackendSamplerV2(backend = backend_sim)

# num_shots = 1

# This runs the job
# dist = sampler.run([qc_ibm], shots = num_shots).result()

# This selects measurement counts for the 0th circuit, which in this case is the only circuit
# counts=dist[0].data.c.get_counts()

Langkah 4: Pasca-pemprosesan dan analisis klasik

Untuk eksperimen yang sangat mudah ini, analisis klasik hanya terdiri daripada visualisasi hasil eksperimen.

from qiskit.visualization import plot_histogram

print("counts = ", counts)
plot_histogram(counts)
counts =  {'0': 1}

Output of the previous code cell

Kita membuat satu pengukuran dan mendapat "0". Ini tidak mengejutkan bagi kita. Kita tahu kita menggunakan komputer kuantum yang terdiri daripada Qubit dan kita sudah sangat biasa dengan bit klasik yang mengembalikan 0 atau 1. Tetapi ingat: ini adalah analog pengkomputeran kuantum eksperimen yang dilakukan dengan zarah yang mempunyai momen magnet. Jika kita mengharapkan taburan yang sama rata antara 0 dan +1, mungkin memang mengejutkan kita bahawa kita mendapat satu ekstrem pada pengukuran pertama kita. Inilah kuantisasi hasil yang mengejutkan dalam eksperimen Stern-Gerlach yang membawa kita kepada pemahaman yang lebih baik tentang alam semula jadi, dan yang pada akhirnya membantu kita membina komputer kuantum.

Mari kita lihat apa yang berlaku apabila kita membuat ensembel pengukuran.

Eksperimen kedua: Mengukur banyak zarah

Untuk mengumpul statistik daripada banyak pengukuran sedemikian, kita tidak perlu mengulangi langkah 1 & 2. Kita hanya perlu meningkatkan bilangan shot dalam eksperimen kita. Sila cuba bilangan shot dalam contoh langkah 3 di bawah.

from qiskit_ibm_runtime import Session, SamplerV2 as Sampler

num_shots = 100

# Evaluate the problem using a QPU via Qiskit IBM Runtime
# The best practice is to use a session as shown below. This is available to Premium Plan, Flex Plan, and On-Prem (IBM Quantum Platform API) Plan users.
with Session(backend=backend) as session:
sampler = Sampler(mode=session)
dist = sampler.run([qc_ibm], shots=num_shots).result()
session.close()
counts = dist[0].data.c.get_counts()

# Open users can still carry out this experiment, but without making use of a session, meaning repeated queuing is possible.
# batch = Batch(backend=backend)
# sampler = Sampler(mode=batch)
# dist = sampler.run([qc_ibm], shots=num_shots).result()
# Close the batch because no context manager was used.
# batch.close()
# counts = dist[0].data.c.get_counts()

Seperti sebelum ini, jika anda tidak boleh menjalankan pada komputer kuantum sebenar, nyahkomen blok di atas dari eksperimen pertama, dan hanya tukar num_shots = 1 kepada num_shots = 100 atau lebih.

plot_histogram(counts)

Output of the previous code cell

Kita melihat bahawa kita kadang-kadang mengukur 0 dan kadang-kadang mengukur 1. Perhatikan bahawa kita tidak pernah mengukur apa-apa yang lain! Anda boleh mengubah bilangan shot, dan perhatikan bahawa kebarangkalian mengukur 0 atau 1 nampaknya agak konsisten antara larian berbeza dengan bilangan shot yang berbeza. Jadi, sesuatu tentang penyediaan keadaan nampaknya menentukan kebarangkalian hasil pengukuran, walaupun mana-mana satu pengukuran boleh menghasilkan sama ada 0 atau 1.

Eksperimen ketiga: Spin rawak dalam relau

Dalam eksperimen Stern-Gerlach, para penyelidik tidak dapat menentukan sudut di mana vektor momentum sudut akan keluar dari relau. Orientasi adalah rawak (atau sesuatu yang lebih misteri! Lihat modul Qiskit Classroom tentang teorem Bell). Analog yang munasabah bagi eksperimen itu adalah untuk kita memulakan keadaan Qubit secara rawak dan membuat pengukuran berkali-kali.

Langkah 1: Petakan input klasik kepada masalah kuantum

Circuit yang ingin kita bina adalah sama seperti sebelumnya. Satu-satunya perbezaan adalah bahawa kali ini, kita akan membina Circuit menggunakan Gate dengan parameter bebas θ\theta dan ϕ\phi. Nilai berangka untuk parameter tersebut kemudian akan diberikan untuk setiap larian baru.

# from qiskit.circuit import QuantumCircuit, Parameter

theta = Parameter("θ")
phi = Parameter("$\phi$")

# Define registers
qr = QuantumRegister(1, "q")
cr = ClassicalRegister(1, "c")
qc = QuantumCircuit(qr, cr)

# Add rotation gates for rotating the state of qubit 0 to random orientations
qc.rx(theta, 0)
qc.rz(phi, 0)
qc.measure(0, 0)

qc.draw("mpl")

Output of the previous code cell

Menjalankan Circuit kuantum untuk hanya satu shot sahaja dan melakukannya untuk banyak konfigurasi rawak adalah aliran kerja yang luar biasa untuk komputer kuantum. Ia memang boleh dilakukan, tetapi untuk kesederhanaan, kita akan menggunakan simulator tempatan di sini.

# This uses a local simulator
from qiskit_aer import AerSimulator

# Import an estimator, this time from qiskit (we import from Runtime for real hardware)
from qiskit.primitives import BackendSamplerV2

# This generates a simulator that mimics the real quantum system
backend_sim = AerSimulator.from_backend(backend)
sampler_sim = BackendSamplerV2(backend=backend_sim)

# from qiskit.primitives import BackendSamplerV2
# sampler = BackendSamplerV2(backend=backend)
# A list to store the accumulated probabilities of the two possible measurement outcomes.
probslist = {"0": 0.0, "1": 0.0}

# Choose how many "particles"/measurements
measurements = 100
num_shots = 1

for i in range(measurements):
# Assign a random orientation for each measurement
phi = random.random() * 2 * pi
theta = random.random() * 2 * pi

angles = [phi, theta]
circuit = qc.assign_parameters(angles)
qc_ibm = pm.run(circuit)

# Run the circuit
# job = sampler.run([circuit],num_shots = 1)
dist = sampler_sim.run([qc_ibm], shots=num_shots).result()

# Update the list of probabilities
zeroterm = dist[0].data.c.get_counts().get("0") or 0
oneterm = dist[0].data.c.get_counts().get("1") or 0
probslist.update({"0": probslist.get("0") + zeroterm})
probslist.update({"1": probslist.get("1") + oneterm})

probslist.update({"0": probslist.get("0") / measurements})
probslist.update({"1": probslist.get("1") / measurements})
# print(probslist)
plot_histogram(probslist)

Output of the previous code cell

Jadi kita melihat bahawa keadaan awal rawak Qubit (sepadan dengan orientasi rawak momentum sudut dalam eksperimen Stern-Gerlach) menghasilkan jumlah keadaan 0 dan 1 yang hampir sama (seperti jumlah keadaan spin-ke-atas dan spin-ke-bawah yang hampir sama). Inilah tepat yang ditunjukkan oleh eksperimen Stern-Gerlach asal.

Eksperimen keempat: Pengukuran berulang

Apabila Qubit bermula dalam keadaan rawak, kita nampak peluang kira-kira 50-50 untuk mengukur salah satu ekstremum berbanding yang lain. Tapi apa yang berlaku pada keadaan Qubit (atau momentum sudut zarah) selepas pengukuran? Untuk menjawab soalan itu, kita perlu tentukan Circuit yang membolehkan kita membuat beberapa pengukuran pada Qubit yang sama. Jom kita tentukan Circuit yang boleh digunakan untuk menyiasat perkara ini. Kita ingin membenarkan kemungkinan mengukur kedua-dua keadaan 0|0\rangle dan 1|1\rangle, jadi kita perlukan sesuatu untuk memutar keadaan awal Qubit daripada keadaan lalai 0|0\rangle. Dalam kes ini, kita akan guna hadamard gate HH, memandangkan H0=12(0+1)H|0\rangle = \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle). Perlu diingat bahawa, secara lalai, kedua-dua pengukuran ini akan dilakukan sepanjang zz.

from qiskit import QuantumCircuit

# Define registers
qr = QuantumRegister(1, "q")
cr = ClassicalRegister(2, "c")
qc = QuantumCircuit(qr, cr)

# Initialize the qubit to be a mixture of 0 and 1 states.
qc.h(0)

# Add a first measurement
qc.measure(0, 0)
qc.barrier()

# Add a second measurement
qc.measure(0, 1)

qc.draw("mpl")

qc_ibm = pm.run(qc)
# Step 3: Run the job

num_shots = 1000
dist = sampler.run([qc_ibm], shots=num_shots).result()
# To run on a simulator, uncomment the line below and comment out the line above.
# dist = sampler_sim.run([qc_ibm], shots=num_shots).result()
counts = dist[0].data.c.get_counts()
print(counts)
{'00': 497, '11': 498, '01': 3, '10': 2}
# Step 4: Post-process
plot_histogram(counts)

Output of the previous code cell

Dalam rajah di atas, tong dilabelkan "00", "01" dan sebagainya. Di sini, nombor-nombor ini merujuk kepada "keputusan ke-2, keputusan ke-1". Jadi "00" bermaksud kedua-dua pengukuran menghasilkan keadaan 0|0\rangle, dan "01" bermaksud pengukuran pertama menghasilkan 1|1\rangle, manakala pengukuran kedua menghasilkan 0|0\rangle. Majoriti besar Qubit sama ada diukur berada dalam 0|0\rangle dua kali, atau diukur berada dalam 1|1\rangle dua kali. Sangat jarang berlaku Qubit diukur dalam satu keadaan dan kemudian diukur berada dalam keadaan lain, dan beberapa kes di mana perkara itu berlaku (~1%) adalah disebabkan oleh hingar. Dalam kes ini hingar tersebut disimulasikan selaras dengan tingkah laku sistem kuantum sebenar. Korelasi yang diperhatikan antara pengukuran berturut-turut ini juga dipehatikan dalam pengukuran jenis Stern-Gerlach bagi zarah dengan momentum sudut spin. Jika zarah diukur sebagai "spin-atas", pengukuran seterusnya sejurus selepas itu sekali lagi akan menghasilkan "spin-atas" (dengan sedikit variasi kecil akibat hingar).

Perkara ini mungkin kelihatan remeh. Lagipun, jika Qubit diukur berada dalam satu keadaan, dan kemudian saya ukur lagi dengan cepat, kenapa ia tidak kekal dalam keadaan itu? Tapi jika kita benar-benar memerhatikan kehalusan ini, ia mungkin membantu kita memilih alat matematik untuk menghuraikan fenomena ini.

Analisis eksperimen setakat ini

Jom kita kumpulkan beberapa pemerhatian daripada eksperimen kita setakat ini:

  • Pengukuran sistem mekanik kuantum hanya akan menghasilkan salah satu daripada set "nilai yang dibenarkan". Bagi sistem dua aras seperti Qubit atau zarah spin-1/2, pengukuran hanya akan menghasilkan salah satu daripada keputusan binari.
  • Apabila kita memulakan keadaan sistem binari kita secara rawak (seperti zarah spin-1/2 yang keluar daripada relau), mana-mana keputusan pengukuran binari adalah mungkin.
  • Sebaik sahaja pengukuran dibuat dan keadaan sistem diketahui, mengulangi pengukuran pemerhatian fizikal yang sama tidak mengubah keadaan! Iaitu, jika kita memperoleh keadaan 0 sekali, apabila kita ukur semula ia masih dalam keadaan 0 (dengan sedikit hingar kecil dalam sistem ~0.1% hingga 1%).

Perhatikan dengan jelas bahawa kita belum lagi membincangkan sifat kebarangkalian mekanik kuantum, mahupun menyebut apa-apa tentang "keruntuhan" keadaan kepada keadaan eigen. Menggunakan hanya pemerhatian di atas, mungkin menggoda untuk mencari operasi matematik OO yang meninggalkan set khas keadaan mekanik kuantum ψ|\psi\rangle tidak berubah kecuali mungkin pemalar: Oψ=cψO|\psi\rangle = c|\psi \rangle, memandangkan mengukur sepanjang zz dua kali menghasilkan keputusan yang sama. Akhirnya, pencarian itu akan gagal untuk menggambarkan semua tingkah laku yang akan kita lihat. Tapi ia boleh menggambarkan sesetengah perkara, jadi kita akan teruskan sebentar lagi.

Memang wujud operasi sebegitu. Operasi matriks pada sesetengah vektor mengubah vektor tersebut, dan operasi matriks pada vektor lain (vektor eigen) meninggalkan vektor tidak berubah kecuali pemalar. Ambil contoh matriks MM dan vektor v|v\rangle di mana

M=(1221)M= \begin{pmatrix} 1 & 2 \\ 2 & 1\end{pmatrix}

dan

v=(11)|v\rangle = \begin{pmatrix} 1\\1 \end{pmatrix}

Perhatikan bahawa

Mv=(1221)(11)=(11+2121+11)=(33)=3v.M|v\rangle= \begin{pmatrix} 1 & 2 \\ 2 & 1\end{pmatrix}\begin{pmatrix} 1\\1 \end{pmatrix} = \begin{pmatrix} 1*1+2*1\\2*1+1*1 \end{pmatrix} = \begin{pmatrix} 3\\3 \end{pmatrix} = 3|v\rangle.

Tapi bagi vektor lain, katakan v=(12)|v'\rangle = \begin{pmatrix} 1\\2\end{pmatrix}, kita ada

Mv=(1221)(12)=(11+2221+12)=(54)cv.M|v'\rangle= \begin{pmatrix} 1 & 2 \\ 2 & 1\end{pmatrix}\begin{pmatrix} 1\\2 \end{pmatrix} = \begin{pmatrix} 1*1+2*2\\2*1+1*2 \end{pmatrix} = \begin{pmatrix} 5\\4 \end{pmatrix} \neq c|v'\rangle.

Kita mungkin cuba menggambarkan spin zarah menggunakan matriks, dan kita mungkin cuba menggambarkan keadaan zarah selepas pengukuran menggunakan vektor, yang dipanggil "vektor keadaan". Sama sekali tidak jelas nilai apa yang perlu dimasukkan ke dalam matriks atau vektor keadaan tersebut, tapi satu-satunya sifat yang kita ada daripada pengukuran setakat ini yang boleh kita gunakan untuk melabelkan keadaan ialah kebarangkalian mengukur 0 atau 1 ("spin-atas" atau "spin-bawah" dalam konteks zarah spin-1/2). Kita perlu mempertimbangkan bahawa entri dalam vektor keadaan perlu berkaitan dengan kebarangkalian ini (tepat-tepat kebarangkalian, "amplitud kebarangkalian" — bermaksud kita kuasakan dua entri tersebut untuk mendapatkan kebarangkalian, dan sebagainya). Tapi pada ketika ini, kita tidak pasti sama ada entri dalam matriks-matriks ini perlu benar-benar nyata, kompleks, atau apa. Untuk berjaga-jaga, jom kita cuba membangunkan rangka kerja di mana vektor dan matriks memenuhi syarat berikut:

  • Operator matriks dikaitkan dengan eksperimen seberapa banyak mungkin. Sebagai contoh, kita boleh mengaitkan nilai eigen matriks spin dengan unjuran spin yang diperhatikan secara eksperimen.
  • Vektor keadaan perlu dikaitkan dengan kebarangkalian dengan cara berikut: Jika zarah berada dalam vektor keadaan A|A\rangle, kebarangkalian bahawa pengukuran seterusnya akan mendapati zarah dalam keadaan B|B\rangle ialah PABAB2P_{AB}\equiv |\langle A| B \rangle|^2.

Ini memberi kita banyak kebebasan dalam membangunkan matriks pertama kita. Sebagai contoh, kita boleh cuba secara naif

0(10).|0\rangle \sim |\uparrow\rangle \sim \begin{pmatrix} 1 \\0 \end{pmatrix}.

Di sini 0|0\rangle \sim |\uparrow\rangle bermaksud terdapat keadaan dalam komputer kuantum dan dalam sistem spin-1/2 yang sangat serupa dan sering dipetakan antara satu sama lain. Mereka jelas tidak sama persis, kerana merujuk kepada sistem yang berbeza. Tapi aljabar yang menggambarkan sistem dua keadaan ini boleh mematuhi peraturan yang sama (spoiler alert: ya, memang!). Perhatikan bahawa pilihan rawak ini sudah mempunyai satu sifat yang bagus. Perhatikan bahawa

P00=002=(10)(10)2=12=1.P_{00} = |\langle 0| 0 \rangle|^2 = \vert \begin{pmatrix} 1 & 0\end{pmatrix} \begin{pmatrix} 1 \\ 0\end{pmatrix}\vert ^2 = |1|^2 = 1.

Iaitu, jika zarah sudah berada dalam keadaan 0|0\rangle, kebarangkalian bahawa pengukuran seterusnya juga akan menghasilkan 0|0\rangle ialah 1 (kecuali kesan daripada hingar). Ini sangat bagus, kerana kita sudah nampak bahawa apabila keadaan berada dalam keadaan 0 atau "spin-atas", ia kekal di sana selepas pengukuran seterusnya. Kebarangkalian di atas memang sepatutnya 100%.

Semak kefahaman anda

Baca soalan-soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk mendedahkan penyelesaian.

Kenapa

0=(10)|0\rangle = \begin{pmatrix} 1 \\0 \end{pmatrix}

adalah pilihan yang lebih baik berbanding, katakan,

0=(20)?|0\rangle = \begin{pmatrix} 2 \\0 \end{pmatrix}?

Jawapan:

Percubaan kita untuk mengaitkan kebarangkalian pengukuran dengan kuasa dua hasil darab dalaman bermaksud kita memerlukan magnitud setiap vektor ialah 1. Iaitu, vv2=1|\langle v|v\rangle|^2 = 1 bagi semua v|v\rangle, kerana kebarangkalian sesuatu yang berada dalam keadaan v|v\rangle untuk berada dalam keadaan v|v\rangle ialah 100%. Ini dikenali sebagai "syarat penormalan".

Kenapa

0=(10)|0\rangle = \begin{pmatrix} 1 \\0 \end{pmatrix}

adalah pilihan yang lebih baik berbanding, katakan,

0=(01)?|0\rangle = \begin{pmatrix} 0 \\1 \end{pmatrix}?

Jawapan:

Tidak juga. Tiada sebab kenapa kita perlu memilih 0=(10)|0\rangle = \begin{pmatrix} 1 \\0 \end{pmatrix} pada mulanya. Sebaliknya, ia adalah konvensyen. Walau bagaimanapun, sebaik sahaja kita membuat pilihan itu, ia memang mengenakan kekangan tertentu pada pilihan seterusnya. Lihat di bawah.

Ingat bahawa dalam eksperimen di atas, kita dapati Qubit yang bermula dalam keadaan 0|0\rangle kekal dalam keadaan tersebut selepas pengukuran seterusnya. Perkara yang sama berlaku untuk 1|1\rangle. Ini bermaksud Qubit yang berada dalam 0|0\rangle mempunyai kebarangkalian sifar untuk diukur dalam keadaan 1|1\rangle (kecuali kesan hingar). Hubungan yang diperlukan antara hasil darab dalaman dan kebarangkalian pengukuran kemudiannya memberitahu kita bahawa

P01=P10=0.P_{01} = P_{10}=0.

Tanpa kehilangan keumuman, kita boleh tulis vektor keadaan 1=(ab)|1\rangle = \begin{pmatrix} a \\ b \end{pmatrix}. Kemudian kita boleh tulis

P01=012=(10)(ab)2=a2=0.P_{01} = |\langle 0| 1 \rangle|^2 = \vert \begin{pmatrix} 1 & 0\end{pmatrix} \begin{pmatrix} a \\ b\end{pmatrix}\vert ^2 = |a|^2 = 0.

Syarat bahawa P11=1P_{11} = 1, yang dikenali sebagai "syarat penormalan", memberitahu kita bahawa b2=1|b|^2=1. Ini sendiri sebenarnya hanya mengehadkan kita kepada b=eiϕb=e^{i\phi} untuk ϕR\phi \in \mathbb{R}. Rupanya terdapat sebab lain untuk memilih b=1b=1 yang melampaui pengenalan kepada topik ini. Buat masa ini, cukuplah untuk dikatakan bahawa b=1b=1 adalah satu penyelesaian yang boleh diterima.

Kita sudah pergi cukup jauh dalam analisis kita. Memilih bentuk untuk vektor keadaan kita membolehkan kita membina matriks yang menggambarkan sesuatu tentang fenomena fizikal yang sedang berlaku di sini. Khususnya, kerana eksperimen Stern-Gerlach asal mengukur pemisahan trajektori berdasarkan komponen momentum sudut spin sepanjang paksi zz, kita inginkan operator yang menggambarkan tepat-tepat perkara itu: SzS_z. Satu lagi hubungan penting dengan eksperimen ialah daripada jumlah pesongan, masa perjalanan, dan kekuatan medan magnet yang diketahui, kita boleh menentukan magnitud komponen spin zz. Walaupun ini memerlukan banyak andaian tentang ketepatan persediaan eksperimen, di sini kita hanya akan menegaskan semula bahawa komponen-z momentum sudut spin yang diukur ialah ±/2\pm \hbar/2.

Kemudian kita mencari matriks dengan nilai eigen nyata (dipenuhi oleh matriks Hermitian) dengan nilai eigen yang sepadan dengan komponen spin yang diperhatikan secara eksperimen. Tanpa kehilangan keumuman, kita boleh tulis Sz=(s11s12s21s22)S_z = \begin{pmatrix} s_{11} & s_{12} \\ s_{21} & s_{22}\end{pmatrix}, dan kita boleh syaratkan:

Sz=(s11s12s21s22)(10)=(s11s21)=!2(10)s11=/2,s21=0S_z |\uparrow\rangle = \begin{pmatrix} s_{11} & s_{12} \\ s_{21} & s_{22}\end{pmatrix}\begin{pmatrix}1 \\0\end{pmatrix} = \begin{pmatrix} s_{11} \\ s_{21} \end{pmatrix} \overset{!}{=} \frac{\hbar}{2} \begin{pmatrix}1 \\0\end{pmatrix} \rightarrow s_{11} = \hbar/2,s_{21}=0 Sz=(s11s12s21s22)(01)=(s12s22)=!2(01)s12=0,s22=/2S_z |\downarrow\rangle = \begin{pmatrix} s_{11} & s_{12} \\ s_{21} & s_{22}\end{pmatrix}\begin{pmatrix}0 \\1\end{pmatrix} = \begin{pmatrix} s_{12} \\ s_{22} \end{pmatrix} \overset{!}{=} -\frac{\hbar}{2} \begin{pmatrix}0 \\1\end{pmatrix} \rightarrow s_{12} = 0, s_{22}=-\hbar/2

Menggabungkan, dan mengeluarkan faktor keseluruhan /2\hbar/2, kita ada

Sz=2(1001).S_z = \frac{\hbar}{2} \begin{pmatrix} 1 & 0 \\ 0 & -1\end{pmatrix}.

Ini adalah operator spin-z yang terkenal yang terdapat dalam semua buku teks mekanik kuantum. Seseorang sering melihat ini tanpa /2\hbar/2, dalam kes tersebut ia adalah operator "Pauli-z", biasanya ditandai σz\sigma_z:

σz=(1001).\sigma_z = \begin{pmatrix} 1 & 0 \\ 0 & -1\end{pmatrix}.

Ini berguna, kerana operator Pauli ini (dan matriks berkaitan) boleh menggambarkan banyak sistem fizikal yang melibatkan dua aras atau dua keputusan pengukuran yang mungkin, termasuk keadaan Qubit transmon dalam komputer kuantum.

Sebelum kita beralih kepada operator dan keadaan lain yang berkaitan dengan ini, kita mesti menangani satu fakta yang ramai orang silap faham. Tindakan operator tidak sama dengan pengukuran. Dalam satu erti kata, mungkin anda berkata, "Sudah tentu tidak! Satu berlaku di atas kertas sebagai sebahagian daripada pengiraan matematik, dan satu lagi berlaku di makmal pada sistem fizikal." Ya, itu betul, tapi lebih daripada itu. Membuat pengukuran komponen spin zz akan sentiasa menghasilkan keadaan "spin-atas" atau "spin-bawah", tanpa mengira keadaan awal sistem. Kita melihat ini dengan analogi pengkomputeran kuantum 0|0\rangle dan 1|1\rangle. Kita memulakan keadaan kepada ratusan orientasi rawak, dan pengukuran sentiasa menghasilkan sama ada 0|0\rangle atau 1|1\rangle. Ini dikenali sebagai pengukuran yang "meruntuhkan keadaan" kepada keadaan eigen. Ini tidak berlaku apabila anda menggunakan matriks pada keadaan. Cuba soalan di bawah untuk meneroka perkara ini.

Semak kefahaman anda

Baca soalan-soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk mendedahkan penyelesaian.

Andaikan anda bermula dengan zarah dalam keadaan spin

ψ=(3/52/5).|\psi\rangle = \begin{pmatrix}\sqrt{3/5} \\ \sqrt{2/5}\end{pmatrix}.

(a) Apa yang anda perolehi jika anda bertindak dengan operator SzS_z pada vektor keadaan ini? (b) Apa yang anda perolehi jika anda membuat satu pengukuran komponen spin zz zarah ini? (c) Apa yang anda perolehi jika anda menyediakan banyak zarah yang sama dengan keadaan ini dan membuat ribuan pengukuran komponen spin zz?

Jawapan:

(a) Anda memperolehi

Szψ=2(1001)(3/52/5)S_z |\psi\rangle = \frac{\hbar}{2} \begin{pmatrix} 1 & 0 \\ 0 & -1\end{pmatrix} \begin{pmatrix}\sqrt{3/5} \\ \sqrt{2/5}\end{pmatrix}=2(3/52/5).= \frac{\hbar}{2} \begin{pmatrix}\sqrt{3/5} \\ -\sqrt{2/5}\end{pmatrix}.

Itulah sahaja. Tiada keputusan eksperimen. Anda hanya menggunakan matriks pada vektor dan anda mendapat vektor yang sedikit berbeza yang kini mempunyai tanda "-" baru, dan tidak lagi mempunyai magnitud 1, kerana ia mempunyai awalan /2\hbar/2.

(b) Anda akan memperolehi sama ada |\uparrow\rangle atau |\downarrow\rangle. Ini sepadan dengan memerhati unjuran spin pada paksi zz sama ada /2\hbar/2 atau /2-\hbar/2, masing-masing. Kita juga boleh menentukan kebarangkalian setiap keputusan, kerana

Pψ=ψ2=(10)(3/52/5)2=3/52=35P_{\uparrow\psi}=|\langle \uparrow|\psi\rangle|^2 = \vert \begin{pmatrix}1 & 0\end{pmatrix} \begin{pmatrix}\sqrt{3/5} \\ \sqrt{2/5}\end{pmatrix}\vert^2 = |\sqrt{3/5}|^2 = \frac{3}{5}Pψ=ψ2=(01)(3/52/5)2=2/52=25P_{\downarrow\psi}=|\langle \downarrow|\psi\rangle|^2 = \vert \begin{pmatrix}0 & 1\end{pmatrix} \begin{pmatrix}\sqrt{3/5} \\ \sqrt{2/5}\end{pmatrix}\vert^2 = |\sqrt{2/5}|^2 = \frac{2}{5}

Jadi walaupun keadaan spin-atas 20% lebih berkemungkinan, kedua-dua keputusan adalah mungkin, dan kita hanya akan memperolehi salah satu daripada dua keadaan ini.

(c) Lebih kurang 60% pengukuran akan menghasilkan zarah spin-atas, dan lebih kurang 40% pengukuran akan menghasilkan zarah spin-bawah, mengikut kebarangkalian pengukuran yang dikira dalam bahagian (b).

Sahkan jawapan untuk bahagian (b) dan (c) soalan sebelumnya dengan menggunakan analogi antara keadaan spin-atas atom dan keadaan Qubit:

0.|\uparrow\rangle\sim|0\rangle.

Kodkan Circuit kuantum untuk mencipta keadaan awal yang dikehendaki, kemudian gunakan sama ada perkakasan sebenar atau simulator untuk menyemak keputusan pengukuran tunggal, dan daripada ensemble ratusan atau malah ribuan pengukuran.

Jawapan:

#Use the backend sampler for part (b) because it allows us to use a single shot.
from qiskit_aer import AerSimulator
backend_sim = AerSimulator.from_backend(backend)
from qiskit.primitives import BackendSampler
sampler = BackendSampler(backend = backend_sim)

#Create a quantum circuit to initialize the state.
import math
psi = [math.sqrt(3/5),math.sqrt(2/5)]
qc = QuantumCircuit(1,1)
qc.initialize(psi, [0])

#Add measurement to the circuit
qc.measure(0,0)
qc.draw('mpl')

#Set num_shots =1 for part (b) and num_shots = 1000 or more for part (c).
num_shots = 1000

#Run the job and print the result. You should obtain only 0 or 1 in part (b) for a single shot.
#You should obtain a probability distribution with approximately 60% 0 and 40% 1 in part (c)

dist = sampler.run([qc_ibm], shots = num_shots).result()
counts=dist[0].data.c.get_counts()
print(counts)

#You should obtain {0: 599, 1: 401} or something equivalently close to the 60%-40% distribution predicted.

Eksperimen Kelima: Mengukur Observable yang Berbeza

Setakat ini kita hanya membuat pengukuran sepanjang paksi z. Dalam eksperimen Stern-Gerlach, jika kita ingin mengukur sepanjang, katakan, paksi x, kita hanya perlu mengorientasikan medan magnet tak seragam untuk menghala sepanjang paksi xx, dan mencari pesongan sepanjang xx pada skrin. Komputer kuantum IBM, bagaimanapun, direka untuk membuat pengukuran hanya sepanjang satu paksi (zz). Untuk mengukur keadaan sepanjang xx, kita perlu melakukan "pertukaran asas". Ini bermakna kita perlu melakukan operasi yang membawa keadaan sepanjang xx dalam sfera Bloch ke zz, dan sebaliknya. Ada beberapa cara untuk melaksanakan ini, tetapi cara yang disyorkan adalah Gate Hadamard:

H=12(1111)H=\frac{1}{\sqrt{2}}\begin{pmatrix}1 & 1 \\ 1 & -1\end{pmatrix}

Uji kefahaman anda

Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk mendedahkan penyelesaiannya.

Tunjukkan bahawa H0=+xH|0\rangle = |+\rangle_x dan bahawa H+x=0H|+\rangle_x = |0\rangle

Jawapan:

H0=12(1111)(10)=12(11)=+xH|0\rangle = \frac{1}{\sqrt{2}}\begin{pmatrix}1 & 1 \\ 1 & -1\end{pmatrix}\begin{pmatrix}1 \\ 0\end{pmatrix} = \frac{1}{\sqrt{2}}\begin{pmatrix}1 \\ 1\end{pmatrix} = |+\rangle_xH+x=1(2)(1111)12(11)=12(20)=(10)=0H|+\rangle_x = \frac{1}{\sqrt(2)}\begin{pmatrix}1 & 1 \\ 1 & -1\end{pmatrix}\frac{1}{\sqrt{2}}\begin{pmatrix}1 \\ 1\end{pmatrix} = \frac{1}{2}\begin{pmatrix}2 \\ 0\end{pmatrix} = \begin{pmatrix}1 \\ 0\end{pmatrix} = |0\rangle

Tunjukkan bahawa H1=xH|1\rangle = |-\rangle_x dan bahawa Hx=1H|-\rangle_x = |1\rangle

Jawapan:

H1=12(1111)(01)=12(11)=xH|1\rangle = \frac{1}{\sqrt{2}}\begin{pmatrix}1 & 1 \\ 1 & -1\end{pmatrix}\begin{pmatrix}0 \\ 1\end{pmatrix} = \frac{1}{\sqrt{2}}\begin{pmatrix}1 \\ -1\end{pmatrix} = |-\rangle_xHx=1(2)(1111)12(11)=12(02)=(01)=1H|-\rangle_x = \frac{1}{\sqrt(2)}\begin{pmatrix}1 & 1 \\ 1 & -1\end{pmatrix}\frac{1}{\sqrt{2}}\begin{pmatrix}1 \\ -1\end{pmatrix} = \frac{1}{2}\begin{pmatrix}0 \\ 2\end{pmatrix} = \begin{pmatrix}0 \\ 1\end{pmatrix} = |1\rangle
# Define registers
qr = QuantumRegister(1, "q")
cr = ClassicalRegister(1, "c")
qc = QuantumCircuit(qr, cr)

# Add a hadamard gate to rotate into the x-basis
qc.h(0)
qc.measure(0, 0)

qc.draw("mpl")

Output of the previous code cell

Circuit ini memutar sistem kita supaya pengukuran (sepanjang zz) memberitahu kita tentang ciri-ciri xx sebelum putaran. Kita sudah tahu bahawa komputer kuantum memulakan keadaan kepada 0|0\rangle yang sepadan dengan |\uparrow\rangle. Mari kita lihat apa yang berlaku apabila kita mengukur unjuran spin sepanjang xx untuk keadaan yang pada mulanya berada dalam |\uparrow\rangle. Kita menunjukkan langkah ini pada simulator untuk menggalakkan anda meneroka statistik circuit lain dengan permulaan yang berbeza.

from qiskit.primitives import StatevectorSampler as Sampler

sampler_sv = Sampler()

job = sampler_sv.run([qc], shots=10000)
print(job.result()[0].data.c.get_counts())
{'1': 4977, '0': 5023}

Ini menunjukkan kepada kita bahawa bagi Qubit yang pada mulanya berada dalam 0|0\rangle (atau setaranya, spin dalam |\uparrow\rangle), kebarangkalian mengukur unjuran sepanjang +x+x atau x-x adalah lebih kurang 50-50. Dalam satu cara, ini sangat masuk akal. Lagipun, jika sesuatu menghala sepanjang arah z, ia tidak akan mempunyai kecenderungan tertentu untuk ±x\pm x. Kita mungkin mengharapkan perkara yang sama berlaku, jika kita bermula dengan keadaan 1|1\rangle (atau |\downarrow\rangle). Mari kita semak:

# Define registers
qr = QuantumRegister(1, "q")
cr = ClassicalRegister(1, "c")
qc = QuantumCircuit(qr, cr)

# Add a NOT gate and hadamard gate. Measure.
qc.x(0)
qc.h(0)
qc.measure(0, 0)

qc.draw("mpl")

Output of the previous code cell

job = sampler_sv.run([qc], shots=10000)
print(job.result()[0].data.c.get_counts())
{'0': 4935, '1': 5065}

Ya! Sekali lagi, kita mendapati kebarangkalian 50-50 untuk mengukur unjuran sepanjang ±x\pm x. Beranalogi dengan pengukuran sepanjang zz, kita mungkin turut mengesyaki bahawa zarah yang runtuh ke dalam keadaan yang pasti sepanjang +x+x mungkin mempunyai kebarangkalian sifar untuk kemudiannya diukur sepanjang x-x. Mari kita semak:

from qiskit import QuantumCircuit

# Define registers
qr = QuantumRegister(1, "q")
cr = ClassicalRegister(2, "c")
qc = QuantumCircuit(qr, cr)

# Rotate into x-basis using a Hadamard gate, then make two measurements in succession
qc.h(0)
qc.measure(0, 0)
qc.barrier()
qc.measure(0, 1)

qc.draw("mpl")

Output of the previous code cell

job = sampler_sv.run([qc])
print(job.result()[0].data.c.get_counts())
plot_histogram(job.result()[0].data.c.get_counts())
{'00': 504, '11': 520}

Output of the previous code cell

Seperti yang dijangka, kita memperoleh keputusan di mana unjuran adalah sepanjang +x+x, dan kemudian sekali lagi sepanjang +x+x, dan kita mempunyai keputusan di mana unjuran pada mulanya sepanjang x-x dan kemudian sekali lagi sepanjang x-x. Kita tidak melihat kes di mana unjuran bertukar dari +x+x ke x-x atau sebaliknya. Kita boleh mengumpulkan pemerhatian kita dan menggunakannya untuk membangunkan operator lanjut dalam bentuk matriks, dan vektor keadaan lanjut.

Kita tahu:

  • Keadaan dengan unjuran pasti sepanjang +z+z atau z-z mempunyai kebarangkalian 50% untuk didapati mempunyai unjuran sepanjang +x+x dan kebarangkalian 50% mempunyai unjuran sepanjang x-x.
  • Keadaan dengan unjuran pasti sepanjang +x+x mempunyai kebarangkalian sifar untuk kemudian didapati mempunyai unjuran sepanjang x-x, dan sebaliknya.

Kita boleh menggunakan keputusan ini untuk membina keadaan dengan unjuran positif yang pasti sepanjang xx (yang kita panggil +x|+x\rangle), dan keadaan dengan unjuran negatif yang pasti sepanjang xx (yang kita panggil x|-x\rangle). Daripada keadaan tersebut, kita boleh membina matriks yang sepadan dengan SxS_x, seperti yang kita lakukan untuk SzS_z. Kita tinggalkan ini sebagai latihan untuk pelajar. Begitu juga, seseorang boleh membina eksperimen yang membuat pengukuran sepanjang paksi yy, menentukan vektor untuk +y|+y\rangle dan y|-y\rangle, dan akhirnya mendapatkan ungkapan untuk SyS_y.

Mengumpulkan semua vektor dan matriks ini bersama-sama, kita mempunyai

+x=12(11)x=12(11)Sx=2(0110)+y=12(1i)y=12(1i)Sy=2(0ii0)+z=(10)z=(01)Sz=2(1001)\begin{aligned} |+x\rangle &= \frac{1}{\sqrt{2}}\begin{pmatrix}1 \\ 1\end{pmatrix} & \: & |-x\rangle &=& \frac{1}{\sqrt{2}}\begin{pmatrix}1 \\ -1\end{pmatrix} & \: &S_x &=& \frac{\hbar}{2} \begin{pmatrix} 0 & 1 \\ 1 & 0\end{pmatrix}\\ |+y\rangle &= \frac{1}{\sqrt{2}}\begin{pmatrix}1 \\ i\end{pmatrix} & \: & |-y\rangle &=& \frac{1}{\sqrt{2}}\begin{pmatrix}1 \\ -i\end{pmatrix} & \: &S_y &=& \frac{\hbar}{2} \begin{pmatrix} 0 & -i \\ i & 0\end{pmatrix}\\ |+z\rangle &= \begin{pmatrix}1 \\ 0\end{pmatrix} & \: &|-z\rangle &=& \begin{pmatrix}0 \\ 1\end{pmatrix} & \: &S_z &=& \frac{\hbar}{2} \begin{pmatrix} 1 & 0 \\ 0 & 1\end{pmatrix}\\ \end{aligned}

Soalan

Pengajar boleh meminta versi buku nota ini dengan kunci jawapan dan panduan penempatan dalam kurikulum biasa dengan mengisi tinjauan ringkas ini tentang cara buku nota digunakan.

Konsep penting:

  • Untuk zarah spin-1/2, pengukuran unjuran spin pada sesuatu paksi hanya boleh menghasilkan salah satu daripada dua hasil, yang sering disebut "atas" dan "bawah".
  • Qubit hanya boleh diukur dalam salah satu daripada dua keadaan, yang sering dirujuk sebagai 0|0\rangle dan 1|1\rangle.
  • Kita boleh memodelkan eksperimen Stern-Gerlach pada zarah spin-1/2 menggunakan Qubit dalam komputer kuantum.
  • Pengukuran berulang bagi observable fizikal yang sama pada zarah/Qubit yang sama akan menghasilkan hasil yang sama (melainkan sistem terganggu oleh hingar).
  • Kita boleh menggunakan keputusan daripada eksperimen Stern-Gerlach atau daripada eksperimen analog dengan komputer kuantum untuk memperoleh sistem vektor keadaan dan operator matriks yang menggambarkan spin mekanik kuantum.

Soalan B/S:

  1. B/S Bermula daripada pemerhatian eksperimen, satu-satunya pilihan yang sah untuk vektor bagi mewakili |\uparrow\rangle adalah (10)\begin{pmatrix}1 \\ 0\end{pmatrix}
  2. B/S Jika =(10)|\uparrow\rangle = \begin{pmatrix}1 \\ 0\end{pmatrix}, satu-satunya pilihan untuk |\downarrow\rangle adalah (01)\begin{pmatrix}0 \\ 1\end{pmatrix} (sehingga fasa global).
  3. B/S Zarah yang diukur berada dalam keadaan 0|0\rangle akan terus didapati dalam keadaan 0|0\rangle pada pengukuran berikutnya sepanjang zz.
  4. B/S Zarah yang diukur berada dalam keadaan 0|0\rangle akan terus didapati dalam keadaan 0|0\rangle pada pengukuran berikutnya sepanjang xx.
  5. B/S Zarah yang diukur berada dalam keadaan 0|0\rangle akan sentiasa didapati dalam keadaan +x|+\rangle_x pada pengukuran berikutnya sepanjang xx.

Soalan aneka pilihan:

  1. Zarah yang pada mulanya berada dalam |\uparrow\rangle mempunyai berapa kebarangkalian untuk diukur dalam keadaan +x|+x\rangle?

    • a. 0%
    • b. 25%
    • c. 50%
    • d. 71%
    • e. 100%
  2. Zarah yang pada mulanya berada dalam |\uparrow\rangle mempunyai berapa kebarangkalian untuk diukur dalam keadaan |\downarrow\rangle?

    • a. 0%
    • b. 25%
    • c. 50%
    • d. 71%
    • e. 100%
  3. Keadaan |\uparrow\rangle zarah spin-1/2 paling biasa dikaitkan dengan keadaan pengkomputeran kuantum yang mana?

    • a. +|+\rangle
    • b. |-\rangle
    • c. 0|0\rangle
    • d. 1|1\rangle
    • e. Tiada yang di atas

Soalan perbincangan:

  1. Tiga orang rakan sedang membincangkan pengukuran kuantum dan operator. Rakan A berkata, "Membuat pengukuran sepanjang zz dan bertindak dengan operator σz\sigma_z adalah perkara yang sama." Rakan B berkata, "Nah, ia adalah prosedur yang berbeza, tetapi kesannya sama." Rakan C berkata, "Ia benar-benar berbeza; ia malah mempunyai kesan yang berbeza pada kebanyakan keadaan." Dengan siapa anda bersetuju dan mengapa?

Masalah respons bebas:

  1. Diberikan pemerhatian eksperimen dan sintaks yang dicadangkan:

P+x=(10)(ab)2=a2=12P_{\uparrow+x}=\vert \begin{pmatrix}1 & 0\end{pmatrix}\begin{pmatrix}a \\ b\end{pmatrix}\vert^2 = |a|^2 =\frac{1}{2} P+x=(01)(ab)2=b2=12P_{\downarrow+x}=\vert \begin{pmatrix}0 & 1\end{pmatrix}\begin{pmatrix}a \\ b\end{pmatrix}\vert^2 = |b|^2 =\frac{1}{2}

tunjukkan bahawa sehingga fasa global

+x=12(1eiα)|+\rangle_x = \frac{1}{\sqrt{2}}\begin{pmatrix}1 \\ e^{i\alpha}\end{pmatrix}

Pilih α=0\alpha = 0 untuk mendapatkan keputusan standard.

  1. Diberikan pemerhatian eksperimen dan sintaks yang dicadangkan:

Px=(10)(ab)2=a2=12P_{\uparrow-x}=\vert \begin{pmatrix}1 & 0\end{pmatrix}\begin{pmatrix}a \\ b\end{pmatrix}\vert^2 = |a|^2 =\frac{1}{2} Px=(01)(ab)2=b2=12P_{\downarrow-x}=\vert \begin{pmatrix}0 & 1\end{pmatrix}\begin{pmatrix}a \\ b\end{pmatrix}\vert^2 = |b|^2 =\frac{1}{2}

Dan menggunakan keputusan daripada masalah cabaran 3:

P+xx=12(11)(cd)2=12c+d2=0P_{+x-x}=\vert \frac{1}{\sqrt{2}}\begin{pmatrix}1 & 1\end{pmatrix}\begin{pmatrix}c \\ d\end{pmatrix}\vert^2 = \frac{1}{2}|c+d|^2 =0

tunjukkan bahawa sehingga fasa global

+x=12(11)|+\rangle_x = \frac{1}{\sqrt{2}}\begin{pmatrix}1 \\ -1\end{pmatrix}

Penghargaan

[1] By Tatoute - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=34095239

Source: IBM Quantum docs — updated 20 Apr 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of approx. 27 Mac 2026