Renormalization Group Theory

La teoria del gruppo di rinormalizzazione (RG) è una teoria fisica che descrive come le proprietà di un sistema fisico cambiano quando il sistema viene esaminato a diverse scale di lunghezza o energia. In particolare, la RG è usata per studiare i sistemi fisici che hanno una struttura multi-scala, come ad esempio i sistemi critici, i fluidi turbolenti e i materiali disordinati.

La teoria del gruppo di rinormalizzazione è stata sviluppata inizialmente per la fisica statistica, ma è stata estesa successivamente ad altre aree della fisica, come la fisica delle particelle, la teoria delle stringhe e la fisica della materia condensata.

Questa teoria prevede la costruzione di un gruppo di trasformazioni che cambiano la scala di lunghezza o energia del sistema fisico. Le proprietà del sistema a una determinata scala sono quindi descritte dalle proprietà del sistema a una scala diversa. Questo processo viene ripetuto iterativamente fino a quando non si raggiunge la scala desiderata.

Un aspetto importante è la nozione di punto fisso. Un punto fisso è un insieme di condizioni in cui le proprietà del sistema rimangono invariate sotto le trasformazioni del gruppo di rinormalizzazione. Il sistema si evolve in modo autonomo intorno a un punto fisso, e le sue proprietà crittografano le informazioni sulla fisica del sistema a tutte le scale.

La real space renormalization group (RSRG) e la infinite density matrix renormalization group (Infinite DMRG) sono due tecniche di calcolo che utilizzano la teoria del gruppo di rinormalizzazione per studiare sistemi quantistici di molti corpi. In questo esempio andremo ad applicare queste due tecniche per ottenere il "punto fisso" del ground state, guardando all'efficienza e alla precisione. Come sistema a molti corpi, prenderemo il modello di Isign.



RSRG


L'algoritmo RSRG consiste fissare un numero di particelle e raddoppiarle ad ogni iterazione. Una volta ottenuto il sistema raddoppiato, si procede al calcolo dello stato fondamentale del sistema raddoppiato. Successivamente, la matrice del sistema raddoppiato viene proiettata sul sistema di dimensione iniziale $N$, ma conterrà le informazioni del sistema raddoppiato. Dopodiché, l'algoritmo ricomincia: raddoppia il sistema e calcola lo stato fondamentale, quindi il sistema viene nuovamente proiettato. L'algoritmo si ferma quando lo stato fondamentale è stabile, quindi quando l'ultimo stato fondamentale è simile al precedente.Gli step di questo algoritmo sono:

  1. L'algoritmo parte quando l'operatore Hamiltoniano è definito dal modello di Isign, ovvero: $H_{N} = \lambda\sum_{i=1}^N \sigma^{(i)}_z + \sum_{i=1}^{N-1} \sigma_x^{(i)} \sigma_x^{(i+1)}$. A questo punto il sistema raddoppia il sistema, introducendo un altro operatore Hamiltoniano, definito da:
    $$H_{2N} = H_{N} \otimes \mathbb{1}_{N} + \mathbb{1}_N \otimes H_N + \underbrace{ \mathbb{1}_{N-1} \otimes \sigma_x^{(N)} \otimes \sigma_x^{(N+1)} \otimes \mathbb{1}_{N-1}}_{H_{2N}^{int}}$$
    dove il sistema raddoppiato è formato da due sistemi speculari vicini e $H_{2N}^{int}$ è l'interazione tra la particella N-esima del primo sistema e la prima particella del secondo sistema. In questo modo, la matrice che rappresenta l'hamiltoniana avrà le dimensioni di $2^{2N} \times 2^{2N}$, mentre la matrice dell'hamiltoniana iniziale $H_{N}$ ha dimensione $2^N \times 2^N$. Pertanto, un sistema di particelle $N=2$ produrrà una matrice iniziale $H_2$ di dimensioni $4\times 4$ e il doppio sistema di particelle $N=4$ produrrà una matrice $H_4$ di dimensioni $16\times 16$.

  2. Quindi, una volta ottenuto il sistema sdoppiato, il programma può calcolare gli autovalori. L'energia dello stato fondamentale è la quantità che valuterò. Mentre le dimensioni del sistema aumentano, lo stato fondamentale diminuisce, quindi, per ottenere il plateau dello stato fondamentale, devo dividere l'autovalore per il numero di particelle di quel ciclo. Più precisamente $E_{g.s.}^k = E_0^k/N$ per ogni ciclo $k$

  3. L'algoritmo termina quando l'energia del ground state rimane costante, quindi la condizione $|E^k_{g.s.} - E^{k-1}_{g.s.}| < \delta$ , dove $\delta$ è una tolleranza arbitraria.

  4. Se la condizione in $3.$ non è rispettata, l'algoritmo procede calcolando il proiettore $P$: si tratta di una matrice di dimensioni $2^{2N} \^mille 2^N$ formata dai primi $2^N$ autovalori. Una volta ottenuto $P$, l'algoritmo calcola l'hamiltoniana proiettata tale che
    $$\widetilde{H}_{N} = P^{\dagger} H_{2N} P = P^\dagger \left( H_{N} \otimes \mathbb{1}_{N} + \mathbb{1}_N \otimes H_N + \mathbb{1}_{N-1} \otimes \sigma_x^{(N)} \otimes \sigma_x^{(N+1)} \otimes \mathbb{1}_{N-1}\right)P.$$
    In questo caso, il sistema viene proiettato in un sottosistema che contiene le informazioni di quello raddoppiato, quindi viene scritto su un'altra base. L'algoritmo riparte dal punto $1.$ dell'algoritmo, dove ora c'è $\widetilde{H}_N$ al posto di $H_N$. L'Hamiltoniana raddoppiata sarà:
    $$ \widetilde{H}_{2N} = \widetilde{H}_N \otimes \mathbb{1}_{N} + \mathbb{1}_N \otimes \widetilde{H}_N + \mathbb{1}_{N-1} \otimes \widetilde{\sigma}_{x}^{(N)} \otimes \widetilde{\sigma}_{x}^{(N+1)} \otimes \mathbb{1}_{N-1},$$
    dove è necessario proiettare la parte sinistra e la parte destra di $H_{2N}^{int}$ per ottenere il termine $\mathbb{1}_{N-1} \otimes \widetilde{\sigma}_{x}^{(N)}$ per la il termine alla sinistra e il termine $\widetilde{\sigma}_{x}^{(N+1)} \otimes \mathbb{1}_{N-1}$ per quello di destra nelle basi corrette. La proiezione viene eseguita secondo:
    $$\displaylines{ \mathbb{1}_{N-1} \otimes \widetilde{\sigma}_{x}^{(N)} = P^\dagger \left(\mathbb{1}_{N} \otimes \mathbb{1}_{N-1} \otimes \sigma_{x}^{(N)}\right)P }$$
    per la parte sinistra, mentre
    $$ \widetilde{\sigma}_{x}^{(N+1)} \otimes \mathbb{1}_{N-1} = P^\dagger \left(\sigma_{x}^{(N+1)}\otimes \mathbb{1}_{N-1} \otimes \mathbb{1}_{N} \right)P$$
    per la parte destra.

Questo algoritmo viene ripetuto fino a quando la condizione in $3.$ è vera, poi l'algoritmo si ferma perché il sistema raggiunge il limite termodinamico.



Infinite DMRG


Il DMRG infinito è un altro algoritmo che mira a raggiungere il limite termodinamico aggiungendo solo $2$ particelle tra i due sistemi speculari. La situazione iniziale è analoga a quella dell'algoritmo RSRG, cioè il sistema è costituito dal Modello di Ising per $N$ particelle. A questo punto, l'algoritmo raddoppia il sistema iniziale e aggiunge due particelle tra i due sistemi iniziali. Una volta costruita l'hamiltoniana totale del sistema, il programma calcola la diagonalizzazione dell'hamiltoniana totale per verificare se lo stato fondamentale è nel limite termodinamico. In caso contrario, è necessario costruire la matrice di densità, partendo dall'autovettore dello stato fondamentale. A questo punto l'algoritmo richiede di calcolare la matrice di densità ridotta per il sottosistema sinistro e per quello destro. Queste due matrici di densità ridotte vengono utilizzate per costruire il proiettore, a partire dalla loro diagonalizzazione, per proiettare il sottosistema sinistro e destro in un altro sottosistema che contiene le informazioni sul sottosistema precedente con $N+1$ particelle. I passi di questo algoritmo sono

  1. Partendo dall'hamiltoniana totale del modello di Ising $H_N$ con $N$ particelle, il primo passo consiste nel costruire l'hamiltoniana totale per $2N+2$ particelle, ossia $H_{2N+2}$. Questo sistema può essere visto come due modelli di Ising, tra i quali ci sono due particelle. Se $H_{N}$ è l'hamiltoniana del modello di Ising, la parte di non interazione è costituita da
    $$ H_{2N+2}^{non-int} H^1_{2N+2} + H^2_{2N+2} + H_{2N+2}^3 + H^4_{2N+2} = H_N \otimes \mathbb{1}_{N+2} + \mathbb{1}_N \otimes \lambda\cdot\sigma_x^{(N+1)} \otimes \mathbb{1}_{N+1} + \mathbb{1}_{N+1} \otimes \lambda\cdot\sigma_z^{(N+2)} \otimes \mathbb{1}_{N} + \mathbb{1}_{N+2} \otimes H_N $$
    Nel primo e nell'ultimo termine, si riconosce l'Hamiltoniana iniziale $H_N$ per i due sistemi separati. Il secondo e il terzo termine sono contributi delle singole particelle in posizione $N+1$ e $N+2$, tra i due modelli di Ising. Questi due termini sono formati dal termine di forza del Modello di Ising perché includono una sola particella per termine. Il termine di interazione è formato da
    $$ H_{2N+2}^{int} = H_{2N+2}^{1-2} + H_{2N+2}^{2-3} + H^{3-4}_{2N+2} = \mathbb{1}_{N-1} \otimes \sigma_x^{(N)} \otimes \sigma_x^{(N+1)} \otimes \mathbb{1}_{N+1} +\mathbb{1}_{N} \otimes \sigma_x^{(N+1)} \otimes \sigma_x^{(N+2)} \otimes \mathbb{1}_{N} +\mathbb{1}_{N+1} \otimes \sigma_x^{(N+2)} \otimes \sigma_x^{(N+3)} \otimes \mathbb{1}_{N-1} $$
    Alla fine, il termine di interazione è l'interazione tra la $N$-esima particella del primo sistema e la prima particella libera, l'interazione tra le due particelle libere e l'interazione tra la seconda particella libera e la prima del secondo sistema. Ora, il programma può costruire l'$H_{2N+2}$ del sistema totale come $H_{2N+2} = H_{2N+2}^{non-int} + H_{2N+2}^{int}$.

  2. Ora c'è la diagonalizzazione dell'hamiltoniana $H_{2N+2}$. Il primo autovalore diviso per il numero di particelle sarà lo stato fondamentale del sistema, ovvero $E^k_{g.s.} = E^k_0/N$, dove $k$ è il ciclo.

  3. Come visto per il punto $3.$ nell'algoritmo RSRG, il programma dimostrerà che l'energia dello stato fondamentale è costante con la condizione $|E^k_{g.s.} - E^{k-1}_{g.s.}|<\delta$, dove $\delta$ è una tolleranza arbitraria.

  4. Se la condizione precedente non è rispettata, il programma prende l'autovettore associato all'energia dello stato fondamentale e costruisce la matrice di densità $\rho = \ket{\psi_{g.s.}} \bra{\psi_{g.s.}}$.

  5. Dalla matrice di densità $\rho$, il programma calcola la matrice di densità ridotta per il sistema sinistro e per il sistema destro. Ad esempio, per il sistema sinistro, la matrice di densità ridotta è data da $$ \rho_L = Tr_R \, \rho $$e la matrice di densità ridotta viene diagonalizzata.

  6. A partire dagli autovettori della matrice di densità ridotta diagonalizzata, il programma costruisce il proiettore $P$. Questo proiettore è una matrice di dimensioni $2^{N+1} \times 2^{N}$ ed è formato dagli autovettori della matrice di densità ridotta memorizzati in ordine decrescente.

  7. Il proiettore $P$ proietta il termine $H^L_{N+1} = H^1_{N+1} + H^2_{N+1} + H^{1-2}_{N+1}$ e il termine $L_{N+1} = \mathbb{1}_{N} \otimes \sigma_x^{(N+1)}$ nel sottosistema di $N$ particelle, ma con le informazioni del sistema formato da $N+1$ particelle. In modo analogo, la parte destra formata dalle $H^R_{N+1} = H^3_{N+1} + H^4_{N+1} + H^{3-4}_{N+1}$ e il termine $R_{N+1} = \sigma_x^{(N+2)} \otimes \mathbb{1}_{N}$ è proiettato. A questo punto l'algoritmo riparte dal punto $1.$ con la nuova Hamiltoniana data da
    $$ \widetilde{H}^L_{N} = P^\dagger \left(H^L_{N+1}\right) P \qquad \quad \widetilde{H}^R_{N} = P^\dagger \left(H^R_{N+1}\right) P $$
    $$ \mathbb{1}_{N-1} \otimes \widetilde{\sigma}_x^{(N)} = P^\dagger L_{N+1} P \qquad \quad \widetilde{\sigma}_x^{(N+1)} \otimes \mathbb{1}_{N-1} = P^\dagger R_{N+1} P $$

L'algoritmo viene ripetuto finché non viene verificata la condizione nel punto $3.$. A questo punto, il limite termodinamico è raggiunto e il programma interrompe il calcolo.

L'implementazione dello script si basa sulla libreria numpy e importa anche diverse funzioni di utilità dal modulo 'renormalization_utils'. Questo modulo fornisce tutti gli strumenti per sviluppare gli algoritmi, come la creazione dell'Hamiltoniana del modello di Isign e la funzione responsabile della proiezione. L'algoritmo di rinormalizzazione viene utilizzato per calcolare l'energia di stato fondamentale del modello Ising in funzione del parametro di forza di accoppiamento $\lambda$. La funzione inizializza innanzitutto diversi parametri:
  • dimension: la dimensione dello spazio di Hilbert di ciascuna particella; il valore predefinito è $2$.

  • N_particles: la dimensione del sistema (numero di particelle), l'impostazione predefinita è $2$.

  • binlambda: il numero di bins per il parametro di forza $\lambda$, l'impostazione predefinita è $200$.

  • precision: la precisione per la valutazione dei risultati, l'impostazione predefinita è $10^{-5}$.

  • p_lambda: il valore massimo del parametro di forza $\lambda$, predefinito è $3$.

La funzione inizializza quindi le matrici di Pauli, utilizzate per definire le parti di interazione e non interazione del modello di Ising. La funzione inizializza poi diversi array per memorizzare il tempo parziale del calcolo, i passi e i livelli a $\lambda=0$ e$\lambda$=max, i passi di convergenza, $\lambda$ e l'energia dello stato fondamentale.

La funzione esegue quindi un ciclo sui bins per il parametro di forza. In ogni iterazione del ciclo, la funzione calcola l'hamiltoniana completa del modello Ising e inizializza i termini di interazione destra e sinistra. La funzione entra quindi in un ciclo while per eseguire l'algoritmo di rinormalizzazione. La funzione controlla quindi la convergenza confrontando l'energia dello stato fondamentale dell'iterazione corrente con l'energia dello stato fondamentale dell'iterazione precedente. Se le energie dello stato fondamentale sono simili, la funzione interrompe l'iterazione e memorizza i risultati finali. Se le energie dello stato fondamentale non sono simili, la funzione aggiorna l'hamiltoniana completa, il termine di interazione sinistro e il termine di interazione destro proiettando l'hamiltoniana raddoppiata sulla base dell'iterazione precedente. Questa proiezione viene effettuata utilizzando le funzioni di utilità del modulo renormalization_utils. La funzione memorizza quindi il nuovo $\lambda$ e l'energia di stato fondamentale e incrementa il contatore dei passi.

Al termine del ciclo while, la funzione memorizza i risultati finali per il bin corrente di $\lambda$ e passa al bin successivo. Una volta iterati tutti i bin, la funzione restituisce i risultati, che consistono nei passi e nei livelli a $\lambda$=0 e $\lambda$=max, nei passi di convergenza, in $\lambda$ e nell'energia dello stato fondamentale. Questi risultati possono essere utilizzati per analizzare il comportamento del modello di Ising sotto rinormalizzazione.
Renormalization Group Theory

Informazioni

  • Categoria: Fisica
  • Url progetto:
  • About: Questo codice è un esercizio assegnato durante la laurea magistrale in Physics of Matter nel corso di Quantum Computation.

La teoria del gruppo di rinormalizzazione (RG) è una teoria fisica che descrive come le proprietà di un sistema fisico cambiano quando il sistema viene esaminato a diverse scale di lunghezza o energia. In particolare, la RG è usata per studiare i sistemi fisici che hanno una struttura multi-scala, come ad esempio i sistemi critici, i fluidi turbolenti e i materiali disordinati.

La teoria del gruppo di rinormalizzazione è stata sviluppata inizialmente per la fisica statistica, ma è stata estesa successivamente ad altre aree della fisica, come la fisica delle particelle, la teoria delle stringhe e la fisica della materia condensata.

Questa teoria prevede la costruzione di un gruppo di trasformazioni che cambiano la scala di lunghezza o energia del sistema fisico. Le proprietà del sistema a una determinata scala sono quindi descritte dalle proprietà del sistema a una scala diversa. Questo processo viene ripetuto iterativamente fino a quando non si raggiunge la scala desiderata.

Un aspetto importante è la nozione di punto fisso. Un punto fisso è un insieme di condizioni in cui le proprietà del sistema rimangono invariate sotto le trasformazioni del gruppo di rinormalizzazione. Il sistema si evolve in modo autonomo intorno a un punto fisso, e le sue proprietà crittografano le informazioni sulla fisica del sistema a tutte le scale.

La real space renormalization group (RSRG) e la infinite density matrix renormalization group (Infinite DMRG) sono due tecniche di calcolo che utilizzano la teoria del gruppo di rinormalizzazione per studiare sistemi quantistici di molti corpi. In questo esempio andremo ad applicare queste due tecniche per ottenere il "punto fisso" del ground state, guardando all'efficienza e alla precisione. Come sistema a molti corpi, prenderemo il modello di Isign.



RSRG


L'algoritmo RSRG consiste fissare un numero di particelle e raddoppiarle ad ogni iterazione. Una volta ottenuto il sistema raddoppiato, si procede al calcolo dello stato fondamentale del sistema raddoppiato. Successivamente, la matrice del sistema raddoppiato viene proiettata sul sistema di dimensione iniziale $N$, ma conterrà le informazioni del sistema raddoppiato. Dopodiché, l'algoritmo ricomincia: raddoppia il sistema e calcola lo stato fondamentale, quindi il sistema viene nuovamente proiettato. L'algoritmo si ferma quando lo stato fondamentale è stabile, quindi quando l'ultimo stato fondamentale è simile al precedente.Gli step di questo algoritmo sono:

  1. L'algoritmo parte quando l'operatore Hamiltoniano è definito dal modello di Isign, ovvero: $H_{N} = \lambda\sum_{i=1}^N \sigma^{(i)}_z + \sum_{i=1}^{N-1} \sigma_x^{(i)} \sigma_x^{(i+1)}$. A questo punto il sistema raddoppia il sistema, introducendo un altro operatore Hamiltoniano, definito da:
    $$H_{2N} = H_{N} \otimes \mathbb{1}_{N} + \mathbb{1}_N \otimes H_N + \underbrace{ \mathbb{1}_{N-1} \otimes \sigma_x^{(N)} \otimes \sigma_x^{(N+1)} \otimes \mathbb{1}_{N-1}}_{H_{2N}^{int}}$$
    dove il sistema raddoppiato è formato da due sistemi speculari vicini e $H_{2N}^{int}$ è l'interazione tra la particella N-esima del primo sistema e la prima particella del secondo sistema. In questo modo, la matrice che rappresenta l'hamiltoniana avrà le dimensioni di $2^{2N} \times 2^{2N}$, mentre la matrice dell'hamiltoniana iniziale $H_{N}$ ha dimensione $2^N \times 2^N$. Pertanto, un sistema di particelle $N=2$ produrrà una matrice iniziale $H_2$ di dimensioni $4\times 4$ e il doppio sistema di particelle $N=4$ produrrà una matrice $H_4$ di dimensioni $16\times 16$.

  2. Quindi, una volta ottenuto il sistema sdoppiato, il programma può calcolare gli autovalori. L'energia dello stato fondamentale è la quantità che valuterò. Mentre le dimensioni del sistema aumentano, lo stato fondamentale diminuisce, quindi, per ottenere il plateau dello stato fondamentale, devo dividere l'autovalore per il numero di particelle di quel ciclo. Più precisamente $E_{g.s.}^k = E_0^k/N$ per ogni ciclo $k$

  3. L'algoritmo termina quando l'energia del ground state rimane costante, quindi la condizione $|E^k_{g.s.} - E^{k-1}_{g.s.}| < \delta$ , dove $\delta$ è una tolleranza arbitraria.

  4. Se la condizione in $3.$ non è rispettata, l'algoritmo procede calcolando il proiettore $P$: si tratta di una matrice di dimensioni $2^{2N} \^mille 2^N$ formata dai primi $2^N$ autovalori. Una volta ottenuto $P$, l'algoritmo calcola l'hamiltoniana proiettata tale che
    $$\widetilde{H}_{N} = P^{\dagger} H_{2N} P = P^\dagger \left( H_{N} \otimes \mathbb{1}_{N} + \mathbb{1}_N \otimes H_N + \mathbb{1}_{N-1} \otimes \sigma_x^{(N)} \otimes \sigma_x^{(N+1)} \otimes \mathbb{1}_{N-1}\right)P.$$
    In questo caso, il sistema viene proiettato in un sottosistema che contiene le informazioni di quello raddoppiato, quindi viene scritto su un'altra base. L'algoritmo riparte dal punto $1.$ dell'algoritmo, dove ora c'è $\widetilde{H}_N$ al posto di $H_N$. L'Hamiltoniana raddoppiata sarà:
    $$ \widetilde{H}_{2N} = \widetilde{H}_N \otimes \mathbb{1}_{N} + \mathbb{1}_N \otimes \widetilde{H}_N + \mathbb{1}_{N-1} \otimes \widetilde{\sigma}_{x}^{(N)} \otimes \widetilde{\sigma}_{x}^{(N+1)} \otimes \mathbb{1}_{N-1},$$
    dove è necessario proiettare la parte sinistra e la parte destra di $H_{2N}^{int}$ per ottenere il termine $\mathbb{1}_{N-1} \otimes \widetilde{\sigma}_{x}^{(N)}$ per la il termine alla sinistra e il termine $\widetilde{\sigma}_{x}^{(N+1)} \otimes \mathbb{1}_{N-1}$ per quello di destra nelle basi corrette. La proiezione viene eseguita secondo:
    $$\displaylines{ \mathbb{1}_{N-1} \otimes \widetilde{\sigma}_{x}^{(N)} = P^\dagger \left(\mathbb{1}_{N} \otimes \mathbb{1}_{N-1} \otimes \sigma_{x}^{(N)}\right)P }$$
    per la parte sinistra, mentre
    $$ \widetilde{\sigma}_{x}^{(N+1)} \otimes \mathbb{1}_{N-1} = P^\dagger \left(\sigma_{x}^{(N+1)}\otimes \mathbb{1}_{N-1} \otimes \mathbb{1}_{N} \right)P$$
    per la parte destra.

Questo algoritmo viene ripetuto fino a quando la condizione in $3.$ è vera, poi l'algoritmo si ferma perché il sistema raggiunge il limite termodinamico.



Infinite DMRG


Il DMRG infinito è un altro algoritmo che mira a raggiungere il limite termodinamico aggiungendo solo $2$ particelle tra i due sistemi speculari. La situazione iniziale è analoga a quella dell'algoritmo RSRG, cioè il sistema è costituito dal Modello di Ising per $N$ particelle. A questo punto, l'algoritmo raddoppia il sistema iniziale e aggiunge due particelle tra i due sistemi iniziali. Una volta costruita l'hamiltoniana totale del sistema, il programma calcola la diagonalizzazione dell'hamiltoniana totale per verificare se lo stato fondamentale è nel limite termodinamico. In caso contrario, è necessario costruire la matrice di densità, partendo dall'autovettore dello stato fondamentale. A questo punto l'algoritmo richiede di calcolare la matrice di densità ridotta per il sottosistema sinistro e per quello destro. Queste due matrici di densità ridotte vengono utilizzate per costruire il proiettore, a partire dalla loro diagonalizzazione, per proiettare il sottosistema sinistro e destro in un altro sottosistema che contiene le informazioni sul sottosistema precedente con $N+1$ particelle. I passi di questo algoritmo sono

  1. Partendo dall'hamiltoniana totale del modello di Ising $H_N$ con $N$ particelle, il primo passo consiste nel costruire l'hamiltoniana totale per $2N+2$ particelle, ossia $H_{2N+2}$. Questo sistema può essere visto come due modelli di Ising, tra i quali ci sono due particelle. Se $H_{N}$ è l'hamiltoniana del modello di Ising, la parte di non interazione è costituita da
    $$ H_{2N+2}^{non-int} H^1_{2N+2} + H^2_{2N+2} + H_{2N+2}^3 + H^4_{2N+2} = H_N \otimes \mathbb{1}_{N+2} + \mathbb{1}_N \otimes \lambda\cdot\sigma_x^{(N+1)} \otimes \mathbb{1}_{N+1} + \mathbb{1}_{N+1} \otimes \lambda\cdot\sigma_z^{(N+2)} \otimes \mathbb{1}_{N} + \mathbb{1}_{N+2} \otimes H_N $$
    Nel primo e nell'ultimo termine, si riconosce l'Hamiltoniana iniziale $H_N$ per i due sistemi separati. Il secondo e il terzo termine sono contributi delle singole particelle in posizione $N+1$ e $N+2$, tra i due modelli di Ising. Questi due termini sono formati dal termine di forza del Modello di Ising perché includono una sola particella per termine. Il termine di interazione è formato da
    $$ H_{2N+2}^{int} = H_{2N+2}^{1-2} + H_{2N+2}^{2-3} + H^{3-4}_{2N+2} = \mathbb{1}_{N-1} \otimes \sigma_x^{(N)} \otimes \sigma_x^{(N+1)} \otimes \mathbb{1}_{N+1} +\mathbb{1}_{N} \otimes \sigma_x^{(N+1)} \otimes \sigma_x^{(N+2)} \otimes \mathbb{1}_{N} +\mathbb{1}_{N+1} \otimes \sigma_x^{(N+2)} \otimes \sigma_x^{(N+3)} \otimes \mathbb{1}_{N-1} $$
    Alla fine, il termine di interazione è l'interazione tra la $N$-esima particella del primo sistema e la prima particella libera, l'interazione tra le due particelle libere e l'interazione tra la seconda particella libera e la prima del secondo sistema. Ora, il programma può costruire l'$H_{2N+2}$ del sistema totale come $H_{2N+2} = H_{2N+2}^{non-int} + H_{2N+2}^{int}$.

  2. Ora c'è la diagonalizzazione dell'hamiltoniana $H_{2N+2}$. Il primo autovalore diviso per il numero di particelle sarà lo stato fondamentale del sistema, ovvero $E^k_{g.s.} = E^k_0/N$, dove $k$ è il ciclo.

  3. Come visto per il punto $3.$ nell'algoritmo RSRG, il programma dimostrerà che l'energia dello stato fondamentale è costante con la condizione $|E^k_{g.s.} - E^{k-1}_{g.s.}|<\delta$, dove $\delta$ è una tolleranza arbitraria.

  4. Se la condizione precedente non è rispettata, il programma prende l'autovettore associato all'energia dello stato fondamentale e costruisce la matrice di densità $\rho = \ket{\psi_{g.s.}} \bra{\psi_{g.s.}}$.

  5. Dalla matrice di densità $\rho$, il programma calcola la matrice di densità ridotta per il sistema sinistro e per il sistema destro. Ad esempio, per il sistema sinistro, la matrice di densità ridotta è data da $$ \rho_L = Tr_R \, \rho $$e la matrice di densità ridotta viene diagonalizzata.

  6. A partire dagli autovettori della matrice di densità ridotta diagonalizzata, il programma costruisce il proiettore $P$. Questo proiettore è una matrice di dimensioni $2^{N+1} \times 2^{N}$ ed è formato dagli autovettori della matrice di densità ridotta memorizzati in ordine decrescente.

  7. Il proiettore $P$ proietta il termine $H^L_{N+1} = H^1_{N+1} + H^2_{N+1} + H^{1-2}_{N+1}$ e il termine $L_{N+1} = \mathbb{1}_{N} \otimes \sigma_x^{(N+1)}$ nel sottosistema di $N$ particelle, ma con le informazioni del sistema formato da $N+1$ particelle. In modo analogo, la parte destra formata dalle $H^R_{N+1} = H^3_{N+1} + H^4_{N+1} + H^{3-4}_{N+1}$ e il termine $R_{N+1} = \sigma_x^{(N+2)} \otimes \mathbb{1}_{N}$ è proiettato. A questo punto l'algoritmo riparte dal punto $1.$ con la nuova Hamiltoniana data da
    $$ \widetilde{H}^L_{N} = P^\dagger \left(H^L_{N+1}\right) P \qquad \quad \widetilde{H}^R_{N} = P^\dagger \left(H^R_{N+1}\right) P $$
    $$ \mathbb{1}_{N-1} \otimes \widetilde{\sigma}_x^{(N)} = P^\dagger L_{N+1} P \qquad \quad \widetilde{\sigma}_x^{(N+1)} \otimes \mathbb{1}_{N-1} = P^\dagger R_{N+1} P $$

L'algoritmo viene ripetuto finché non viene verificata la condizione nel punto $3.$. A questo punto, il limite termodinamico è raggiunto e il programma interrompe il calcolo.

L'implementazione dello script si basa sulla libreria numpy e importa anche diverse funzioni di utilità dal modulo 'renormalization_utils'. Questo modulo fornisce tutti gli strumenti per sviluppare gli algoritmi, come la creazione dell'Hamiltoniana del modello di Isign e la funzione responsabile della proiezione. L'algoritmo di rinormalizzazione viene utilizzato per calcolare l'energia di stato fondamentale del modello Ising in funzione del parametro di forza di accoppiamento $\lambda$. La funzione inizializza innanzitutto diversi parametri:
  • dimension: la dimensione dello spazio di Hilbert di ciascuna particella; il valore predefinito è $2$.

  • N_particles: la dimensione del sistema (numero di particelle), l'impostazione predefinita è $2$.

  • binlambda: il numero di bins per il parametro di forza $\lambda$, l'impostazione predefinita è $200$.

  • precision: la precisione per la valutazione dei risultati, l'impostazione predefinita è $10^{-5}$.

  • p_lambda: il valore massimo del parametro di forza $\lambda$, predefinito è $3$.

La funzione inizializza quindi le matrici di Pauli, utilizzate per definire le parti di interazione e non interazione del modello di Ising. La funzione inizializza poi diversi array per memorizzare il tempo parziale del calcolo, i passi e i livelli a $\lambda=0$ e$\lambda$=max, i passi di convergenza, $\lambda$ e l'energia dello stato fondamentale.

La funzione esegue quindi un ciclo sui bins per il parametro di forza. In ogni iterazione del ciclo, la funzione calcola l'hamiltoniana completa del modello Ising e inizializza i termini di interazione destra e sinistra. La funzione entra quindi in un ciclo while per eseguire l'algoritmo di rinormalizzazione. La funzione controlla quindi la convergenza confrontando l'energia dello stato fondamentale dell'iterazione corrente con l'energia dello stato fondamentale dell'iterazione precedente. Se le energie dello stato fondamentale sono simili, la funzione interrompe l'iterazione e memorizza i risultati finali. Se le energie dello stato fondamentale non sono simili, la funzione aggiorna l'hamiltoniana completa, il termine di interazione sinistro e il termine di interazione destro proiettando l'hamiltoniana raddoppiata sulla base dell'iterazione precedente. Questa proiezione viene effettuata utilizzando le funzioni di utilità del modulo renormalization_utils. La funzione memorizza quindi il nuovo $\lambda$ e l'energia di stato fondamentale e incrementa il contatore dei passi.

Al termine del ciclo while, la funzione memorizza i risultati finali per il bin corrente di $\lambda$ e passa al bin successivo. Una volta iterati tutti i bin, la funzione restituisce i risultati, che consistono nei passi e nei livelli a $\lambda$=0 e $\lambda$=max, nei passi di convergenza, in $\lambda$ e nell'energia dello stato fondamentale. Questi risultati possono essere utilizzati per analizzare il comportamento del modello di Ising sotto rinormalizzazione.