Graduate How to numerically diagonalize a Hamiltonian in a subspace?

Click For Summary
To numerically diagonalize the Hamiltonian for a system of spinless fermions, it's essential to focus on the subspace of the Hilbert space that corresponds to a fixed number of particles. The original method provided correct results for the case when the interaction term V is zero, but fails when V is non-zero due to not properly accounting for the number of particles. The Hamiltonian is block diagonal, meaning that it can be simplified by only considering the sector of states with a specific particle number, significantly reducing the computational complexity. For a half-filled system, one should construct the Hamiltonian matrix using only the relevant basis states and diagonalize that smaller matrix. This approach allows for efficient calculations, especially in larger systems.
Luqman Saleem
Messages
17
Reaction score
3
I want to exactly diagonalize the following Hamiltonian for ##10## number of sites and ##5## number of spinless fermions
$$H = -t\sum_i^{L-1} \big[c_i^\dagger c_{i+1} - c_i c_{i+1}^\dagger\big] + V\sum_i^{L-1} n_i n_{i+1}$$
here ##L## is total number of sites, creation (##c^\dagger##) and annihilation (##c##) operators are defined as following
$$
c =
\begin{bmatrix}
0&0\\1&0
\end{bmatrix}
$$
and ##n_i = c_i^\dagger c_i## is number operator.

To exactly diagonalize (for simplicity let's take ##L=4## sites), one can expand ##H## as

$$H = -t\big[
c_1^\dagger \sigma_1^z \otimes c_2\otimes I_3 \otimes I_4 \\
+ I_1 \otimes c_2^\dagger \sigma_2^z \otimes c_3\otimes I_4\\
+ I_1 \otimes I_2 \otimes c_3^\dagger\sigma_3^z \otimes c_4
\big]+h.c.\\
+V\big[
n_1 \otimes n_2 \otimes I_3 \otimes I_4\\
+I_1 \otimes n_2 \otimes n_3 \otimes I_4\\
+I_1 \otimes I_2 \otimes n_3 \otimes n_4
\big]$$
where ##\sigma^z## (Pauli matrix) is just simple matrix multiplication for the sake of anti-commutation relation.

So far so good. (please correct me if I am doing anything wrong)!

**Question:**

I used the above method and numerically calculated the ground state and found that the above method gives the correct results for ##V=0## but when ##V\ne0## the results are wrong.

Eventually, I get to the point that I am not taking care of the number of particles in the system. How do we numerically diagonalize a Hamiltonian matrix in the subsector of Hilbert space with a chosen number of particles?

**Note:**

I want to use this diagonalization in DMRG algorithm (in finding the ground state energy of the Hamiltonian at half-filling)
 
Physics news on Phys.org
Luqman Saleem said:
I want to exactly diagonalize the following Hamiltonian for ##10## number of sites and ##5## number of spinless fermions
$$H = -t\sum_i^{L-1} \big[c_i^\dagger c_{i+1} - c_i c_{i+1}^\dagger\big] + V\sum_i^{L-1} n_i n_{i+1}$$
here ##L## is total number of sites, creation (##c^\dagger##) and annihilation (##c##) operators are defined as following
$$
c =
\begin{bmatrix}
0&0\\1&0
\end{bmatrix}
$$
and ##n_i = c_i^\dagger c_i## is number operator.

To exactly diagonalize (for simplicity let's take ##L=4## sites), one can expand ##H## as

$$H = -t\big[
c_1^\dagger \sigma_1^z \otimes c_2\otimes I_3 \otimes I_4 \\
+ I_1 \otimes c_2^\dagger \sigma_2^z \otimes c_3\otimes I_4\\
+ I_1 \otimes I_2 \otimes c_3^\dagger\sigma_3^z \otimes c_4
\big]+h.c.\\
+V\big[
n_1 \otimes n_2 \otimes I_3 \otimes I_4\\
+I_1 \otimes n_2 \otimes n_3 \otimes I_4\\
+I_1 \otimes I_2 \otimes n_3 \otimes n_4
\big]$$
where ##\sigma^z## (Pauli matrix) is just simple matrix multiplication for the sake of anti-commutation relation.

So far so good. (please correct me if I am doing anything wrong)!

**Question:**

I used the above method and numerically calculated the ground state and found that the above method gives the correct results for ##V=0## but when ##V\ne0## the results are wrong.

Eventually, I get to the point that I am not taking care of the number of particles in the system. How do we numerically diagonalize a Hamiltonian matrix in the subsector of Hilbert space with a chosen number of particles?

**Note:**

I want to use this diagonalization in DMRG algorithm (in finding the ground state energy of the Hamiltonian at half-filling)

How do you know what the right answers are? Are you working from a reference article?
 
atyy said:
How do you know what the right answers are? Are you working from a reference article?

Yes. I am comparing my results with https://arxiv.org/abs/1809.05199.
 
  • Like
Likes atyy
atyy said:
How do you know what the right answers are? Are you working from a reference article?

Actually, the following reason has forced me to think that I am doing it wrong:

In the above formalism (that I have mentioned), the basis set is also tensor multiplied. The degree of freedom per site is 2 i.e. occupied (1) or empty (0). For 2 sites, basis set will be:
$$
\begin{bmatrix}
1\\0
\end{bmatrix}
\otimes
\begin{bmatrix}
1\\0
\end{bmatrix} =
\begin{bmatrix}
11\\10\\01\\00
\end{bmatrix}
$$
and for 4 sites, basis will be:
$$
\begin{bmatrix}
11\\10\\01\\00
\end{bmatrix}
\otimes
\begin{bmatrix}
11\\10\\01\\00
\end{bmatrix}
=
\begin{bmatrix}
1111&1110&1101&1100&1011&1010&1001&1000&0111&0110&0101&0100&0011&0010&0001&0000
\end{bmatrix}
$$

As, it can be seen that if we construct full Hamiltonian (for 4 sites) using the above method, we will be dealing with total 16 bases. And the number of particles is not conserved i.e. in the first basis (1111) all sites are filled while the last basis (0000) is fully empty. I want to calculate groundstate only for the half-filled system.
 
  • Like
Likes atyy
Luqman Saleem said:
Actually, the following reason has forced me to think that I am doing it wrong:

In the above formalism (that I have mentioned), the basis set is also tensor multiplied. The degree of freedom per site is 2 i.e. occupied (1) or empty (0). For 2 sites, basis set will be:

...

and for 4 sites, basis will be:

...

As, it can be seen that if we construct full Hamiltonian (for 4 sites) using the above method, we will be dealing with total 16 bases. And the number of particles is not conserved i.e. in the first basis (1111) all sites are filled while the last basis (0000) is fully empty. I want to calculate groundstate only for the half-filled system.

I think that your approach in this post is the right idea. But I don't know why you say that the number of particles is not conserved - your original Hamiltonian does conserve particle number ##N = \sum_i c^{\dagger}_i c_i##. What this means is that your Hamiltonian is block diagonal, where the blocks are the spaces of constant values of ##N##.

What this means is that it suffices to work in a subspace of these bases you've mentioned. For the two-site case, if you write the Hamiltonian matrix in the basis
$$
\begin{bmatrix}
11\\10\\01\\00
\end{bmatrix}
$$
Then the Hamiltonian must take the form
$$
H =
\begin{bmatrix}
h_{11} & 0 & 0 & 0 \\
0 & h_{22} & h_{23} & 0 \\
0 & h_{23}^{\ast} & h_{33} & 0 \\
0 & 0 & 0 & h_{44}
\end{bmatrix}
$$
Now if you are only interested in the half-filled (##N=1##) subspace, you only need to diagonalize the 2x2 block in the middle of this thing. (Be sure you understand why this is the case!)

Extrapolating this idea to larger system sizes, you just need to find the matrix elements of ##H## in the ##N=L/2## sector and diagonalize that. Just ignore the other states. In your four-site example, you only need to diagonalize the 6x6 matrix ##H_{ij} = v^{\dagger}Hv## where
$$
v = \begin{bmatrix}
1100 \\
1010 \\
1001 \\
0110 \\
0101 \\
0011
\end{bmatrix}
$$
This makes the process much faster for small system sizes, though unfortunately the size of the ##N=L/2## subspace still grows exponentially in ##L## as ##L## gets large. If my quick calculation is correct, the case of 5 particles on 10 sites reduces to diagonalizing a 252x252 matrix (much easier than attempting the full 1024x1024 matrix for arbitrary number of particles).
 
  • Like
Likes aaroman
Time reversal invariant Hamiltonians must satisfy ##[H,\Theta]=0## where ##\Theta## is time reversal operator. However, in some texts (for example see Many-body Quantum Theory in Condensed Matter Physics an introduction, HENRIK BRUUS and KARSTEN FLENSBERG, Corrected version: 14 January 2016, section 7.1.4) the time reversal invariant condition is introduced as ##H=H^*##. How these two conditions are identical?

Similar threads

  • · Replies 0 ·
Replies
0
Views
1K
Replies
3
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
Replies
1
Views
2K
  • · Replies 6 ·
Replies
6
Views
4K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 4 ·
Replies
4
Views
4K