Básicamente, estoy tratando de encontrar los valores propios para la matriz, y toma alrededor de 12 horas. Cuando termina, dice que no pudo encontrar todos los vectores propios (en realidad apenas ninguno), y soy escéptico sobre los que encontró. Todo lo que puedo hacer es publicar mi código, y espero que alguien pueda hacerme algunas sugerencias. No tengo mucha experiencia con mathematica y tal vez el tiempo de ejecución lenta y los malos resultados tienen algo que ver conmigo y no con las habilidades de mathematica. Gracias a cualquiera que responda, realmente lo aprecio.Problema con los valores propios de cálculo usando mathematica
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 *)
Hay un poco más de mi código, pero este es el punto donde realmente se está desacelerando. Algo que definitivamente debería mencionar, es que si configuro tanto m1 como m2 para que sean cero, realmente no tengo ningún problema, pero establecer m1 en una constante hace que todo se vaya al infierno.
es probablemente la pena señalar que una parte significativa del tiempo se dedica a la construcción de la matriz hacia arriba (incluso con memoization como se sugiere Timo).'RSolve' da una forma explícita para su definición recursiva de' v', aunque la fijación de la función indeterminada (a través de sus condiciones iniciales) puede complicarse por cortes de ramas, etc. En cualquier caso, si escala esto más, esto puede ser algo para mirar. – acl