Finding The Ground States of Quantum Systems
The Energy of An Electron Hopping Model
In the previous post, I outlined the shape of the Hamiltonian which governs this system. To find this ground state, we use the DMRG, and only restrict interactions to atoms which are sufficiently close. DMRG works by considering the ground state of only a small block of atoms and them iterating to mucn larger sizes. It’s the most precise algorithm to compute ground states in business right now.
To play with a simple toy example, let’s consider a chain of atoms which can either be in a spin-up, or spin-down state. The Hamiltonian in this spin chain contains a term which governs an interaction between two neighbouring atoms. The S is the spin operator, and it has three components since its a vector.
For large systems, diagonalising this Hamiltonian is near impossible. So, we need to find a numerical method to get just the low energy physics that we’re interested in.
What would be an initial approach to finding out this system?
Consider a system of length l, where l is very big. The Hilbert space consists of up or down states that could be in each one of these sites, and the energy is described by a Hamiltonian that is an operator on this Hilbert space. The energy eigenvalues of the Hamiltonian can be found by diagonalising this Hamiltonian, but this is an especially hard thing to do if the Hilbert space is very big. In this post, I'll outline a way to do this by diagonalising smaller blocks.
To remedy this issue, we divide up the problem into blocks. A block has a reduced Hilbert space, so it'll be easier to diagonalise and find energy eigenvalues. In the simplest case, we can combine the two Hamiltonians that we know, and then diagoanlise it. Then, with this large Hamiltoanian, we can truncate it into a reduced basis, to get a Hamiltonian that spans a bigger area but is the same size as the original block.
One of the systems in which the first method might work is a particle hopping between different sites. In this example, if we have L sites that a particle can occupy, then our Hilbert space has dimension L. In this Hilbert space, each state can be represented in the form
$$ | i \rangle $$
In this case, we expect that the Hamiltonian looks band diagonal, and has a form that looks like the following. The probability that a waveform transforms to occupy the next state is governed by the Hamiltonian. To this extent, it is likely that the Hamiltonian should probably have a form that looks like this.
$$ H = \sum _ i 2 | i \rangle \langle i | - | i \rangle \langle i + 1 | - | i \rangle \langle i - 1 |$$
Now, the energy eigenvalues of this system are given by the eigenvalues of the Hamiltonian. The ground state is given by the smallest eigenvalue, and this can be calculated from diagonalising the Hamiltonian. In the basis that I've shown, the Hamiltonian appears band diagonal, and has the matrix entries that look like the following in this basis. We can use a standard diagonalisation algorithm like Gram-Schmidt to diagonalise this matrix. The lowest lying eigenvalue is then the ground state energy.
$$ H = \begin{pmatrix} 2 & -1 & 0 \cdots \\ -1 & 2 & 0 & \cdots \\ \vdots & -1 & 2 & \cdots \\ 0 & 0 & -1 & \ddots & \cdots \\ \end{pmatrix} $$
In the section below, I've put a code snippet on how I found the ground state energies.
from scipy.sparse import diags
from scipy.linalg import eig, block_diag
import seaborn as sns
sns.set()
sns.set_style('whitegrid')
def ground_state_energy(size):
diagonals = [[2] * size, [-1] * size, [-1] * size]
H = diags(diagonals, [0, -1, 1]).toarray()
evals, rvec = eig(H)
return min(evals)
plt.scatter([2 ** i for i in range(8)], [ground_state_energy(2 ** i) for i in range(8)], s = 5)
plt.xlabel('Length of chain')
plt.ylabel('Ground state energy')
Heisenberg Spin Chains
Motivation
There is a cottage industry in physics dedicated to the study of how magnets work. Modern models of magnetism depend on the spin of atoms in a given material, and how they interact. To incorporate our knowledge about physics at the small scale, it is no surprise that these models are quantum mechanical. This means that the system isn't in a fixed state. Rather, the system is described as a linear combination of possible states that occur with some probability after repeated observation.
Quantum mechanics of many body systems are often very difficult to deal with. In order to get a better grasp of the dynamics of these kinds of systems, we can try to reduce the dimensionality. One way to reduce the problem is by considering the quantum mechanics of a one-dimensional chain of atoms that behave like a magnet. This motivates the study of quantum spin chains. A spin chain is a model for atoms lined up in a lattice that interact with each other in some way through their spins.
Let's start with a simple example. Adjacent atoms that are lined up with opposite spins might be given an energy penalty that encourages them to align with the same spin. There are fascinating question in quantum mechanics about the energy and states of these kind of systems. Each 'site' has an assigned set of states it could be in - this is called a Hilbert space. The number of states on each site depends on the spin of the particle. If the particle is an electron, it has an up and a down spin state, and the particle in this site will be some linear combination of these states. When we combine multiple sites in a chain, the Hilbert space is described by the tensor product of these sub-Hilbert spaces. In other words, the total Hilbert space is described as below, where H_i denotes the Hilbert space of a 1 particle site.
$$ H = H _ 1 \otimes H_ 2 \otimes H _ 3 \otimes \cdots \otimes H _ l $$
What do states in this space look like? States are constructed as a superposition of basis states - this is possible because Schrodinger's equation is linear. One possible basis would be the set of products of up and down states in each site. The dimension of a Hilbert space is the number of elements in its basis, and this number is invariant no matter what basis you choose.
$$ B _ { H_ 1 \otimes H _ 2 } = \{ \uparrow \uparrow, \, \downarrow \downarrow, \uparrow \downarrow, \downarrow \uparrow \} $$
States could be entangled. It is completely plausible that the state of a two-site spin chain can be described as the superposition of two up states and two down states, shown below. This is entangled because if we measure the first state, we instantly know that the state of the second atom will have the same spin direction. We could also have another basis that looks like entangled superpositions of these states.
The Heisenberg Spin Chain Model
In this section, I'll go into some specifics about what current spin chain models look like. Now, the energy of any quantum system is determined by the Hamiltonian. A spin chain describes a model of atoms that interact with their adjacent neighbours on a chain, based on the spin that these particles have. Now, I've been confused many times over which operator acts on what, so I'll be explicit here about which operators act on which spaces. Explicitly, it looks like the sum of spin terms, each acting on pairs of adjacent places in the chain. In the example below, I present a simple three atom Hamiltonian.
$$ H = - S ^ x \otimes S ^ x \otimes \mathbb I - S ^ y \otimes S ^ y \otimes \mathbb I - S ^ z \otimes S ^ z \otimes \mathbb I - \mathbb I \otimes S ^ x \otimes S ^ x - \mathbb I \otimes S ^ y \otimes S ^ y - \mathbb I \otimes S ^ z \otimes S ^ z $$
To figure out the energy of this system, we work iteratively by analysing the Hamiltonian of the left most site in the beginning, and then building it up slowly whilst keeping track of the eigenvalues. Slowly, we build up the full Hamiltonian by continuously updating edge states. Now, how do we build up this Hamiltonian iteratively? This will be the subject of the next section.
Combining Hamiltonians
Finding the ground state of a system like this is very difficult because the search space of states is huge. Hence, we resort to trying to come up with useful numerical methods. Numerical methods like the DMRG method require us to figure out the ground state method iteratively by first taking the ground state of a smaller subset of the chain, and then updating it by adding sites one by one.
In this model, suppose that we have the Hamiltonian of the first n sites, and we know what this object looks like. Let S_n be spin operator acting on the nth site - in other words the boundary of these n sites. The rule to update this to the Hamiltonian describing n+1 sites would be as follows. We first need to extend the Hilbert space by taking a tensor product with the identity to leave the first n states unchanged, and then include an interaction of the nth and (n-1)th site.
$$ H_ n \mapsto H_n \otimes I - I \otimes \cdots \otimes I \otimes \mathbf S_ n \otimes \mathbf {S} _ { n + 1 } $$
We also need to update the new boundary of the block by shifting it one site. This is achieved by doing again the tensor product as follows
$$ S_{\text{boundary}} \mapsto I \times S_{\text{boundary}} $$
In a future post, I'll go into more detail about how we can build this model using DMRG, and use that to find the ground state.



