Numerical Methods in Quantum Mechanics - Dipartimento di Fisica
Numerical Methods in Quantum Mechanics - Dipartimento di Fisica
Numerical Methods in Quantum Mechanics - Dipartimento di Fisica
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
with α j elements on the <strong>di</strong>agonal, β j on the sub<strong>di</strong>agonal. After n steps:<br />
⎛<br />
⎞<br />
α 1 β 2 0 . . . 0<br />
β 2 α 2 β 3 0 .<br />
H t =<br />
. 0 β 3 α .. 3 0<br />
. (11.9)<br />
⎜ .<br />
⎝ . 0 .. . .. ⎟ βn ⎠<br />
0 . . . 0 β n α n<br />
If n = N h , this transformation becomes exact: H t = H, and constitutes an alternative<br />
tri<strong>di</strong>agonalization algorithm. In practice, the Lanczos recursion tends<br />
to be unstable and may lead to loss of orthogonality between states. If however<br />
we limit to a few steps, we observe that the lowest eigenvalues, and especially<br />
the lowest one, of matrix H t converge very quickly to the correspond<strong>in</strong>g ones<br />
of H. S<strong>in</strong>ce the <strong>di</strong>agonalization of a tri<strong>di</strong>agonal matrix is a very quick and<br />
easy operation, this procedure gives us a convenient numerical framework for<br />
f<strong>in</strong>d<strong>in</strong>g a few low-ly<strong>in</strong>g states of large matrices. If moreover it is possible to<br />
exploit sparseness (or other properties of the matrix) to quickly calculate H|v〉<br />
products without stor<strong>in</strong>g the entire matrix, the advantage over conventional<br />
<strong>di</strong>agonalization becomes immense.<br />
11.4 Code: heisenberg exact<br />
Code heisenberg exact.f90 2 (or heisenberg exact.c 3 ) f<strong>in</strong>ds the ground state<br />
energy of the 1-<strong>di</strong>mensional Heisenberg model, us<strong>in</strong>g Perio<strong>di</strong>c Boundary Con<strong>di</strong>tions:<br />
N∑<br />
H = −J S(i) · S(i + 1), S(N + 1) = S(1). (11.10)<br />
i=1<br />
In the code, energies are <strong>in</strong> units of |J|, sp<strong>in</strong>s are a<strong>di</strong>mensional. If J > 0 a<br />
ferromagnetic ground state, with all sp<strong>in</strong>s oriented along the same <strong>di</strong>rection,<br />
will be favored, while the J < 0 case will favor an antiferromagnetic order<strong>in</strong>g.<br />
The sign of J is set <strong>in</strong> the code (to change it, e<strong>di</strong>t the code and recompile).<br />
For the totally magnetized (ferromagnetic) case, the solution is trivial: there<br />
is just one state with all sp<strong>in</strong>s up (let us call it |F 〉), yield<strong>in</strong>g E 0 = 〈F |H|F 〉 =<br />
−NJ/4. Also the case with N − 1 sp<strong>in</strong>s up can be exactly solved. We have<br />
N states with N − 1 sp<strong>in</strong>s up, that we label as |n〉 = S − (n)|F 〉. Exploit<strong>in</strong>g<br />
translational symmetry, one <strong>in</strong>troduces Bloch-like states<br />
|k〉 = 1 √<br />
N<br />
N ∑<br />
n=1<br />
e ikn |n〉, k = 2πm/N, m = 0, ..., N − 1. (11.11)<br />
It can then be shown that these are the eigenvectors of H with eigenvalues<br />
E(k) = E 0 + J(1 − cos k). Careful readers will recognize sp<strong>in</strong> waves <strong>in</strong> this<br />
solution. A general exact solution (for other similar sp<strong>in</strong> problems as well) can<br />
be found by means of the Bethe Ansatz, a highly nontrivial technique.<br />
2 http://www.fisica.uniud.it/%7Egiannozz/Corsi/MQ/Software/F90/heisenberg exact.f90<br />
3 http://www.fisica.uniud.it/%7Egiannozz/Corsi/MQ/Software/C/heisenberg exact.c<br />
82