Basically I'm trying to find the eigenvalues for matrix, and it takes about 12 hours. When it finishes, it says it couldn't find all the eigenvectors (actually barely any), and I'm skeptical about the ones it did find. All I can really do is post my code, and I'm hoping that someone might be able to make some suggestions to me. I'm not very experienced with mathematica and maybe the slow run time and the bad results has something to do with me and not mathematica's abilities. Thanks to anyone that replies, I really appreciate it.
cutoff = 500; (* set a cutoff for the infinite series *)
numStates = cutoff + 1; (* set the number of excited states to be printed *)
If[numStates > 10, numStates = 10];
$RecursionLimit = cutoff + 256; (* Increase the recursion limit to allow for the specified cutoff *)
(* set the mass of the constituent quarks *)
m1 := mS; (* just supposed to be a constant *)
m2 := 0;
(* construct the hamiltonian *)
h0[n_,m_] := 4 Min[n,m] * ((-1)^(n+m) * m1^2 + m2^2);
v[0,m_] := 0;
v[n_,0] := 0;
v[n_,1] := (8/n) * ((1 + (-1)^(n + 1)) / 2);
v[n_,m_] := v[n - 1, m - 1] * (m/(m - 1)) + (8 m/(n + m - 1))*((1 + (-1)^(n + m))/2);
h[n_,m_] := h0[n,m] + v[n,m];
(* construct the matrix from the hamiltonian *)
mat = Table[h[n,m], {n, 0, cutoff}, {m, 0, cutoff}] // FullSimplify;
(* find the eigenvalues and eigenvectors, then reverse the order *)
PrintTemporary["Finding the eigenvalues"];
{vals, vecs} = Eigensystem[N[mat]] // FullSimplify;
$RecursionLimit = 256; (* Put the recursion limit back to the default *)
There is a bit more of my code, but this is the point where it is really slowing down. Something I should definitely mention, is that if I set both m1 and m2 to be zero, I don't really have any issues, but setting m1 to a constant makes everything go to hell.
RSolve
gives an explicit form for your recursive definition ofv
, although fixing the undetermined function (via your initial conditions) may be complicated by branch cuts etc. In any case, if you scale this further, this may be something to look at. – Gaal