Metoda LU

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Metoda LU (ang. lower – dolny, upper górny) – metoda rozwiązywania układu równań liniowych. Nazwa pochodzi od użytych w tej metodzie macierzy trójkątnych, tj. dolnotrójkątnej (dolnej) i górnotrójkątnej (górnej). Metoda pozwala także na szybkie wyliczenie wyznacznika macierzy układu.

Opis metody LU

Niech dany będzie układ równań liniowych:

𝐀𝐱=𝐲,

gdzie 𝐀 – macierz współczynników, 𝐱 – wektor niewiadomych, 𝐲 – wektor danych.

W metodzie LU macierz współczynników 𝐀 zapisywana jest jako iloczyn pewnych macierzy dolnej 𝐋 i górnej 𝐔:

𝐀=𝐋𝐔,

gdzie:

𝐋=[l1100l21l2200ln1ln2lnn],𝐔=[u11u12u1n0u22u2n00unn].

Układ równań przyjmuje wówczas postać

𝐋𝐔𝐱=𝐲,

a jego rozwiązanie sprowadza się do rozwiązania dwóch układów równań z macierzami trójkątnymi:

𝐋𝐳=𝐲,
𝐔𝐱=𝐳.

Ostatecznie liczba mnożeń, potrzebnych do wyznaczenia wektora 𝐱, wynosi n2, dodawań n2n.

Wyznacznik macierzy 𝐀 tej postaci można obliczyć korzystając z twierdzenia Cauchy’ego:

𝐝𝐞𝐭(𝐀)=𝐝𝐞𝐭(𝐋𝐔)=𝐝𝐞𝐭(𝐋)𝐝𝐞𝐭(𝐔),

oraz z faktu, że wyznacznik macierzy trójkątnej jest iloczynem elementów na przekątnej:

𝐝𝐞𝐭(𝐋)=l11l22lnn,
𝐝𝐞𝐭(𝐔)=u11u22unn.

Ponadto przeważnie przy rozkładzie LU na przekątnej jednej z macierzy znajdują się jedynki – wtedy wyznacznik macierzy 𝐀 jest równy wyznacznikowi albo macierzy 𝐋, albo 𝐔, którego obliczenie wymaga wykonania n1 mnożeń (zamiast 2n1).

Zalety metody:

  • bardzo oszczędna gospodarka pamięcią,
  • wymaga najmniejszej liczby operacji w porównaniu z innymi metodami dokładnymi (nie biorąc pod uwagę procedur specjalnych).

Rozkład LU

Podstawowym problemem numerycznym w tej metodzie jest dokonanie rozkładu LU macierzy współczynników. Żeby ten rozkład macierzy był jednoznaczny, zakłada się, że elementy na głównej przekątnej jednej z macierzy, 𝐋 albo 𝐔, są równe 1.

Rozkład LU jest wyznaczany za pomocą metody Doolittle’a (opisana niżej).

Ta metoda nie jest niezawodnaSzablon:Odn, tzn. podczas obliczeń może wystąpić dzielenie przez zero. Istnieje jej modyfikacja pozbawiona tej wady, nazywana metodą Doolittle-Crouta, w której wykorzystuje się częściowy wybór elementu podstawowegoSzablon:Odn.

Element podstawowy to taki element w macierzy A, który jest używany do rugowania zmiennych (czyli zerowania odpowiadających im współczynników) z kolejnych równań. Przy stosowaniu metody Doolittle’a wybiera się element podstawowy zawsze z przekątnej głównej, i jeśli akk jest równe zero, metoda zawodzi.

W metodach zmodyfikowanych wybierany jest ten element z danej k-tej kolumny, który ma największy modułSzablon:Odn. Następnie wiersz, w którym znajduje się wybrany element, zamieniany jest z k-tym wierszem, co powoduje, że element podstawowy pojawia się na przekątnej głównej. To gwarantuje, że podczas obliczeń nie wystąpi dzielenie przez zero.

Jednocześnie te zmodyfikowane metody nie zawsze dają rozkład LU macierzy 𝐀Szablon:Odn. Może się zdarzyć, że otrzymany rozkład LU dotyczy macierzy 𝐀, w której dokonano takich samych przestawień wierszy, jak podczas eliminacji zmiennychSzablon:Odn. Jednak ma to znaczenie (i komplikuje obliczenia) tylko wtedy, gdy rozkład LU służy do wyznaczenia macierzy odwrotnej; w innych zadaniach nie odgrywa roli.

Metoda Doolittle’a

W metodzie tej równość 𝐀=𝐋𝐔 traktuje się jako układ n równań z n2 niewiadomymiSzablon:Odn. Te niewiadome to elementy lij dla i>j (elementy poniżej przekątnej), oraz uij dla ji (elementy na i powyżej przekątnej), przy założeniu, że na diagonali macierzy 𝐋 znajdują się 1:

[a11a12a1na21a22a2nan1an2ann]=[100l21100ln1ln21][u11u12u1n0u22u2n00unn].

Wyznaczanie kolejnych elementów macierzy 𝐋 i 𝐔 robi się naprzemiennie, tj. raz wyznacza wiersz macierzy 𝐔, raz kolumnę macierzy 𝐋.

Wzory ogólne na poszczególne elementy macierzy rozkładu przedstawiają się następująco:

dla wszystkich i{1,2,,n}:
uij=aijk=1i1likukj dla j{i, i+1,, n},
lji=1uii(ajik=1i1ljkuki) dla j{i+1, i+2,, n}.

Z ostatniego równania wynika, że metoda nie zadziała, gdy uii=0.

Liczba działań potrzebna do rozkładuSzablon:Odn:

  • mnożenia: 13n313n,
  • dodawania: 13n312n2+16n.

Przykład (macierz 3x3)

[532120304]=[100l2110l31l321][u11u12u130u22u2300u33]

Pierwszy wiersz macierzy U:

5=1u11+00+00u11=5
3=1u12+0u22+00u12=3
2=1u13+0u23+0u33u13=2
[532120304]=[100l2110l31l321][5320u22u2300u33]

Pierwsza kolumna macierzy L:

1=l215+10+00l21=15
3=l315+l320+10l31=35
[532120304]=[100151035l321][5320u22u2300u33]

Drugi wiersz macierzy U:

2=153+1u22+00u22=75
0=152+1u23+0u33u23=25
[532120304]=[100151035l321][5320752500u33]

Druga kolumna macierzy L:

0=353+l3275+10l32=97
[532120304]=[100151035971][5320752500u33]

Trzeci wiersz macierzy U:

4=352+9725+1u33u33=167
[532120304]=[100151035971][5320752500167]

Metoda Gaussa

Wersja pamięciożerna

Do macierzy, której rozkładu dokonujemy dopisujemy lewostronnie macierz jednostkową. Na prawym bloku macierzy wykonujemy operacje elementarne takie jak w metodzie Gaussa (odejmowanie i mnożenie). W lewym bloku macierzy zapisujemy współczynniki użyte do eliminacji.

[532120304][100532010120001304][1005321510075253501095145][1005321510075253597100167]

Wersja wymagająca mniej pamięci

Przepisujemy wiersz bez zmian, a elementy w kolumnie poniżej głównej przekątnej dzielimy przez element znajdujący się na głównej przekątnej.

Dla pozostałej części macierzy obliczamy uzupełnienie Schura:

aij=aijaikakj

Powyższe kroki wykonujemy dla k=1,,n1

Gdy któryś z elementów na głównej przekątnej wynosi zero, to rozkład LU=A nie istnieje, ale można spróbować dokonać rozkładu LU dla pewnej permutacji wierszy macierzy A.

Dla każdej nieosobliwej macierzy kwadratowej A można dokonać rozkładu LU macierzy powstałej z pewnej permutacji wierszy macierzy A.

Metoda Crouta

Metoda ta jest analogiczną do metody Doolittle’a, różnica polega na tym, że diagonala macierzy U jest wypełniona liczbami 1.

[a11a12a1na21a22a2nan1an2ann]=[l1100l21l2200ln1ln2lnn][1u12u1n01u2n001]

Przykład rozwiązania układu równań

Zostanie użyta ta sama macierz współczynników, jak w przykładzie dla metody Doolittle’a:

[532120304][x1x2x3]=[1052]

Teraz zostaną zapisane dwa układy równań z macierzami trójkątnymi 𝐋 i 𝐔:

[100151035971][z1z2z3]=[1052]
[5320752500167][x1x2x3]=[z1z2z3]

Najpierw zostanie wyznaczony wektor 𝐳 z pierwszego układu równań 𝐋𝐳=𝐲. Rozwiązanie układu równań z macierzą trójkątną jest bardzo proste: wyznaczane są kolejno elementy wektora niewiadomych z1, następnie, gdy znane jest z1, można wyznaczyć z2, a na końcu z3, ponieważ znane są z1 i z2:

  1. 1z1=10z1=10
  2. 15z1+1z2=1510+z2=5z2=52=3
  3. 35z197z2+z3=3510973+z3=2z3=26+277=297

Teraz drugi układ równań przyjmuje postać:

[5320752500167][x1x2x3]=[103297]

Sposób rozwiązywania jest analogiczny jak dla pierwszego układu, z tym że elementy wektora 𝐱 są wyznaczane „od końca”:

  1. 167x3=297x3=2916
  2. 75x225x3=75x2+2940=3x2=3294075=138
  3. 5x1+3x2+2x3=5x1+313822916=10x1=10398+2985=74

Ostatecznie wynikiem jest wektor 𝐱=[74,138,2916].

Przykład obliczania wyznacznika

Ponownie wykorzystane zostaną wyniki z przykładu dla metody Doolittle’a:

det([532120304])=det([100151035971])det([5320752500167])

Ponieważ na przekątnej macierzy 𝐋 są jedynki, dlatego wyznacznik macierzy det(𝐀)=det(𝐔)=575167=16Szablon:Odn.

Zobacz też

Przypisy

Szablon:Przypisy

Bibliografia