J'ai utilisé mpmath (python) et Mathematica, qui effectuent une diagonalisation avec un calcul de précision arbitraire, pour mesurer le temps nécessaire à la diagonalisation, je vais donc le laisser comme un mémorandum.
La matrice évaluée est un hamiltonien unidimensionnel
utilisation.
Mathematica est environ 10 fois plus rapide.
En multidimensionnel, une matrice d'environ 10 $ ^ 4 \ times10 ^ 4 $ est évaluée, donc cela prend 40 jours pour Mathematica. Je voudrais utiliser mpack, qui est une extension multiple de lapack.
J'ai installé mpack et l'ai touché pendant quelques heures. Puisque la vitesse a été évaluée, je l'enregistrerai comme note supplémentaire.
La matrice diagonale est une colonne d'exécution symétrique $ a_ {i, i} = i $, $ a_ {i + 1, j} = i $, $ a_ {i, j + 1} = i $ Sinon, utilisez une matrice symétrique réelle avec 0 élément.
Comparez les routines Mathematica et mpack Rsyev. En conséquence, mpack semble être environ 10 fois plus rapide que Mathematica.
Dans le cas d'Elmeat, je ne l'ai pas encore évalué, mais s'il est environ 10 fois plus rapide que Mathematica, on calculera que la diagonalisation de 10 $ 4 \ fois 10 ^ 4 $ se terminera dans 4 jours. C'est très prometteur.
Mais d'abord, vous devez être capable d'utiliser mpack.
Recommended Posts