All Data Structures Namespaces Functions Variables Enumerations Enumerator Groups Pages
Matrix product states


 Namespace for classes and algorithms related to Matrix Product States, DMRG and similar methods.

Detailed Description

A Matrix Product State (MPS) represents a 1D quantum state made of N sites, particles or spins. Each site has a tensor associated to it, so that the whole state may be written as a contraction of these tensors

\[ |\psi\rangle = \sum_{i,\alpha,\beta} A^{i_1}_{\alpha_1\alpha_2} A^{i_2}_{\alpha_2\alpha_3}\cdot A^{i_N}_{\alpha_N,\alpha_1} |i_1,i_2,\ldots,i_N\rangle \]

Each of the tensors in this product may be different and have different sizes. The indices $i_k$ denote the physical state of the k-th site. The indices $\alpha_k$ have no direct physical interpretation. However, the larger the these indices can be, the more accurately we can approximate arbitrary states using the previous representation. Finally, in problems with open boundary conditions, the index $\alpha_1$ need only have size 1.

From the point of view of the programmer, a MPS is just a collection of tensors. The user is allowed to put and retrieve the tensor associated to the k-th site using get(k) or set(k,A), where A is the new tensor. Each tensor typically has three indices and is organized as A(a,i,b), where a and b are the $\alpha$ and $\beta$ from the previous formula, and i is the phyisical degree of freedom.

Other operations, such as orthogonalize() or orthonormalize() are related to the Algorithms algorithms for evolution and computation of ground states.

Finally, since the MPS are actually vectors, one can compute the norm(), a scalar product with scprod(), expected values with correlation(), or obtain a vector that represents the same state with to_basis().