Diagonalisasi krylov kuantum
Dalam pelajaran ini tentang diagonalisasi krylov kuantum (KQD) kita akan menjawab soalan-soalan berikut:
- Apakah kaedah Krylov secara umum?
- Kenapa kaedah Krylov berkesan dan dalam keadaan apa?
- Bagaimana pengkomputeran kuantum memainkan peranan?
Bahagian kuantum pengiraan ini sebahagian besarnya berdasarkan kerja dalam Ref [1].
Video di bawah memberi gambaran keseluruhan kaedah Krylov dalam pengkomputeran klasik, memotivasikan penggunaannya, dan menjelaskan bagaimana pengkomputeran kuantum boleh memainkan peranan dalam aliran kerja tersebut. Teks seterusnya menawarkan lebih banyak perincian dan melaksanakan kaedah Krylov secara klasik dan menggunakan komputer kuantum.
1. Pengenalan kepada kaedah Krylovβ
Kaedah subruang Krylov boleh merujuk kepada mana-mana daripada beberapa kaedah yang dibina di sekitar apa yang dipanggil subruang Krylov. Ulasan lengkap tentang ini adalah di luar skop pelajaran ini, tetapi Ref [2-4] boleh memberikan latar belakang yang lebih mendalam. Di sini, kita akan fokus pada apa itu subruang Krylov, bagaimana dan kenapa ia berguna dalam menyelesaikan masalah nilai eigen, dan akhirnya bagaimana ia boleh dilaksanakan pada komputer kuantum. Definisi: Diberikan matriks simetri, semi-definitif positif , ruang Krylov berdarjah ialah ruang yang dicakupi oleh vektor-vektor yang diperoleh dengan mendarabkan kuasa-kuasa lebih tinggi matriks , sehingga , dengan vektor rujukan .
Walaupun vektor-vektor di atas merentangi apa yang kita panggil subruang Krylov, tiada sebab untuk mengandaikan bahawa mereka akan berortogonal. Seseorang sering menggunakan proses pengortogonalan berulang yang serupa dengan pengortogonalan Gram-Schmidt. Di sini prosesnya sedikit berbeza kerana setiap vektor baru dibuat berortogonal dengan yang lain semasa ia dijana. Dalam konteks ini ia dipanggil iterasi Arnoldi. Bermula dengan vektor awal , seseorang menjana vektor seterusnya , dan kemudian memastikan vektor kedua ini berortogonal dengan yang pertama dengan menolak unjurannya pada . Iaitu
Kini mudah untuk melihat bahawa kerana
Kita lakukan perkara yang sama untuk vektor seterusnya, memastikan ia berortogonal dengan kedua-dua vektor sebelumnya:
Jika kita ulangi proses ini untuk semua vektor, kita mempunyai asas ortonormal lengkap untuk subruang Krylov. Perhatikan bahawa proses pengortogonalan di sini akan menghasilkan sifar apabila , kerana vektor berortogonal semestinya merentangi ruang penuh. Proses ini juga akan menghasilkan sifar jika mana-mana vektor adalah vektor eigen kerana semua vektor berikutnya akan menjadi gandaan vektor tersebut.
1.1 Contoh mudah: Krylov secara tanganβ
Mari kita lalui proses penjanaan subruang Krylov pada matriks yang sangat kecil, supaya kita dapat melihat prosesnya. Kita mulakan dengan matriks awal yang menjadi minat kita:
Untuk contoh kecil ini, kita boleh menentukan vektor eigen dan nilai eigen dengan mudah walaupun dengan tangan. Kita tunjukkan penyelesaian berangka di sini.
# Added by doQumentation β required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime scipy sympy
# One might use linalg.eigh here, but later matrices may not be Hermitian. So we use linalg.eig in this lesson.
import numpy as np
A = np.array([[4, -1, 0], [-1, 4, -1], [0, -1, 4]])
eigenvalues, eigenvectors = np.linalg.eig(A)
print("The eigenvalues are ", eigenvalues)
print("The eigenvectors are ", eigenvectors)
The eigenvalues are [2.58578644 4. 5.41421356]
The eigenvectors are [[ 5.00000000e-01 -7.07106781e-01 5.00000000e-01]
[ 7.07106781e-01 1.37464400e-16 -7.07106781e-01]
[ 5.00000000e-01 7.07106781e-01 5.00000000e-01]]
Kita catat di sini untuk perbandingan kemudian:
Kita ingin mengkaji bagaimana proses ini berfungsi (atau gagal) apabila kita menambah dimensi subruang Krylov kita, . Untuk tujuan ini, kita akan menjalankan proses berikut:
- Jana subruang ruang vektor penuh bermula dengan vektor yang dipilih secara rawak (panggil ia jika ia sudah ternormal, seperti di atas).
- Unjurkan matriks penuh ke atas subruang tersebut, dan cari nilai eigen matriks unjuran .
- Tingkatkan saiz subruang dengan menjana lebih banyak vektor, memastikan ia ortonormal, menggunakan proses yang serupa dengan pengortogonalan Gram-Schmidt.
- Unjurkan ke atas subruang yang lebih besar dan cari nilai eigen matriks hasil .
- Ulangi ini sehingga nilai eigen menumpu (atau dalam kes mainan ini, sehingga kamu menjana vektor yang merentangi ruang vektor penuh matriks asal ).
Pelaksanaan biasa kaedah Krylov tidak perlu menyelesaikan masalah nilai eigen untuk matriks yang diunjurkan pada setiap subruang Krylov semasa ia dibina. Kamu boleh membina subruang berdimensi yang dikehendaki, unjurkan matriks ke atas subruang tersebut, dan diagonalisasikan matriks unjuran. Mengunjurkan dan mendiagonalisasikan pada setiap dimensi subruang hanya dilakukan untuk memeriksa konvergensi.
Dimensi :β
Kita pilih vektor rawak, katakan
Jika ia belum ternormal, normalkan ia.
Kita kini mengunjurkan matriks kita ke atas subruang vektor tunggal ini:
Ini adalah unjuran matriks ke atas subruang Krylov kita apabila ia mengandungi hanya satu vektor, . Nilai eigen matriks ini secara trivial ialah 4. Kita boleh menganggap ini sebagai anggaran tertib sifar nilai eigen (dalam kes ini hanya satu) dari . Walaupun ia adalah anggaran yang lemah, ia adalah order magnitud yang betul.
Dimensi :β
Kita kini menjana vektor seterusnya dalam subruang kita melalui operasi dengan pada vektor sebelumnya:
Sekarang kita tolak unjuran vektor ini ke atas vektor sebelumnya untuk memastikan ortogonaliti.