QUICK-PDE: Fungsi Qiskit oleh ColibriTD
Lihat rujukan API
Fungsi Qiskit adalah ciri eksperimental yang tersedia untuk pengguna Pelan Premium IBM Quantum®, Pelan Flex, dan Pelan On-Prem (melalui API Platform IBM Quantum). Ia dalam status keluaran pratonton dan boleh berubah.
Gambaran Keseluruhan
Penyelesai Persamaan Pembezaan Separa (PDE) yang dibentangkan di sini adalah sebahagian daripada platform Quantum Innovative Computing Kit (QUICK) kami (QUICK-PDE), dan dipaketkan sebagai Fungsi Qiskit. Dengan fungsi QUICK-PDE, anda boleh menyelesaikan persamaan pembezaan separa khusus domain pada QPU IBM Quantum. Fungsi ini berdasarkan algoritma yang diterangkan dalam kertas penerangan H-DES ColibriTD. Algoritma ini mampu menyelesaikan masalah berbilang fizik yang kompleks, bermula dengan Dinamik Cecair Pengiraan (CFD) dan Ubah Bentuk Bahan (MD), serta kes penggunaan lain yang akan hadir tidak lama lagi.
Untuk menangani persamaan pembezaan, penyelesaian cubaan dikodkan sebagai gabungan linear fungsi ortogon (biasanya polinomial Chebyshev, dan lebih khususnya daripadanya di mana ialah bilangan qubit yang mengekod fungsi anda), diparameter oleh sudut Litar Kuantum Boleh Ubah (VQC). Ansatz menjana keadaan yang mengekod fungsi, yang dinilai oleh boleh cerap yang gabungannya membolehkan penilaian fungsi pada semua titik. Anda kemudian boleh menilai fungsi kerugian di mana persamaan pembezaan dikodkan, dan melaraskan sudut dalam gelung hibrid, seperti yang ditunjukkan berikut. Penyelesaian cubaan semakin menghampiri penyelesaian sebenar sehingga anda mencapai hasil yang memuaskan.
Selain gelung hibrid ini, anda juga boleh menyambungkan pengoptimum yang berbeza secara bersiri. Ini berguna apabila anda mahu pengoptimum global mencari set sudut yang baik, kemudian pengoptimum yang lebih halus untuk mengikuti kecerunan ke set sudut jiran terbaik. Dalam kes dinamik cecair pengiraan (CFD), urutan pengoptimuman lalai menghasilkan keputusan terbaik — tetapi dalam kes ubah bentuk bahan (MD), walaupun lalai memberikan keputusan yang baik, anda boleh mengkonfigurasinya lebih lanjut untuk manfaat khusus masalah.
Perhatikan bahawa bagi setiap pemboleh ubah fungsi, kami menentukan bilangan qubit (yang boleh anda ubah). Dengan menindih 10 litar yang sama dan menilai 10 boleh cerap yang sama pada qubit berbeza sepanjang satu litar besar, anda boleh mengurangkan hingar dalam proses pengoptimuman CMA, bergantung pada kaedah pembelajaran hingar, dan mengurangkan bilangan tembakan yang diperlukan dengan ketara.
Dinamik Cecair Pengiraan
Persamaan Burgers' tak likat, memodelkan cecair tidak likat yang mengalir seperti berikut:
mewakili medan kelajuan cecair. Kes penggunaan ini mempunyai syarat sempadan temporal: anda boleh memilih keadaan awal dan kemudian membenarkan sistem berehat. Buat masa ini, satu-satunya syarat awal yang diterima ialah fungsi linear: .
Hujah untuk persamaan pembezaan CFD berada pada grid tetap, seperti berikut:
- berada antara 0 dan 0.95 dengan 30 titik sampel. berada antara 0 dan 0.95 dengan saiz langkah 0.2375.
Ubah Bentuk Bahan
Kes penggunaan ini memberi tumpuan pada ubah bentuk hipoelastik dengan ujian tegangan satu dimensi, di mana sebatang rod yang ditetapkan dalam ruang ditarik pada hujung satunya. Kami menerangkan masalah seperti berikut:
mewakili modulus pukal bahan yang diregangkan, eksponen hukum kuasa, daya per unit jisim, had tegasan berkadar, had terikan berkadar, fungsi tegasan, dan fungsi terikan.
Rod yang dipertimbangkan mempunyai panjang padu. Kes penggunaan ini mempunyai syarat sempadan untuk tegasan permukaan , atau jumlah kerja yang diperlukan untuk meregangkan rod.
Hujah untuk persamaan pembezaan MD berada pada grid tetap, seperti berikut:
- berada antara 0 dan 1 dengan saiz langkah 0.04.
Penanda Aras
Jadual berikut memaparkan statistik pelbagai jalankan fungsi kami.
| Contoh | Bilangan qubit | Pemulaan | Ralat | Jumlah masa (min) | Penggunaan masa jalan (min) |
|---|---|---|---|---|---|
| Persamaan Burgers' tak likat | 50 | PHYSICALLY_INFORMED | 66 | 25 | |
| Ujian tegangan 1D hipoelastik | 18 | RANDOM | 123 | 100 |
Mulakan
Isi borang untuk meminta akses kepada fungsi QUICK-PDE. Kemudian, dengan mengandaikan anda sudah menyimpan akaun anda ke persekitaran tempatan anda, pilih fungsi seperti berikut:
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit-ibm-catalog
from qiskit_ibm_catalog import QiskitFunctionsCatalog
catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
quick = catalog.load("colibritd/quick-pde")
Contoh
Untuk bermula, cuba salah satu contoh berikut:
Dinamik Cecair Pengiraan (CFD)
Apabila syarat awal ditetapkan kepada , hasilnya adalah seperti berikut:
# launch the simulation with initial conditions u(0,x) = a*x + b
job = quick.run(use_case="cfd", physical_parameters={"a": 1.0, "b": 0.0})
Semak status atau dapatkan semula keputusan beban kerja Fungsi Qiskit anda seperti berikut:
print(job.status())
solution = job.result()
'QUEUED'
import numpy as np
import matplotlib.pyplot as plt
_ = plt.figure()
ax = plt.axes(projection="3d")
# plot the solution using the 3d plotting capabilities of pyplot
t, x = np.meshgrid(solution["samples"]["t"], solution["samples"]["x"])
ax.plot_surface(
t,
x,
solution["functions"]["u"],
edgecolor="royalblue",
lw=0.25,
rstride=26,
cstride=26,
alpha=0.3,
)
ax.scatter(t, x, solution["functions"]["u"], marker=".")
ax.set(xlabel="t", ylabel="x", zlabel="u(t,x)")
plt.show()

Ubah Bentuk Bahan
Kes penggunaan ubah bentuk bahan memerlukan parameter fizikal bahan anda dan daya yang dikenakan, seperti berikut:
import matplotlib.pyplot as plt
# select the properties of your material
job = quick.run(
use_case="md",
physical_parameters={
"t": 12.0,
"K": 100.0,
"n": 4.0,
"b": 10.0,
"epsilon_0": 0.1,
"sigma_0": 5.0,
},
)
# plot the result
solution = job.result()
_ = plt.figure()
stress_plot = plt.subplot(211)
plt.plot(solution["samples"]["x"], solution["functions"]["u"])
strain_plot = plt.subplot(212)
plt.plot(solution["samples"]["x"], solution["functions"]["sigma"])
plt.show()
Berikut ialah contoh cara mendapatkan nilai fungsi untuk set koordinat tertentu:
# u(t=0.2, x=0.7) == 2
assert solution["samples"]["t"][1] == 0.2
assert solution["samples"]["x"][2] == 0.7
assert solution["functions"]["u"][1, 2] == 2
Dapatkan Mesej Ralat
Jika status beban kerja anda ialah ERROR, gunakan job.error_message() untuk mendapatkan mesej ralat bagi membantu nyahpepijat, seperti berikut:
job = quick.run(use_case="mdf", physical_params={})
print(job.error_message())
# or write a wrapper around it for a more human readable version
def pprint_error(job):
print("".join(eval(job.error_message())["error"]))
print("___")
pprint_error(job)
{"error": ["qiskit.exceptions.QiskitError: 'Unknown argument \"physical_params\", did you make a typo? -- https://docs.quantum.ibm.com/errors#1804'\n"]}
___
qiskit.exceptions.QiskitError: 'Unknown argument "physical_params", did you make a typo? -- https://docs.quantum.ibm.com/errors#1804'
Dapatkan Sokongan
Untuk sokongan, hubungi qiskit-function-support@colibritd.com.
Langkah Seterusnya
- Isi borang untuk meminta akses kepada fungsi QUICK-PDE.
- Lawati rujukan API untuk Fungsi Qiskit ini.
- Cuba memodelkan cecair tidak likat yang mengalir menggunakan QUICK-PDE dalam tutorial.
- Semak Jaffali, H., et al. (2025). H-DES: a Quantum-Classical Hybrid Differential Equation Solver. arXiv preprint arXiv:2410.01130.