31.12.2013 Views

Numerical Methods in Quantum Mechanics - Dipartimento di Fisica

Numerical Methods in Quantum Mechanics - Dipartimento di Fisica

Numerical Methods in Quantum Mechanics - Dipartimento di Fisica

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!