JuliaでS=1/2 反強磁性Heisenberg鎖厳密対角化
Qiitaに同内容を載せています。
先だってJuliaでS=1反強磁性Heisenberg鎖のHaldane gapを厳密対角化により計算しています。
S=1/2はHaldane gapの計算から一瞬で書き換えられるので、一瞬で書き換えました。すべてはJupyter notebookに載せてあります。
ダウンロードが嫌な人に向けてコードくらいは置いておきます。
using LinearAlgebra
using Plots
using Arpack
const ⊗ = kron
L = 8
@time eigenvalues = eigs(hamiltonian(L), nev=2^L, which=:SR)[1]
@show eigenvalues
# energy spectrum
plt = plot(yshowaxis=false)
xlabel!("energy")
title!("Spin-1/2 AF Heisenberg chain energy spectrum")
for j in 1:2^L-5
plot!(fill(abs(eigenvalues[j]), 2), [0, 0.5], label="", lc=:black)
end
display(plt)
savefig("spin-halfHeisenberg-spectrum.pdf")
savefig("spin-halfHeisenberg-spectrum.png")