Estoy tratando de diagonalizar algunas matrices densas y mal acondicionadas. En la precisión de la máquina, los resultados son inexactos (devuelve valores propios negativos, los vectores propios no tienen las simetrías esperadas). Cambié a la función Eigensystem [] de Mathematica para aprovechar la precisión arbitraria, pero los cálculos son extremadamente lentos. Estoy abierto a cualquier cantidad de soluciones. ¿Existen paquetes / algoritmos que se adapten bien a problemas mal condicionados? No soy un experto en preacondicionamiento, así que no estoy seguro de cuánto podría ayudar esto. De lo contrario, todo lo que puedo pensar son solucionadores de valores propios de precisión arbitraria paralelos, pero no estoy familiarizado con nada más allá de Mathematica, MATLAB y C ++.
Para dar algunos antecedentes sobre el problema, las matrices son grandes, pero no enormes (4096x4096 a 32768x32768 como máximo). Son reales, simétricos, y los valores propios están delimitados entre 0 y 1 (exclusivo), con muchos valores propios muy cerca de 0 y ninguno cerca de 1. La matriz es esencialmente un operador de convolución. No necesito diagonalizar todas mis matrices, pero cuanto más grande sea, mejor. Tengo acceso a clústeres informáticos con muchos procesadores y capacidades informáticas distribuidas.
Gracias