Biorąc pod uwagę dodatnią określoną macierz symetryczną, jaki jest najszybszy algorytm obliczania macierzy odwrotnej i jej wyznacznika? W przypadku problemów, którymi jestem zainteresowany, wymiar macierzy wynosi 30 lub mniej.
- Wysoka dokładność i szybkość jest naprawdę konieczna. (wykonywane są miliony macierzy)
- Wyznacznik jest konieczny. W każdym obliczeniu wymagany jest tylko jeden element macierzy odwrotnej. Dzięki!
algorithms
matrix
Zamówienia
źródło
źródło
Odpowiedzi:
Jak zauważa WolfgangBangerth, chyba że masz dużą liczbę tych macierzy (miliony, miliardy), wydajność odwrócenia macierzy zwykle nie stanowi problemu.
Jeśli problemem jest prędkość, powinieneś odpowiedzieć na następujące pytania:
Standardową odpowiedzią na Twój problem odwrócenia małej, dodatniej określonej macierzy i obliczenia jej wyznacznika byłby rozkład Choleskiego. GdybyA=LLT , następnie det(A)=∏ni=1l2ii i .det(A−1)=∏ni=1l−2ii
Zakładając, że oznacza przez , rozkład Cholesky'ego można obliczyć na około flopach, co stanowi około połowę kosztu rozkładu LU. Taki algorytm nie byłby jednak uważany za „szybki”. Losowo metoda luA n n n3/3 może być szybszym algorytmem wartym rozważenia, jeśli (1) naprawdę musisz wziąć pod uwagę dużą liczbę macierzy, (2) faktoryzacja jest tak naprawdę ograniczającym krokiem w twojej aplikacji, i (3) każdy błąd związany z użyciem algorytmu losowego to do przyjęcia. Twoje macierze są prawdopodobnie zbyt małe, aby były rzadkie algorytmy, aby były opłacalne, więc jedyne inne możliwości szybszych algorytmów wymagałyby dodatkowej struktury macierzy (np. Pasmowej) lub wykorzystania struktury problemów (np. Być może możesz sprytnie zrestrukturyzować algorytm, aby nie dłużej trzeba obliczać macierz odwrotną lub jej wyznacznik). Wydajne algorytmy wyznaczania są w przybliżeniu kosztem rozwiązania układu liniowego w ramach stałego współczynnika, więc te same argumenty stosowane w układach liniowych odnoszą się również do obliczania wyznaczników.
źródło