# How much space to simulate a small Hilbert space?

I'm thinking about trying to do a numerical simulation of some very simple QM problems.

How much space do I need? To simulate the Hilbert space?

I'd like to eventually simulate the absorption or emission of a photon by a hydrogen atom. So at least three particles (two fermions, one boson). Let's generalize that to three particles with arbitrary spin, so I can look at three photons or three electrons if I want to.

In order to do a numerical simulation I need to replace the continuous spacetime with a rectangular grid or lattice. I'd like to eventually get more precision, but let's start with just ten cells per dimension to begin with. So including time, I need ten thousand cells in a four dimensional lattice. `

How many cells do I need to simulate the Hilbert space? and what goes in each cell?

If I put restrictions on the shape of the wavefunction, does that help?

-

## 3 Answers

You need a basis large enough to track the Schroedinger equation reasonably well over the time of interest, or to represent the ground state if you are interested in that. This depends a lot both on the initial state and the Hamiltonian.

Much of numerical quantum mechanics is concerned with finding useful basis function sets that do not grow too rapidly with the number of dof treated. This means they are usually applicable only for fairly specific classes of problems.

You might want to have a look at GAMESS http://www.msg.ameslab.gov/gamess/ which procesds with Gaussian states for electronic ground state calculations. But to make it feasible for many electrons, they need to do lots of extra trickery.

In a much simpler but practically infeasible approach, you discretize each component of $R^{3N}$ with $p%$ points (and $p=10$ will still give very poor accuracy) you are left with a discrete problem in $(2p^3)^N$ dimensions. GAMESS tries instead to have a complexity growing less than $O(N^2)$.

-

The full system has configuration space $\mathbb{R}^{3n}$ where $n$ is the number of particles. Note that because photons of different frequencies are distinct, you will need $n$ to depend on how finely you discretise space. You can remove one $\mathbb{R}^3$ for centre of mass motion, and perhaps another 3 dimensions for orientation, but that still leaves a very high dimensional space in which the wavefunction of the system will live.

A better way to proceed is to write down the Hamiltonian of the system in a non-interacting frame, e.g. the hydrogen atom can be solved exactly and so can the non-interacting photon. Truncating in this basis should give you something you can actually implement as an interaction operator.

-

Thanks for your answer. I am aware that my approach is not very practical and consumes a lot of space.  I am doing it to try to follow "What happens where" so to speak – Jim Graber Nov 3 '12 at 17:44
First of all, I think I want not $L^2(X)$, but some finite, numerical approximation of $L^2(X)$. Second, I think I need something like $L^2(\mathbb{R}^{3N}) \otimes \mathbb{C}^{2^N}$ to include spin.  (I am still confused as to whether N should be an exponent or a multiplier in each of the two places where it occurs) – Jim Graber Nov 3 '12 at 17:45
Then I need to convert this finite approximation to a specific number of cells (and perhaps multiply yet again by a time variable).   Finally, I will need to figure out what to store in each cell?  One compex number? Two? More?  Something else? – Jim Graber Nov 3 '12 at 17:46
@JimGraber: Your exponents are correct. – Arnold Neumaier Nov 4 '12 at 15:59
@JimGraber: In each cell of phase space, you'd have to specify as many numbers as the wave function has components, which means $2^N$ complex numbers. – Arnold Neumaier Nov 5 '12 at 9:47

It is of a matter of detail. your algorithm should be independent of the amount of available memory and only depend on the lattice size.

-
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 13, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 5, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "github"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "english_confidence": 0.9430772066116333, "perplexity_flag": "head"}