Matrix Product State Methods
This section covers the efficient Matrix Product State (MPS) implementations for simulating larger anyon systems using the ITensors.jl library.
Ground State Calculations
MPS methods allow simulation of much larger systems (N ~ 50-100) compared to exact diagonalization:
using FibonacciChain
# Find ground state for N=50 Fibonacci anyon chain
N = 50
model = AnyonModel(FibonacciAnyon(), N; pbc=true)
ψ, E0 = anyon_mps_gst(model; maxdim=100, cutoff=1e-10)Hamiltonian Construction
The MPS Hamiltonian is constructed as a Matrix Product Operator (MPO) with three-body interactions:
# Create sites and Hamiltonian MPO
sites = siteinds("Qubit", N)
H = anyon_ham(model, sites)MPS Measurements
Measurement Operators
MPS-based Protocols
Entanglement Entropy
MPS naturally provides access to entanglement structure:
# Calculate entanglement entropy between first L and last N-L sites
L = N ÷ 2
S = ee_mps(ψ, L)
# Get full entanglement profile
ee_profile = anyon_eelis(model, ψ)State Generation and Evolution
Advantages of MPS Methods
Computational Efficiency
- Memory: Scales as O(χ²N) instead of O(2ᴺ)
- Time: DMRG scales as O(χ³N) for ground states
- Bond dimension: χ ~ 50-200 typically sufficient
Physical Insight
- Direct access to entanglement structure
- Natural handling of gapped phases
- Efficient for 1D systems with area law
Usage Example: Large System Simulation
using FibonacciChain, ITensors
N = 80 # Much larger than exact diagonalization allows
maxdim = 200
cutoff = 1e-12
# Find ground state
model = AnyonModel(FibonacciAnyon(), N; pbc=true)
ψ_gs, E0 = anyon_mps_gst(model,
sweep_times=30,
maxdim=maxdim,
cutoff=cutoff)
# Calculate observables
ee_profile = anyon_eelis(model, ψ_gs)
central_ee = ee_profile[N÷2]
println("Ground state energy: $E0")
println("Central entanglement entropy: $central_ee")
# Apply measurement and evolve
τ = 0.5
measurement_site = N÷2
sites = siteinds("Qubit", N)
ψ_measured, prob = measuremap(model, ψ_gs, sites, measurement_site, τ, false)
println("Measurement probability: $prob")Performance Tips
- Bond dimension: Start with small χ and increase gradually
- Convergence: Monitor energy convergence during DMRG sweeps
- Memory: Use appropriate number precision (Float64 vs ComplexF64)
- Parallelization: ITensors supports threading for large calculations