PDA

View Full Version : how to establish the hamiltonian matrix as soon as possible?


wdlang
Aug16-09, 05:14 AM
in the bose-hubbard model, we need to enumerate all the possible basis

usually, the basis vectors are taken as the fock states

The problem is that, how to arrange the basis and how to establish the matrix of the hamiltonian as soon as possible

It is apparent the the matrix will be very sparse

then how can we avoid to set the matrix elements that are surely zero ?

i find this problem non-trivial

kanato
Aug16-09, 11:41 AM
Well, you need to find some operator that commutes with your Hamiltonian, and then you know that its eigenvalues are good quantum numbers, so the Hamiltonian will be block diagonal with each block corresponding to a different quantum number of this other operator. For instance, every term in the Bose-Hubbard model contains the same number of creation and annihilation operators, so the total particle number is conserved. This means that the Hamiltonian will only have matrix elements between states with the same particle number.

I'm not an expert on exact diagonalization, but I think that is probably about as far as you can go with it, due to the non-local nature of the hopping and the local nature of the interaction.

wdlang
Aug17-09, 04:01 AM
Well, you need to find some operator that commutes with your Hamiltonian, and then you know that its eigenvalues are good quantum numbers, so the Hamiltonian will be block diagonal with each block corresponding to a different quantum number of this other operator. For instance, every term in the Bose-Hubbard model contains the same number of creation and annihilation operators, so the total particle number is conserved. This means that the Hamiltonian will only have matrix elements between states with the same particle number.

I'm not an expert on exact diagonalization, but I think that is probably about as far as you can go with it, due to the non-local nature of the hopping and the local nature of the interaction.


yes, this is a trick

but i want more

i want such trick that faciliate the coding and programming

especially, i want to know quickly where the matrix elements are nonzero

generally, the matrix can be millions by millions, and i cannot test whether each element is zero or not. That requies too much time, though each testing can be very simple.