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
• 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)