Diagonalizzazione quantistica di Krylov
In questa lezione sulla diagonalizzazione Krylov quantistica (KQD) risponderemo alle seguenti domande:
- Cos'è il metodo Krylov, in generale?
- Perché il metodo Krylov funziona e in quali condizioni?
- Che ruolo svolge il calcolo quantistico?
La parte quantistica dei calcoli si basa in gran parte sul lavoro del Rif. [1].
Il video seguente fornisce una panoramica dei metodi Krylov nel calcolo classico, ne motiva l'utilizzo e spiega come il calcolo quantistico possa svolgere un ruolo in quel flusso di lavoro. Il testo successivo offre maggiori dettagli e implementa un metodo Krylov sia in modo classico che su un computer quantistico.
1. Introduzione ai metodi Krylov
Un metodo per sottospazi di Krylov può fare riferimento a uno qualsiasi dei vari metodi costruiti attorno a quello che viene chiamato il sottospazio di Krylov. Una rassegna completa di questi metodi va oltre lo scopo di questa lezione, ma i Rif. [2-4] possono tutti fornire un background sostanzialmente più approfondito. Qui ci concentreremo su cosa sia un sottospazio di Krylov, come e perché sia utile nella risoluzione di problemi agli autovalori, e infine come possa essere implementato su un computer quantistico.
Definizione: Data una matrice simmetrica e semidefinita positiva , lo spazio di Krylov di ordine è lo spazio generato dai vettori ottenuti moltiplicando potenze crescenti della matrice , fino a , per un vettore di riferimento .
Sebbene i vettori sopra riportati generino quello che chiamiamo sottospazio di Krylov, non c'è ragione di pensare che siano ortogonali. Si usa spesso un processo di ortonormalizzazione iterativa simile all'ortonormalizzazione di Gram-Schmidt. Qui il processo è leggermente diverso, poiché ogni nuovo vettore viene reso ortogonale agli altri nel momento in cui viene generato. In questo contesto viene chiamato iterazione di Arnoldi. Partendo dal vettore iniziale , si genera il vettore successivo e poi si assicura che questo secondo vettore sia ortogonale al primo sottraendo la sua proiezione su . Ovvero
È ora facile vedere che poiché
Facciamo lo stesso per il vettore successivo, assicurandoci che sia ortogonale a entrambi i precedenti:
Se ripetiamo questo processo per tutti gli vettori, abbiamo una base ortonormale completa per uno spazio di Krylov. Si noti che il processo di ortonormalizzazione qui darà zero non appena , poiché vettori ortogonali necessariamente generano l'intero spazio. Il processo darà zero anche se un vettore è un autovettore di , poiché tutti i vettori successivi saranno multipli di quel vettore.
1.1 Un esempio semplice: Krylov a mano
Proviamo a generare un sottospazio di Krylov su una matrice di dimensioni banalmente piccole, in modo da poter osservare il processo passo per passo. Partiamo da una matrice iniziale di nostro interesse:
Per questo piccolo esempio possiamo determinare gli autovettori e gli autovalori facilmente anche a mano. Mostriamo qui la soluzione numerica.
# 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]]
Li annotiamo qui per un confronto successivo:
Vogliamo studiare come questo processo funziona (o fallisce) man mano che aumentiamo la dimensione del nostro sottospazio di Krylov, . A questo scopo, applicheremo questo processo:
- Generare un sottospazio dello spazio vettoriale completo partendo da un vettore scelto casualmente (chiamiamolo se è già normalizzato, come sopra).
- Proiettare la matrice completa su quel sottospazio e trovare gli autovalori di quella matrice proiettata .
- Aumentare la dimensione del sottospazio generando ulteriori vettori, assicurandosi che siano ortonormali, usando un processo simile all'ortonormalizzazione di Gram-Schmidt.
- Proiettare sul sottospazio più grande e trovare gli autovalori della matrice risultante, .
- Ripetere fino a quando gli autovalori convergono (oppure, in questo caso giocattolo, fino a quando si sono generati vettori che generano l'intero spazio vettoriale della matrice originale ).
Un'implementazione normale del metodo Krylov non avrebbe bisogno di risolvere il problema agli autovalori per la matrice proiettata su ogni sottospazio di Krylov nel momento in cui viene costruito. Si potrebbe costruire il sottospazio della dimensione desiderata, proiettare la matrice su quel sottospazio e diagonalizzare la matrice proiettata. La proiezione e la diagonalizzazione ad ogni dimensione del sottospazio vengono fatte solo per verificare la convergenza.
Dimensione :
Scegliamo un vettore casuale, ad esempio
Se non è già normalizzato, normalizziamolo.
Proiettiamo ora la nostra matrice sul sottospazio di questo singolo vettore:
Questa è la nostra proiezione della matrice sul nostro sottospazio di Krylov quando contiene un solo vettore, . L'autovalore di questa matrice è banalmente 4. Possiamo considerare questo come la nostra stima di ordine zero degli autovalori (in questo caso solo uno) di . Sebbene sia una stima approssimativa, è del giusto ordine di grandezza.
Dimensione :
Generiamo ora il vettore successivo nel nostro sottospazio attraverso l'operazione di sul vettore precedente:
Ora sottraiamo la proiezione di questo vettore sul vettore precedente per garantire l'ortogonalità.
Se non è già normalizzato, normalizziamolo. In questo caso il vettore era già normalizzato, quindi
Proiettiamo ora la nostra matrice A sul sottospazio di questi due vettori:
Rimane ancora il problema di determinare gli autovalori di questa matrice. Ma questa matrice è leggermente più piccola della matrice completa. In problemi che coinvolgono matrici molto grandi, lavorare con questo sottospazio più piccolo può essere molto vantaggioso.
Sebbene questa sia ancora una stima approssimativa, è migliore della stima di ordine zero. Porteremo avanti questo processo per un'altra iterazione, per assicurarci che il processo sia chiaro. Tuttavia, questo vanifica lo scopo del metodo, poiché nell'iterazione successiva finiremo per diagonalizzare una matrice 3x3, il che significa che non abbiamo risparmiato né tempo né potenza computazionale.
Dimensione :
Generiamo ora il vettore successivo nel nostro sottospazio attraverso l'operazione di A sul vettore precedente:
Ora sottraiamo la proiezione di questo vettore su entrambi i vettori precedenti per garantire l'ortogonalità.
Se non è già normalizzato, normalizziamolo. In questo caso il vettore era già normalizzato, quindi
Proiettiamo ora la nostra matrice sul sottospazio di questi vettori:
Determiniamo ora gli autovalori:
Questi autovalori sono esattamente gli autovalori della matrice originale . Questo deve essere il caso, poiché abbiamo espanso il nostro sottospazio di Krylov fino a coprire l'intero spazio vettoriale della matrice originale .
In questo esempio, il metodo Krylov potrebbe non sembrare particolarmente più semplice della diagonalizzazione diretta. Infatti, come vedremo nelle sezioni successive, il metodo Krylov è vantaggioso solo al di sopra di una certa dimensione della matrice; questo esempio è inteso ad aiutarci a risolvere problemi di autovalori/autovettori di matrici estremamente grandi.

Questo è l'unico esempio che mostreremo risolto "a mano", ma la sezione 2 qui sotto mostra esempi computazionali.
Chiarimento dei termini
Un malinteso comune è che esista un solo sottospazio di Krylov per un dato problema. Ma ovviamente, poiché ci sono molti vettori iniziali a cui la nostra matrice potrebbe essere applicata, esistono molti possibili sottospazi di Krylov. Useremo la frase "il sottospazio di Krylov" solo per fare riferimento a un sottospazio di Krylov specifico già definito per un esempio specifico. Per approcci generali alla risoluzione di problemi faremo riferimento a "un sottospazio di Krylov". Un'ultima precisazione è che è corretto parlare di "spazio di Krylov". Spesso lo si chiama "sottospazio di Krylov" a causa del suo utilizzo nel contesto della proiezione di matrici da uno spazio iniziale in un sottospazio. Coerentemente con quel contesto, ci riferiremo per lo più ad esso come a un sottospazio qui.
Verifica della comprensione
Spiega perché non è (a) utile, e (b) possibile estendere la dimensione del sottospazio di Krylov oltre la dimensione della matrice di interesse.
Answer
(a) Poiché ortonormalizziamo i vettori man mano che li produciamo, un insieme di tali vettori formerà una base completa, il che significa che una loro combinazione lineare può essere usata per creare qualsiasi vettore nello spazio.
(b) Il processo di ortonormalizzazione consiste nel sottrarre la proiezione di un nuovo vettore su tutti i vettori precedenti. Se tutti i vettori precedenti generano l'intero spazio vettoriale, sottrarre le proiezioni sull'intero sottospazio ci lascerà sempre con un vettore zero.
Supponi che un collega ricercatore stia dimostrando il metodo Krylov applicato a una piccola matrice giocattolo. C'è qualcosa di sbagliato nella scelta della matrice e del vettore iniziale ?
e
Answer
Il tuo collega ha scelto accidentalmente un autovettore come vettore iniziale. Applicare la matrice al vettore iniziale restituirà semplicemente lo stesso vettore, scalato dall'autovalore. Questo non genererà un sottospazio di dimensione crescente. Consiglia al tuo collega di scegliere un vettore iniziale diverso, assicurandosi che non sia un autovettore.
Applica il metodo Krylov alla matrice data, scegliendo un appropriato nuovo vettore iniziale. Scrivi le stime dell'autovalore minimo all'ordine 0 e all'ordine 1 del tuo sottospazio di Krylov.
Answer
Ci sono molte risposte possibili a seconda della scelta del vettore iniziale. Sceglieremo:
Per ottenere applichiamo una volta a , e poi rendiamo ortogonale a
All'ordine 0, la proiezione sul nostro sottospazio di Krylov è
All'ordine 1, la proiezione su questo sottospazio di Krylov è
Questo può essere fatto a mano, ma è più facilmente eseguibile usando numpy:
import numpy as np
vstar = np.array([[1/np.sqrt(3),1/np.sqrt(3),1/np.sqrt(3)],[-1/np.sqrt(6),np.sqrt(2/3),-1/np.sqrt(6)]]
)
A = np.array([[1, 1, 0],
[1, 1, 1],
[0, 1, 1]])
v = np.array([[1/np.sqrt(3),-1/np.sqrt(6)],[1/np.sqrt(3),np.sqrt(2/3)],[1/np.sqrt(3),-1/np.sqrt(6)]])
proj = vstar@A@v
print(proj)
eigenvalues, eigenvectors = np.linalg.eig(proj)
print("The eigenvalues are ", eigenvalues)
print("The eigenvectors are ", eigenvectors)
outputs:
[[ 2.33333333 0.47140452]
[ 0.47140452 -0.33333333]]
The eigenvalues are [ 2.41421356 -0.41421356]
The eigenvectors are [[ 0.98559856 -0.16910198]
[ 0.16910198 0.98559856]]
La stima dell'autovalore minimo è -0.414.
1.2 Tipi di metodi Krylov
I "metodi per sottospazi di Krylov" possono fare riferimento a qualsiasi delle varie tecniche iterative utilizzate per risolvere grandi sistemi lineari e problemi agli autovalori. Ciò che hanno tutti in comune è che costruiscono una soluzione approssimata da un sottospazio di Krylov
dove è la stima iniziale (vedi Rif. [5]). Differiscono nel modo in cui scelgono la migliore approssimazione da questo sottospazio, bilanciando fattori quali la velocità di convergenza, l'utilizzo della memoria e il costo computazionale complessivo. L'obiettivo di questa lezione è sfruttare il calcolo quantistico nel contesto dei metodi per sottospazi di Krylov; una discussione esaustiva di questi metodi va oltre il suo scopo. Le brevi definizioni qui sotto servono solo come contesto e includono alcuni riferimenti per approfondire ulteriormente questi metodi.
Il metodo del gradiente coniugato (CG): Questo metodo è usato per risolvere sistemi lineari simmetrici e definiti positivi[6]. Minimizza la norma-A dell'errore ad ogni iterazione, rendendolo particolarmente efficace per sistemi che derivano da EDP ellittiche discretizzate[7]. Utilizzeremo questo approccio nella prossima sezione per motivare perché un sottospazio di Krylov sarebbe un sottospazio efficace in cui cercare soluzioni migliori ai sistemi lineari.
Il metodo del residuo minimo generalizzato (GMRES): È progettato per risolvere sistemi lineari generali non simmetrici. Minimizza la norma del residuo su uno spazio di Krylov ad ogni iterazione, rendendolo robusto ma potenzialmente costoso in termini di memoria per sistemi di grandi dimensioni[7].
Il metodo del residuo minimo (MINRES): Questo metodo è usato per risolvere sistemi lineari simmetrici indefiniti. È simile al GMRES ma sfrutta la simmetria della matrice per ridurre il costo computazionale[8].
Altri approcci degni di nota includono il metodo di ortonormalizzazione completa (FOM), strettamente correlato al metodo di Arnoldi per i problemi agli autovalori, il metodo del gradiente bi-coniugato (BiCG) e il metodo di riduzione della dimensione indotta (IDR).
1.3 Perché il metodo per sottospazi di Krylov funziona
Qui motiveremo il fatto che il metodo per sottospazi di Krylov dovrebbe essere un modo efficiente per approssimare gli autovalori di una matrice tramite un raffinamento iterativo delle approssimazioni degli autovettori, attraverso la prospettiva della discesa più ripida. Sosterremo che, data una stima iniziale dello stato fondamentale, lo spazio delle correzioni successive a quella stima iniziale che produce la convergenza più rapida è un sottospazio di Krylov. Ci fermiamo prima di una dimostrazione rigorosa del comportamento di convergenza.
Supponiamo che la nostra matrice di interesse sia simmetrica e definita positiva. Questo rende il nostro argomento più rilevante per il metodo CG sopra. Non facciamo ipotesi sulla sparsità; né stiamo affermando che debba essere Hermitiana (cosa necessaria se è un'Hamiltoniana).
In genere vogliamo risolvere un problema della forma
Si potrebbe immaginare che dove è una costante, come in un problema agli autovalori. Ma la nostra formulazione del problema rimane più generale per ora.
Partiamo da un vettore che è una soluzione approssimata. Sebbene ci siano parallelismi tra questa stima e nella Sezione 1.1, non li sfruttiamo qui. La nostra stima ha un errore, che chiamiamo
Definiamo anche il residuo
Qui usiamo la maiuscola per distinguere il residuo dalla dimensione del nostro sottospazio di Krylov .
Vogliamo ora effettuare un passo di correzione della forma
che speriamo migliori la nostra approssimazione. Qui è un vettore ancora da determinare. Sia l'errore dopo che la correzione è stata effettuata. Allora
Siamo interessati al comportamento del nostro errore quando trasformato dalla nostra matrice. Calcoliamo quindi la norma- dell'errore. Ovvero