Pracuję nad biblioteką macierzy zawierającą tylko nagłówki, aby zapewnić pewien rozsądny stopień możliwości algebry liniowej w tak prostym pakiecie, jak to możliwe, i próbuję zbadać, jaki jest obecny stan techniki: obliczanie SVD złożona macierz.
Robię dwufazowy rozkład, dwukieragonalizację, a następnie obliczanie wartości osobliwych. W tej chwili używam metody gospodarstwa domowego do bidiagonalizacji (uważam, że LAPACK również tego używa) i myślę, że jest to tak dobre, jak to możliwe obecnie (chyba że ktoś wie o algorytmie dla tego..).
Obliczenie liczby pojedynczej jest następne na mojej liście i jestem nieco poza pętlą, jakie są wspólne algorytmy do tego celu. Przeczytałem tutaj, że badania zmierzają w kierunku metody iteracji odwrotnej, która gwarantuje ortogonalność ze złożonością . Chciałbym usłyszeć o tym lub innych postępach.
Odpowiedzi:
„Randomizowane algorytmy” stały się ostatnio dość popularne w przypadku częściowych dysków DVD. Implementację zawierającą tylko nagłówek można pobrać tutaj: http://code.google.com/p/redsvd/
Przegląd aktualnych metod można znaleźć tutaj: http://arxiv.org/abs/0909.4061
W przypadku pełnych płyt DVD nie jestem pewien, czy możesz zrobić lepiej niż Domownik.
źródło
(Chciałem tylko zrobić kilka komentarzy, ponieważ nie mam czasu na opisywanie szczegółów, ale stało się dość duże jak na pole komentarza).
Wierzę, że byłby to algorytm MRRR (wiele stosunkowo solidnych reprezentacji) Dhillona i Parletta. Jest to zakorzenione w poprzedniej pracy Fernando, która z kolei została zainspirowana problemem postawionym przez Jima Wilkinsona w jego monumentalnej książce na temat problemów z wartością własną. Część „iteracji odwrotnej” do uzyskiwania pojedynczych wektorów jest zakorzeniona w koncepcji „skręconych faktoryzacji” Fernando , które wykorzystują macierze faktoringu do i dekompozycje.U D U ⊤LDL⊤ UDU⊤
Z drugiej strony część algorytmu „wartość osobliwa” pochodzi z algorytmu (przesuniętej) różniczkowej różnicy ilorazu (dqd (s)) , który jest zwieńczeniem wcześniejszych prac Fernando, Parletta , Demmela i Kahana (z inspiracją od Heinza Rutishausera).
Jak zapewne wiesz, metody SVD zwykle rozpoczynają się od rozkładu dwukierunkowego najpierw, zanim zostaną uzyskane wartości osobliwe z macierzy dwukierunkowej. Niestety, nie jestem zbytnio poinformowany o aktualnej najlepszej metodzie dwukierunkowego rozkładu frontonu; ostatnio sprawdziłem, zwykłą metodą jest rozpoczęcie od rozkładu QR z obrotową kolumną, a następnie zastosowanie przekształceń ortogonalnych odpowiednio do współczynnika trójkątnego, aby w końcu uzyskać rozkład dwukierunkowy.
Rozumiem, że byłem skąpy w szczegółach; Spróbuję uściślić tę odpowiedź, gdy będę mieć dostęp do mojej biblioteki ...
źródło
Istnieją biblioteki PROPACK i nu-TRLan.
http://soi.stanford.edu/~rmunk/PROPACK/
http://crd-legacy.lbl.gov/~kewu/trlan/
źródło