Próbuję diagonalizować niektóre gęste, źle uwarunkowane matryce. W precyzji maszynowej wyniki są niedokładne (zwracając ujemne wartości własne, wektory własne nie mają oczekiwanych symetrii). Przełączyłem się na funkcję Eigensystem [] Mathematiki, aby skorzystać z dowolnej precyzji, ale obliczenia są bardzo wolne. Jestem otwarty na dowolną liczbę rozwiązań. Czy istnieją pakiety / algorytmy, które dobrze nadają się do źle uwarunkowanych problemów? Nie jestem ekspertem w zakresie przygotowywania, więc nie jestem pewien, jak bardzo to może pomóc. W przeciwnym razie wszystko, co mogę wymyślić, to równoległe rozwiązania o dowolnej wartości własnej, ale nie znam niczego poza Mathematica, MATLAB i C ++.
Aby przedstawić tło problemu, matryce są duże, ale nie ogromne (maksymalnie 4096 x 4096 do 32768 x 32768). Są rzeczywiste, symetryczne, a wartości własne są ograniczone od 0 do 1 (wyłączne), przy czym wiele wartości własnych jest bardzo bliskich zeru i żaden nie jest zbliżony do 1. Macierz jest zasadniczo operatorem splotu. Nie potrzebuję przekątnej wszystkich moich matryc, ale im większy mogę przejść, tym lepiej. Mam dostęp do klastrów obliczeniowych z wieloma procesorami i możliwościami przetwarzania rozproszonego.
Dziękuję Ci