До сих пор я использовал numpy.linalg.eigval для вычисления собственных значений квадратичных матриц не менее чем с 1000 строк / столбцов и, в большинстве случаев, примерно пятая часть его записей ненулевые (я не знаю, следует ли это считать разреженная матрица). Я нашел еще одну тему, указывающую, что scipy может возможно, сделай лучше.
Однако, поскольку мне нужно вычислить собственные значения для сотен тысяч больших матриц увеличивающегося размера (возможно, до 20000 строк / столбцов и да, мне нужны ВСЕ их собственные значения), это всегда займет очень много времени. Если я смогу ускорить процесс, даже самый крошечный, это, скорее всего, того стоит.
Итак, мой вопрос: есть ли более быстрый способ вычислить собственные значения, если не ограничиваться питоном?
numpy
- это дружественная к Python оболочка для функций, написанных на таких языках, как C, Fortran, ассемблер. Из документации я вижу, чтоnumpy.linalg.eigvals
я оболочка для функций в библиотеке LINPACK. Это не означает, что вы не можете найти более быстрые решатели, но вам, возможно, придется выйти за рамки numpy, scipy и LAPACK, чтобы найти их. - person High Performance Mark   schedule 04.07.2013