Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I need to compute Slater determinants. I'm wondering if I would benefit from assigning each of my functions to a variable prior to computation. I'm working with Slater determinants, but my question goes beyond them and applies to the computation of any determinant.

Say I have functions $f_n[x]$ which are sums of complex exponentials. If I want to compute the determinant of an $N\times N$ matrix, should I use the expanded form of $f_n[x]$ or variables ($a_1,a_2,b_1,b_2$, etc.), or else? Does Mathematica benefit from prior "simplification" of the matrix or not?

At the moment, I'm not concerned with speed because the systems I work with contain few electrons, but that will change.

share|improve this question
You should be more descriptive in your question... give an example for the functions and the matrix constructed from your wavefunctions. It is not clear what $f_n$ refers to, what $a_i$ and $b_i$ are... –  rm -rf Jun 26 '12 at 16:33
I've been RM'ited. @R.M Well, my functions can be any functions, really. What I'm wondering is if Mathematica's algorithm for computing the determinant benefits from working with variables (a1,b2) rather than the whole functions. –  CHM Jun 26 '12 at 16:34
lol! "RMiting" is a thing now? :P –  rm -rf Jun 26 '12 at 16:37
@R.M I was referring to this ;) But concerning my question, I expressly wanted to make it general, and not specific to Slater determinants. The question has to do with how MMA computes the determinant. –  CHM Jun 26 '12 at 16:41
When dealing with many-particle systems, it's useful to know what observables you're after. E.g., are you planning to calculate expectation values of single-particle operators in the end? For most applications you will end up not needing the whole Slater determinant. Instead it is then computationally much more efficient to work with creation and annihilation operators which are defined as the act of adding and removing single-particle orbitals from the Slater determinant. That way you end up cleverly using the orthogonality of the orbitals. –  Jens Jun 26 '12 at 17:16
show 5 more comments

1 Answer

It seems that what you are actually looking for is efficient clean computations with Slater determinants.

1) Michael Trott who wrote The Mathematica Guide Books has produced numerous essential examples of efficient code. So seeing how this Demonstration works may get you started.

2) A recent package addresses this type of calculation: web site // article // source code

share|improve this answer
I'm having problems installing FermiFab on the mac. The author suggested a fix, which helped get past a compilation error, but now I'm having problems with a library not being found. I'll read that NB now, thanks! –  CHM Jun 27 '12 at 5:31
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.