Modello di Ising

Il modello di Ising è un modello fisico di sistema magnetico costituito da un reticolo discreto $1D$ di spin interagenti che può essere utilizzato per studiare il ferromagnetismo. In questo modello, ci sono $N$ particelle quantistiche con spin $1/2$, dove ogni spin può essere orientato "verso l'alto" o "verso il basso", rappresentato dai valori $+1$ e $-1$.

È stato utilizzato per studiare le transizioni di fase nei sistemi magnetici, dove il sistema passa da uno stato ordinato a bassa temperatura a uno stato disordinato ad alta temperatura. Il modello di Ising è stato utilizzato anche per descrivere un'ampia gamma di fenomeni, tra cui l'ordine nei sistemi biologici, l'aggregazione delle proteine, la formazione di reti neurali e anche la teoria dei giochi. L'energia del sistema dipende dalle interazioni tra gli spin e dalle energie di ciascuna particella, in modo tale che l'hamiltoniana sia: $$ \widehat{H} = \lambda \sum_{j=1}^N \sigma^{(j)}_z + \sum_{j=1}^{N-1} \sigma^{(j)}_x \sigma^{(j+1)}_x, $$ dove $\sigma_x$ e $\sigma_z$ sono due delle tre matrici di Pauli date da: $$ \sigma_x = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} \, \, \, \, \, \sigma_z = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix} $$ Gli autovalori del modello di Ising sono distribuiti in modo diverso a seconda del valore del parametro $\lambda$ che rappresenta la forza dell'interazione tra gli spin.

In particolare, per valori di $\lambda$ prossimi a $0$, gli autovalori diventano degenerati, cioè si raggruppano in un numero limitato di valori, mentre per valori di $\lambda$ maggiori di $0$, gli autovalori iniziano a distinguersi.

L'energia del sistema è data dalla somma delle energie di interazione tra gli spin. In particolare, ogni coppia di spin vicini contribuisce all'energia totale del sistema in base alla loro interazione, che può essere ferromagnetica o antiferromagnetica. Nel primo caso, gli spin tendono ad allinearsi parallelamente, mentre nel secondo caso tendono ad allinearsi antiparallelamente.

Il modello di Ising può essere risolto numericamente utilizzando l'hamiltoniana. La soluzione dell'hamiltoniana permette di calcolare le proprietà del sistema, come la magnetizzazione e l'energia libera. Dato un tale operatore hamiltoniano, la $j$-esima particella contribuisce a quell'operatore come:

$$\widehat{H}_j = \lambda \left( \mathbb{I}_{2\times 2}^{(1)} \otimes \mathbb{I}_{2 \times 2}^{(2)} \otimes \ldots \otimes \sigma_z^{(j)} \otimes \ldots \otimes \mathbb{I}_{2\times 2}^{(N)}\right) \\ + \left( \mathbb{I}_{2 \times 2}^{(1)} \otimes \mathbb{I}_{2 \times 2}^{(2)} \otimes \ldots \otimes \sigma_x^{(j)}\otimes \ldots \otimes \mathbb{I}_{2 \times 2}^{(N)}\right). $$
Questo script risolve numericamente il modello di Ising calcolando l'hamiltoniana del sistema. L'hamiltoniana è rappresentata come una matrice $2^N \times 2^N$, dove $N$ è il numero di particelle, ed è calcolata separatamente per le interazioni tra gli spin lungo l'asse $z$ e lungo l'asse $x$. Successivamente, gli autovalori e gli autovettori della matrice hamiltoniana vengono calcolati utilizzando la funzione 'numpy.linalg.eigh'. Il codice include anche una barra di avanzamento per monitorare il progresso del calcolo e una stima del tempo di completamento previsto.

La classe 'Matrix' definisce una matrice quadratainizializzata a $0$ di dimensione 'dim'.
La funzione 'pauli' crea due matrici di Pauli, 'sigma_x' e 'sigma_z', di dimensione $2\times 2$.
La funzione 'z_hamiltonian' crea la parte $z$ dell'Hamiltoniana per il modello di Ising. L'Hamiltoniana $z$ è una matrice di dimensione $2^N \times 2^N$. Viene utilizzata la matrice di Pauli $z$ sigma_z per creare l'Hamiltoniana $z$.
La funzione 'x_hamiltonian' crea la parte $x$ dell'Hamiltoniana rappresentata da una matrice di dimensione $2^N \times 2N$. Viene utilizzata la matrice di Pauli $x$ sigma_x per creare l'Hamiltoniano $x$.
La funzione 'expected_time' calcola il tempo di esecuzione atteso per completare un certo numero di iterazioni in base al tempo medio delle iterazioni precedenti.
La funzione 'progress_bar' stampa una barra di avanzamento con una stima del tempo rimanente per completare l'esecuzione dell'algoritmo.

Modello di Ising

Informazioni

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

Il modello di Ising è un modello fisico di sistema magnetico costituito da un reticolo discreto $1D$ di spin interagenti che può essere utilizzato per studiare il ferromagnetismo. In questo modello, ci sono $N$ particelle quantistiche con spin $1/2$, dove ogni spin può essere orientato "verso l'alto" o "verso il basso", rappresentato dai valori $+1$ e $-1$.

È stato utilizzato per studiare le transizioni di fase nei sistemi magnetici, dove il sistema passa da uno stato ordinato a bassa temperatura a uno stato disordinato ad alta temperatura. Il modello di Ising è stato utilizzato anche per descrivere un'ampia gamma di fenomeni, tra cui l'ordine nei sistemi biologici, l'aggregazione delle proteine, la formazione di reti neurali e anche la teoria dei giochi. L'energia del sistema dipende dalle interazioni tra gli spin e dalle energie di ciascuna particella, in modo tale che l'hamiltoniana sia: $$ \widehat{H} = \lambda \sum_{j=1}^N \sigma^{(j)}_z + \sum_{j=1}^{N-1} \sigma^{(j)}_x \sigma^{(j+1)}_x, $$ dove $\sigma_x$ e $\sigma_z$ sono due delle tre matrici di Pauli date da: $$ \sigma_x = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} \, \, \, \, \, \sigma_z = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix} $$ Gli autovalori del modello di Ising sono distribuiti in modo diverso a seconda del valore del parametro $\lambda$ che rappresenta la forza dell'interazione tra gli spin.

In particolare, per valori di $\lambda$ prossimi a $0$, gli autovalori diventano degenerati, cioè si raggruppano in un numero limitato di valori, mentre per valori di $\lambda$ maggiori di $0$, gli autovalori iniziano a distinguersi.

L'energia del sistema è data dalla somma delle energie di interazione tra gli spin. In particolare, ogni coppia di spin vicini contribuisce all'energia totale del sistema in base alla loro interazione, che può essere ferromagnetica o antiferromagnetica. Nel primo caso, gli spin tendono ad allinearsi parallelamente, mentre nel secondo caso tendono ad allinearsi antiparallelamente.

Il modello di Ising può essere risolto numericamente utilizzando l'hamiltoniana. La soluzione dell'hamiltoniana permette di calcolare le proprietà del sistema, come la magnetizzazione e l'energia libera. Dato un tale operatore hamiltoniano, la $j$-esima particella contribuisce a quell'operatore come:

$$\widehat{H}_j = \lambda \left( \mathbb{I}_{2\times 2}^{(1)} \otimes \mathbb{I}_{2 \times 2}^{(2)} \otimes \ldots \otimes \sigma_z^{(j)} \otimes \ldots \otimes \mathbb{I}_{2\times 2}^{(N)}\right) \\ + \left( \mathbb{I}_{2 \times 2}^{(1)} \otimes \mathbb{I}_{2 \times 2}^{(2)} \otimes \ldots \otimes \sigma_x^{(j)}\otimes \ldots \otimes \mathbb{I}_{2 \times 2}^{(N)}\right). $$
Questo script risolve numericamente il modello di Ising calcolando l'hamiltoniana del sistema. L'hamiltoniana è rappresentata come una matrice $2^N \times 2^N$, dove $N$ è il numero di particelle, ed è calcolata separatamente per le interazioni tra gli spin lungo l'asse $z$ e lungo l'asse $x$. Successivamente, gli autovalori e gli autovettori della matrice hamiltoniana vengono calcolati utilizzando la funzione 'numpy.linalg.eigh'. Il codice include anche una barra di avanzamento per monitorare il progresso del calcolo e una stima del tempo di completamento previsto.

La classe 'Matrix' definisce una matrice quadratainizializzata a $0$ di dimensione 'dim'.
La funzione 'pauli' crea due matrici di Pauli, 'sigma_x' e 'sigma_z', di dimensione $2\times 2$.
La funzione 'z_hamiltonian' crea la parte $z$ dell'Hamiltoniana per il modello di Ising. L'Hamiltoniana $z$ è una matrice di dimensione $2^N \times 2^N$. Viene utilizzata la matrice di Pauli $z$ sigma_z per creare l'Hamiltoniana $z$.
La funzione 'x_hamiltonian' crea la parte $x$ dell'Hamiltoniana rappresentata da una matrice di dimensione $2^N \times 2N$. Viene utilizzata la matrice di Pauli $x$ sigma_x per creare l'Hamiltoniano $x$.
La funzione 'expected_time' calcola il tempo di esecuzione atteso per completare un certo numero di iterazioni in base al tempo medio delle iterazioni precedenti.
La funzione 'progress_bar' stampa una barra di avanzamento con una stima del tempo rimanente per completare l'esecuzione dell'algoritmo.