Transverse Ising Model

Posted on Sat 25 March 2017 in Physics

In [1]:
%pylab
%matplotlib inline
%config InlineBackend.figure_format = 'svg'
Using matplotlib backend: agg
Populating the interactive namespace from numpy and matplotlib
In [2]:
import scipy.sparse as sp
from scipy.sparse.linalg import eigsh
from functools import reduce
In [3]:
s0=array([[1,0], [0,1]], dtype=int8)
sx=array([[0,1], [1,0]], dtype=int8)
sy=array([[0, -1j],[1j, 0]], dtype=complex)
sy1=array([[0, 0],[0, 0]], dtype=int8)#ersatz
sz=array([[1,0], [0,-1]], dtype=int8)
zz=kron(sz, sz)
sigma=[s0,sx,sy1,sz]
In [4]:
def sparsity(A):
    B=A.todense()
    return sum(B!=0)/B.size
def Hamilton_trans(n, g=0, J=1):
    assert(n>2)
    A=(-J)*sum(
        reduce(sp.kron, 
               (sigma[3*(k==i or (k+1)%n==i)]
                for i in range(n)))
        for k in range(n)
    ).astype(float64)
    A-=g*sum(
        reduce(sp.kron, 
               (sigma[k==i]
                for i in range(n)))
        for k in range(n)
    )
    return A

Sparsity of Hamiltonian

In [5]:
x=arange(3, 11)
s=array([sparsity(Hamilton_trans(i, 0.1)) for i in x])
plot(x, log(s), '-o')
title('Sparsity of the Hamiltonian')
xlabel('L')
ylabel('Sparsity')
Out[5]:
<matplotlib.text.Text at 0x7f404f846e10>
In [6]:
A=Hamilton_trans(10, 0.4)
eigsh(A, which='SA')
#Lanczos
Out[6]:
(array([-10.40418892, -10.40415281,  -7.877041  ,  -7.77197069,
         -7.77197069,  -7.53978857]),
 array([[ -6.70974812e-01,  -6.70996717e-01,   6.62772967e-02,
          -4.97781669e-16,   4.79657563e-15,  -1.13294487e-01],
        [ -6.78001453e-02,  -6.77963018e-02,  -3.51759959e-02,
          -5.05788739e-02,   3.12943222e-02,   6.96820978e-02],
        [ -6.78001453e-02,  -6.77963018e-02,  -3.51759959e-02,
          -2.25248275e-02,   5.50471547e-02,   6.96820978e-02],
        ..., 
        [ -6.78001453e-02,   6.77963019e-02,  -3.51759959e-02,
           2.25248275e-02,  -5.50471547e-02,  -6.96820978e-02],
        [ -6.78001453e-02,   6.77963019e-02,  -3.51759959e-02,
           5.05788739e-02,  -3.12943222e-02,  -6.96820978e-02],
        [ -6.70974811e-01,   6.70996717e-01,   6.62772967e-02,
          -3.99408427e-16,   5.05665680e-15,   1.13294487e-01]]))
In [7]:
?eigsh
  • Spontaneous symmetry breaking
  • Read Transverse ising model
  • Tell Symmetry Broken Example except time trans
  • MPO, e.g. in paper
  • What MPO gives H with sigma_y*sigma_y
  • run this

Spontaneous symmetry breaking

We say that the symmetry is spontaneously broken by the choice of ground state of the theory, if the ground state does not preserve the symmetry of Hamiltonian. Like initial condition determines the direction of angular momentum.

  • Breaking Translational: $V=r^2$
  • Breaking Rotational: $V=ax^2+by^2+cz^2$
  • Breaking Reflection: $V=kx$
  • Breaking Time reversal: Friction
  • Breaking Time translation: $H=mv^2/2+kt^2x^2/2$

$A=Z+Y, A_aA_b=Z_aZ_b+Y_aY_b+\{Z_aY_b+Z_?\}$

In [8]:
real(1j)
Out[8]:
array(0.0)
In [13]:
A2=(kron(sy,sy)+kron(sz,sz)).astype(int8)
A2
/usr/lib/python3.6/site-packages/ipykernel_launcher.py:1: ComplexWarning: Casting complex values to real discards the imaginary part
  """Entry point for launching an IPython kernel.
Out[13]:
array([[ 1,  0,  0, -1],
       [ 0, -1,  1,  0],
       [ 0,  1, -1,  0],
       [-1,  0,  0,  1]], dtype=int8)
In [14]:
C=(svd(A2)[-1][2:]*sqrt(2)).astype(int8)
C
Out[14]:
array([[ 1,  0,  0,  1],
       [ 0, -1, -1,  0]], dtype=int8)