notatki
Transkrypt
notatki
Algorytmy algebry numerycznej. Dekompozycje LU, Cholesky’ego i SVD Maciej Drwal [email protected] 1 Wprowadzenie Naszym celem jest sformułowanie efektywnych algorytmicznych metod rozwiązywania układu n równań liniowych o n niewiadomych: Ax = b (1) gdzie A = [aij ], i, j = 1, 2, . . . , n, aij ∈ R. Przypomnijmy, że układ (1) ma co najmniej jedno rozwiązanie, wtedy i tylko wtedy, gdy rank(A) = rank([A|b]). W przypadku n równań i n niewiadomych oznacza to, że warunkiem istnienia rozwiązania jest det A 6= 0. Jeśli niewiadomych jest mniej niż (niezależnych) równań, wówczas układ nie ma rozwiązania. Jeśli niewiadomych jest więcej niż (niezależnych) równań, wówczas układ ma nieskończenie wiele rozwiązań. Reguła Cramera: xi = det(Ai )/ det(A), gdzie Ai powstaje przez zamianę i-tej kolumny A wektorem b. W praktyce bezpośrednia implementacja tej reguły prowadzi do niestabilności numerycznej i dużej złożoności czasowej. Macierze trójkątne umożliwiają szybkie obliczenie wyznacznika (wymnożenie elementów na przekątnej, det(AB) = det(A) det(B)). Ponadto układ Lx = b, gdy L jest macierzą trójkątną dolną można bardzo łatwo rozwiązać stosując następującą metodę podstawiania, tzw. forward substitution (analogiczna istnieje dla macierzy trójkątnej górnej, backward substitution): b1 x1 = , l11 b2 − l21 x1 x2 = , l22 .. . Pn−1 bn − i=1 lni xi xn = . lnn Dlatego większość algorytmów dla układów równań liniowych bazuje na dekompozycji macierzy A na iloczyn macierzy trójkątnych. 1.1 Złożoność obliczeniowa Asymptotyczne wymagania czasowe: O(n3 ) – dekompozycja LU, Cholesky’ego, a także odpowiednio zaimplementowana reguła Cramera O(n2.376 ) – mnożenie macierzy (Coppersmith–Winograd), O(n2.373 ) (algorytmy o znaczeniu wyłącznie teoretycznym) O(n2.807 ) – algorytm Strassena mnożenia macierzy (używany w praktyce) O(n log n log log n) – mnożenie dwóch n-bitowych liczb (algorytm Schönhage-Strassena), w praktyce używany dla liczb o powyżej 10000 cyfrach dziesiętnych; wynik poprawiony w ∗ 2007 do O(n log n2O(log n) ) (algorytm Fürera) 1 1.2 Układy jednorodne • Jeśli b = 0, wówczas x = 0 jest zawsze rozwiązaniem. • Jeśli x1 i x2 są rozwiązaniami Ax = 0, wówczas x1 + x2 oraz λx1 (dla λ ∈ R) też są rozwiązaniami. • Zbiór nullspace(A) = {x ∈ Rn : Ax = 0} nazywamy jądrem (inne oznaczenie: Ker(A) – kernel). Jest to zbiór wszystkich wektorów ortogonalnych do wierszy A. • Jeśli x1 jest rozwiązaniem Ax = b, wówczas rozwiązaniami są wszystkie wektory {x1 +v : v ∈ nullspace(A)}. • Jeśli nullspace(A) = {0} oraz układ Ax = b ma rozwiązanie, wówczas to rozwiązanie jest unikalne. 2 Dekompozycja Cholesky’ego (a.k.a. Cholesky factorization, [1]) Każda macierz dodatnio określona A 0 może być przedstawiona jako: A = LLT gdzie L jest macierzą trójkątną dolną, z dodatnimi elementami na przekątnej. Interpretacja macierzy L: “pierwiastek kwadratowy” macierzy dodatnio określonej A. a11 AT21 A21 A22 = l11 0 L21 L22 l11 LT21 0 LT22 stąd: l11 = oraz: L21 = = 2 l11 l11 LT21 T l11 L21 L21 L21 + L22 LT22 √ a11 1 l11 A21 . Z powyższego wynika również: L22 LT22 = A22 − L21 LT21 = A22 − 1 A21 AT21 . a11 Ostatnie wyrażenie to tzw. uzupełnienie Schura (Schur’s complement). Dla macierzy A 0 uzupełnienie to jest zawsze dodatnio określone. Stąd można rekurencyjnie zastosować algorytm dekompozycji do macierzy pomniejszonej o pierwszy wiersz i kolumnę. 2.1 Algorytm rozwiązywania układu równań • oblicz A = LLT • wykonaj forward substitution Lz = b • wykonaj backward substitution LT x = z Uwaga. Dekompozycja macierzy odwrotnej: A−1 = (LT )−1 L−1 2 Rysunek 1: Cholesky factorization. 2.2 Dekompozycja Cholesky’ego dla macierzy rzadkich Macierz permutacji P powstaje poprzez zmianę miejscami wierszy macierzy I. Rozwiązywanie układu równań dla macierzy permutacji: P x = b, wynik: x = P T b. Wykonujemy dekompozycję: P T AP = LLT . 3 Dekompozycja LU Dla macierzy kwadratowej A ∈ Rn×n nieosobliwej (det A 6= 0) dekompozycja LU jest zdefiniowana jako: P A = LU gdzie: P jest macierzą permutacji n×n (uzyskana z macierzy jednostkowej poprzez odpowiednią zamianę wierszy), L jest macierzą trójkątną dolną ze wszystkimi elementami na przekątnej równymi 1, U jest macierzą trójkątną górną. Wyznaczanie dekompozycji: algorytm eliminacji Gaussa (partial row pivoting) Rozwinięcie tego algorytmu umożliwia obliczenie macierzy A−1 (algorytm GaussaJordana). 4 Rozkład według wartości osobliwych (a.k.a. singular value decomposition (SVD)) Definicja 1: Dla macierzy zespolonej U macierz transponowaną sprzężoną (conjugate transpose) oznaczamy U ∗ . Definicja 2: Macierz unitarna: U ∗ U = U U ∗ = I. Dowolną macierz A wymiaru m × n, gdzie aij ∈ C (R) można przedstawić jako: A = U ΣV ∗ gdzie: Σ = [σi ] jest diagonalną (prostokątną!) macierzą m × n, zawierającą wartości osobliwe macierzy A (pierwiastki wartości własnych), U jest macierzą unitarną wymiaru m × m, zawierającą lewostronne wektory osobliwe ui odpowiadające wartościom własnym σi (Avi = σi ui ), 3 Rysunek 2: Gaussian Elimination with partial row pivoting. V ∗ jest macierzą unitarną wymiaru n × n, zawierającą prawostronne wektory osobliwe vi odpowiadające wartościom własnym σi (A∗ ui = σi vi ). Definicja 3: Uogólniona macierz odwrotna, ozn. A+ (Moore-Penrose pseudoinverse). Spełnia ona szereg warunków, m.in. A+ = A−1 jeśli A posiada macierz odwrotną. Przy pomocy SVD można łatwo obliczyć uogólnioną macierz odwrotną, w następujący sposób: A+ = V Σ + U ∗ czyli wystarczy wziąć wartości 1/σi . Macierz A+ spełnia następującą własność: dla układu równań Ax = b, gdzie A jest macierzą m × n, ∀x ||Ax − b||2 ≥ ||Az − b||2 gdzie z = A+ b. Więc wektor z jest rozwiązaniem problemu najmniejszych kwadratów: min ||Ax − b||2 . Uwaga: Jeśli układ równań Ax = b (A jest macierzą m×n) ma jakiekolwiek rozwiązania, wówczas dane są one jako: x = A+ b + I − A+ A w dla dowolnego wektora w ∈ Rn . Rozwiązania istnieją gdy AA+ b = b. Literatura [1] Vandenberghe L. Applied Numerical Computing (lecture). http://www.ee.ucla.edu/ ~vandenbe/ee103.html. 4