Przestrzeń zerowa prostokątnej gęstej matrycy

16

Biorąc pod uwagę gęstą macierz jaki jest najlepszy sposób na znalezienie podstawy zerowej w granicach tolerancji ?

ARm×n,m>>n;max(m)100000
ϵ

Czy na tej podstawie mogę powiedzieć, że niektóre cols są liniowo zależne od ? Innymi słowy, po obliczeniu podstawy zerowej przestrzeni, jakie kolumny należy usunąć, aby uzyskać macierz niesingularną?ϵA

Referencje są mile widziane.

Alexander
źródło

Odpowiedzi:

12

Standardowe metody określania pustej przestrzeni macierzy to wykorzystanie rozkładu QR lub SVD. Jeśli dokładność jest najważniejsza, preferowane jest SVD; rozkład QR jest szybszy.

Używając SVD, jeśli , to kolumny odpowiadające małym pojedynczym wartościom (tj. Małym ukośnym wpisom ) stanowią podstawę dla przestrzeni zerowej. Odpowiednią tolerancją jest tutaj to, co uważa się za „małą” wartość pojedynczą. Na przykład MATLAB zajmuje małą wartość , gdzie jest związany z dokładnością maszyny (patrz tutaj w dokumentacji MATLAB ).A=UΣVHVΣmax(m,n)εε

Używając rozkładu QR, jeśli , a ranga jest , to ostatnie kolumny tworzą pustą przestrzeń , zakładając, że rozkład QR ujawnia rangę. Aby wyznaczyć , obliczyć liczbę wpisów na głównej przekątnej których wielkość przekracza tolerancję (podobną do tej stosowanej w podejściu SVD).AT=QRArnrQArR

Nie używaj rozkładu LU. Dokładnie w arytmetyce jest to realne podejście, ale w przypadku arytmetyki zmiennoprzecinkowej nagromadzenie błędów numerycznych czyni ją niedokładną.

Wikipedia obejmuje te tematy tutaj .

Geoff Oxberry
źródło
Geoff, mówiąc w kategoriach QR, przypuśćmy, że mam rozkład, w jaki sposób powiązać podstawę zerową i kolumny w oryginalnej macierzy? Innymi słowy, jakie kolumny powinienem usunąć z , aby pozbyć się pustego miejsca? Chodzi tutaj o pracę z samym A , a nie z jego rozkładem. AA
Alexander
Procedury, które obliczają rozkład QR zwykle zawierają opcję zwrócenia wektora permutacji wskazującego sposób permutacji kolumn w celu uzyskania faktoryzacji QR. Ostatnie wpisy tego permutacji wektora odpowiadałaby wierszy A (kolumny z A , T ), które znajdują się w nullspace. Pierwsza r Wpisy tego wektora odpowiadają kolumny A , T , które są liniowo niezależne. Nie jestem pewien, co masz na myśli mówiąc „pozbyć się pustego miejsca”. Czy masz na myśli, że chcesz usunąć kolumny A, aby uzyskać macierz niesingularną? nrAATrATA
Geoff Oxberry,
Tak, mam na myśli to. Popatrzę na permutację, dzięki.
Alexander
To jest inne pytanie. Co byś wtedy zamiast zrobić to obliczyć QR rozkładowi (lub SVD) z . Jeśli obliczasz rozkład QR dla A , możesz obliczyć rangę A, jak w powyższej odpowiedzi (nie trzeba transponować macierzy), a następnie pierwsze wpisy r (gdzie r jest rangą A ) wektora permutacji odpowiadają do niezależnych kolumnach A . Ten sam rodzaj algorytmu dotyczy SVD; jeśli możesz zwrócić wektor permutacji wraz z rozkładem, powinno to dostarczyć niezbędnych informacji. AAArrAA
Geoff Oxberry,
8

Jeśli , jak Twoje pytanie wskazuje, można zaoszczędzić trochę pracy przez pierwsze zbieranie indeks ustawiony I z p 5 n (powiedzmy) losowych wierszy i używając prostopadły faktoryzacji T I : = Q R . (Faktoryzacja QR to ta, w której Q jest kwadratem, a R jest prostokątem o randze r , a pozostałe n - r kolumny R wynoszą zero. Użycie permutacji faktoryzacji QR zwiększy stabilność; permutacja musi być następnie uwzględniona w bardziej szczegółowy przepis.)mnIp5nAI:T=QRQRrnrR

Zazwyczaj będzie to daje znacznie niższe wymiarowej podprzestrzeni łączony przez kolumny , ostatnie n - r kolumny Q . To podprzestrzeń zawiera przestrzeń NULL A . Teraz wybierz inny, losowy zbiór rozłączny indeksu i obliczyć QR faktoryzacji ( A I : N ) T . Pomnóż wynikową pustą przestrzeń po lewej stronie przez N, aby uzyskać lepszą N o prawdopodobnie jeszcze niższym wymiarze. Iteruj, aż wymiar N nie będzie się już zmniejszał. Wtedy prawdopodobnie masz poprawną pustą przestrzeń i możesz to sprawdzić, obliczając A NNnrQA(AI:N)TNNNAN. Jeśli nie jest to jeszcze nieistotne, wykonaj kolejne iteracje z najbardziej znaczącymi wierszami.

Edycja: Gdy masz , możesz znaleźć maksymalny zestaw J liniowo niezależnych kolumn A przez ortogonalne rozkładanie N T = Q R z obrotem. Rzeczywiście, zestaw J indeksów niewybranych jako osie przestawne będzie miał tę właściwość.NJANT=QRJ

Arnold Neumaier
źródło
+1 za skuteczny sposób na określenie pustej przestrzeni dużej macierzy. Będę musiał pamiętać o zapoznaniu się z tą odpowiedzią później, kiedy będę jej potrzebować.
Geoff Oxberry,
Rzeczywiście, to brzmi rozsądnie, jednak moje matryce mieszczą się w 16 GB pamięci RAM, więc pozostałbym przy standardowym matlabie qr.
Alexander
Prof. Neumaier, postanowiłem przetestować ten algorytm, ale nie rozumiem dokładnie, co to jest i co oznacza „obliczanie faktoryzacji QR dla ( A I : N ) T ”? Czy mógłbyś wyjaśnić nieco więcej. N(AI:N)T
Alexander
Trochę zredagowałem swoją odpowiedź. oblicza się według przepisu Geoffa Oxberry. N
Arnold Neumaier
Dziękuję Ci. Zaimplementowałem to. Jednakże, o ile widzę, to algorytm nie pozwala zdefiniować mi zbiór liniowo niezależnych kolumn (ponieważ rozkładają A T I : zamiast A ja : ), ale po prostu pomaga oszacować podstawę nullspace sama? AAI:TAI:
Alexander