Diagonalizarea Krylov cuantică
În această lecție despre diagonalizarea Krylov cuantică (KQD) vom răspunde la următoarele întrebări:
- Ce este metoda Krylov, în general?
- De ce funcționează metoda Krylov și în ce condiții?
- Cum intervine calculul cuantic?
Partea cuantică a calculelor se bazează în mare parte pe lucrarea din Ref [1].
Videoclipul de mai jos oferă o prezentare generală a metodelor Krylov în calculul clasic, motivează utilizarea lor și explică cum poate interveni calculul cuantic în acest flux de lucru. Textul următor oferă mai multe detalii și implementează o metodă Krylov atât clasic, cât și folosind un calculator cuantic.
1. Introducere în metodele Krylov
O metodă a subspațiului Krylov poate face referire la oricare dintre mai multe metode construite în jurul a ceea ce se numește subspațiul Krylov. O prezentare completă a acestora depășește scopul acestei lecții, însă Ref [2-4] pot oferi un fundal substanțial mai detaliat. Aici ne vom concentra pe ce este un subspațiu Krylov, cum și de ce este util în rezolvarea problemelor de valori proprii, și, în final, cum poate fi implementat pe un calculator cuantic. Definiție: Dată o matrice simetrică și pozitiv semi-definită , spațiul Krylov de ordinul este spațiul generat de vectorii obținuți prin înmulțirea puterilor crescătoare ale matricei , până la , cu un vector de referință .
Deși vectorii de mai sus generează ceea ce numim un subspațiu Krylov, nu există niciun motiv să presupunem că vor fi ortogonali. Adesea se folosește un proces iterativ de ortonormare similar cu ortonormarea Gram-Schmidt. Aici procesul este puțin diferit, deoarece fiecare vector nou este făcut ortogonal față de ceilalți pe măsură ce este generat. În acest context, procesul se numește iterația Arnoldi. Pornind de la vectorul inițial , se generează următorul vector , după care se asigură că al doilea vector este ortogonal față de primul prin scăderea proiecției sale pe . Adică
Acum este ușor de văzut că deoarece
Facem același lucru pentru următorul vector, asigurându-ne că este ortogonal față de ambii vectori anteriori:
Dacă repetăm acest proces pentru toți cei vectori, avem o bază ortonormată completă pentru un spațiu Krylov. Observă că procesul de ortonormare va produce zero odată ce , deoarece vectori ortogonali acoperă în mod necesar spațiul complet. Procesul va produce de asemenea zero dacă vreun vector este un vector propriu al lui , deoarece toți vectorii următori vor fi multipli ai acelui vector.
1.1 Un exemplu simplu: Krylov de mână
Să parcurgem pas cu pas generarea unui subspațiu Krylov pe o matrice extrem de mică, astfel încât să putem vedea procesul. Începem cu o matrice inițială care ne interesează:
Pentru acest exemplu mic, putem determina ușor vectorii proprii și valorile proprii chiar și manual. Prezentăm aici soluția numerică.
# 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]]
Le notăm aici pentru comparație ulterioară:
Am dori să studiem cum funcționează (sau eșuează) acest proces pe măsură ce creștem dimensiunea subspațiului nostru Krylov, . În acest scop, vom aplica procesul următor:
- Generează un subspațiu al spațiului vectorial complet pornind de la un vector ales aleatoriu (numește-l dacă este deja normalizat, ca mai sus).
- Proiectează matricea completă pe acel subspațiu și găsește valorile proprii ale acelei matrici proiectate .
- Mărește dimensiunea subspațiului generând mai mulți vectori, asigurând că aceștia sunt ortonormați, folosind un proces similar cu ortonormarea Gram-Schmidt.
- Proiectează pe subspațiul mai mare și găsește valorile proprii ale matricii rezultante, .
- Repetă acest lucru până când valorile proprii converg (sau, în acest caz de jucărie, până când ai generat vectori ce acoperă spațiul vectorial complet al matricei originale ).
O implementare normală a metodei Krylov nu ar trebui să rezolve problema valorilor proprii pentru matricea proiectată pe fiecare subspațiu Krylov pe măsură ce este construit. Ai putea construi subspațiul de dimensiunea dorită, proiecta matricea pe acel subspațiu și diagonaliza matricea proiectată. Proiectarea și diagonalizarea la fiecare dimensiune a subspațiului se face doar pentru verificarea convergenței.
Dimensiunea :
Alegem un vector aleatoriu, să zicem
Dacă nu este deja normalizat, normalizează-l.
Acum proiectăm matricea noastră pe subspațiul acestui singur vector:
Aceasta este proiecția matricei pe subspațiul nostru Krylov atunci când acesta conține doar un singur vector, . Valoarea proprie a acestei matrici este trivial 4. Putem considera aceasta ca estimarea noastră de ordinul zero a valorilor proprii (în acest caz doar una) ale lui . Deși este o estimare slabă, are ordinul de mărime corect.
Dimensiunea :
Acum generăm următorul vector din subspațiul nostru prin aplicarea lui pe vectorul anterior: