Przejdź do zawartości

Metody numeryczne fizyki/Algebraiczne sposoby rozwiązywania układów równań liniowych

Z Wikibooks, biblioteki wolnych podręczników.
Metody numeryczne fizyki
Metody numeryczne fizyki
Algebraiczne sposoby rozwiązywania układów równań liniowych

Licencja
Autor: Mirosław Makowiecki
Absolwent UMCS Fizyki Komputerowej Uniwersytetu Marii Curie-Skłodowskiej w Lublinie
Email: miroslaw(kropka)makowiecki(małpa)gmail(kropka)pl
Dotyczy: książki, do której należy ta strona, oraz w niej zawartych stron i w nich podstron, a także w nich kolumn, wraz z zawartościami.
Użytkownika książki, do której należy ta strona, oraz w niej zawartych stron i w nich podstron, a także w nich kolumn, wraz z zawartościami nie zwalnia z odpowiedzialności prawnoautorskiej nieprzeczytanie warunków licencjonowania.
Umowa prawna: Creative Commons: uznanie autorstwa, na tych samych warunkach, z możliwością obowiązywania dodatkowych ograniczeń.
Autor tej książki dołożył wszelką staranność, aby informacje zawarte w książce były poprawne i najwyższej jakości, jednakże nie udzielana jest żadna gwarancja, czy też rękojma. Autor nie jest odpowiedzialny za wykorzystanie informacji zawarte w książce, nawet jeśli wywołaby jakąś szkodę, straty w zyskach, zastoju w prowadzeniu firmy, przedsiębiorstwa lub spółki bądź utraty informacji, niezależnie czy autor (a nawet Wikibooks) został powiadomiony o możliwości wystąpienie szkód. Informacje zawarte w książce mogą być wykorzystane tylko na własną odpowiedzialność.


Będziemy się tutaj zajmowali rozwiązaniem algebraicznych układów równań, które możemy przedstawić w postaci macierzowej 𝐀𝐱=𝐛, gdzie 𝐀 jest macierzą o m wierszach i n kolumnach, a 𝐱 jest wektorem o n-niewiadomych, i 𝐛 jest wektorem o n wyrazach wolnych. Jeśli z tego równania macierzowego wyznaczymy wektor niewiadomych, to możemy wyznaczyć ten wektor znając macierz 𝐀 i macierz wyrazów wolnych. Jest to ścisły sposób wyznaczania wektora niewiadomych. Istnieją też numeryczne metody takiego wyznaczania wektora niewiadomych, które poniżej przedstawimy.

Wprowadzenie do pojęcia normy

[edytuj]

Weźmy sobie przestrzeń 𝐑n, którego elementami są wektory pionowe 𝐱=[x1,x2,..,xn]T, wtedy możemy wprowadzić poszczególne normy inaczej zdefiniowane stosowanych w obliczeniach numerycznych:

||𝐱||1=|x1|+|x2|+..+|xn|
(5.1)
||𝐱||2=(x12+x22+...+xn2)1/2
(5.2)
||𝐱||=max{|x1|,|x2|,..,|xn|}
(5.3)

Normy (5.1), (5.2) i (5.3) spełniają warunki poniżej dla dowolnego wektora należącego do n-wymiarowej przestrzeni rzeczywistej, które to piszemy:

||𝐱||||𝐱||2||𝐱||1n||𝐱||2n||𝐱||
(5.4)

Określmy teraz macierz o m wierszach i n kolumnach, która może być traktowana jako operator przekształcający wektor należącej do n-wymiarowej przestrzeni rzeczywistej na m-wymiarową przestrzeń rzeczywistą, wtedy możemy określić normę tej naszej omawianej macierzy 𝐀:

||𝐀||pq=maxx0x𝐑n||𝐀𝐱||q||𝐱||p
(5.5)

Symbole "p" i "q" oznaczają normy przedstawione w punktach (5.1), (5.2) i (5.3), dla którego definicja normy macierzy jest przedstawiona w punkcie (5.5). Zdefiniujmy teraz trzy kolejne normy macierzy, podobne do definicji norm wektora 𝐱 (5.1), (5.2) i (5.3), tylko że ich definicje wyglądają:

||𝐀||1=maxj=1,2,..,ni=1m|aij|
(5.6)
||𝐀||=maxi=1,2,..,mj=1n|aij|
(5.7)
||𝐀||1=maxij|aij|
(5.8)

A także zdefiniujmy ||𝐀||2 jako największa wartość własną macierzy (𝐀T𝐀)1/2. Wszystkie powyższe normy operatora 𝐀 możemy obliczyć łatwo numerycznie, tylko ||𝐀||2 jest trudne do obliczenia. Przestrzeń z normą ||⋅||2 używa sie go w eulkidesowej normy macierzy, które często są zwane normami Schura lub normami Frobeniusza, którego definicja jest:

||𝐀||E=i=1mj=1naij2
(5.9)

wtedy możemy napisać warunek zgodności dla n-wymiarowej przestrzeni rzeczywistej, do których należą elementy 𝐱, zatem:

||𝐀𝐱||2||𝐀||E||𝐱||2
(5.10)

Dla dowolnej macierzy 𝐀 możemy powiedzieć, że zachodzi warunek, który jest zawsze prawdziwy:

||𝐀||2||A||En||A||2
(5.11)

Dla dowolnych dwóch macierzy i dla dowolnej definicji normy możemy napisać twierdzenie dla dowolnych indeksów p,q,r, która jest również słuszna dla dowolnej normy:

||𝐀𝐁||pq=maxx0x𝐑n||𝐀𝐁𝐱||q||𝐱||p=maxx0x𝐑n||𝐀𝐁𝐱||q||𝐁𝐱||r||𝐁𝐱||r||𝐱||pmaxx0x𝐑n||𝐀𝐁𝐱||q||𝐁𝐱||rmaxx0x𝐑n||𝐁𝐫||q||𝐱||p=
=||𝐀||rq||𝐁||pr||𝐀𝐁||pq||𝐀||rq||𝐁||pr
(5.12)

Również możemy powiedzieć ||A||pr||A'||pr z definicji macierzy podobnych, że normy macierzy podobnych mają równe wartości. Można też udowodnić, że jeśli λi jest jedną z wartości własnych macierzy 𝐀, która może być również wartością zespoloną przy zdefiniowanej macierzy kwadratowej z pewną normą wektora nałożoną na macierz 𝐀, to możemy napisać:

||𝐀𝐱||=|λi|||𝐱||p||𝐀||pr||x|||λi||x||p|λi|||𝐀||pr
(5.13)

Wykorzystując definicję normy ||||2, możemy napisać wniosek przy pomocy normy zdefiniowanej na macierzy 𝐀, wykorzystując twierdzenia (5.12):

||𝐀||22||𝐀T𝐀||||𝐀T||||𝐀||=||𝐀||1||𝐀||
(5.14)

Zdefiniujemy teraz dwa lematy, który są dla nas ważne wykorzystując niektóre dowodu napisane powyżej:

Lemat pierwszy
Jeśli norma macierzy 𝐌 spełnia warunek ||𝐌n×n||<1, to macierz 𝐈+𝐌 jest macierzą nieosobliwą spełniającej warunek dla p=1,2,∞ przy 𝐈 jako macierzy jednostkowej:
||(𝐈+𝐌)1||p11||𝐌||p
(5.15)
Dowód
Jeśli macierz 𝐈+𝐌 byłaby macierzą osobliwą, to wtedy dla niezerowego 𝐱 powinno być spełnione (𝐈+𝐌)𝐱=0, to wtedy z definicji normy powinien być spełniony warunek:
||𝐱||p=||𝐌𝐱||p||𝐌||p||𝐱||p
(5.16)

stąd dla dowolnej macierzy 𝐌 warunek (5.18) z warunkiem lematu ||𝐌||p<1 nie jest spełniony, stąd otrzymaliśmy sprzeczność. Z definicji elementu odwrotnego możemy powiedzieć:

(𝐈+𝐌)1(𝐈+𝐌)=𝐈(𝐈+𝐌)1+(𝐈+𝐌)1𝐌=𝐈
(5.17)

Z obliczeń napisanej w punkcie (5.17) możemy napisać następujący wniosek:

1=||𝐈||p||(𝐈+𝐌)1||p||(𝐈+𝐌)1||p||𝐌||p||(𝐈+𝐌)1||p11||𝐌||p
(5.18)

Maksymalna wartość wartości własnej nazywamy promieniem spektralnym macierzy A i na podstawie wzoru (5.15) piszemy:

ρ(A)||𝐀||p dla p=1,2,,E
(5.19)
Lemat drugi
Dla każdej macierzy i dla liczby ε istnieje indukowana norma ||||p, dla której zachodzi:
||𝐀||pρ(𝐀)+ϵ
(5.20)
Dowód
Niech λ będzie jedną z największej wartości własnej, wtedy z definicji norm podanej powyżej dla macierzy zdiagonalizowanej, ta norma jej jest równa wartości własnej największej rozważanej macierzy, co stąd jeśli ||𝐀'||pr jest macierzą diagonalną, to możemy napisać z transformacji macierzy podobnych 𝐀'=𝐔1𝐀𝐔, to możemy powiedzieć:
||𝐔1||pr|||𝐀||pr||U||pr||A'||k||𝐀||||𝐀'||
(5.21)

Przeprowadźmy teraz dowód poprzez zaprzeczenie. Załózmy, że ||𝐀||||𝐀'||, wtedy da się wybrać takie k, by nierówność (5.21) była niespełniona, zatem ||𝐀||||𝐀'||. Analogicznie do (5.21) da się napisać tożsamość przy tym samym k:

k||𝐀'||||𝐀||
(5.22)
Co przeprowadzając w dowodzie poprzez zaprzeczenie takie same wywody co dla (5.21) dochodzimy do wniosku ||𝐀'||||𝐀||, wtedy łącząc te dwie nierówności otrzymujemy, że normy macierzy podobnych są sobie równe.
Twierdzenie drugie
Ciąg wektorów 𝐀𝐱,𝐀2𝐱,...,𝐀i𝐱,.. jest zbieżny do zera, wtedy i tylko wtedy gdy promień spektralny macierzy jest mniejszy od jedynki.
Dowód
Udowodnijmy powyższe twierdzenie poprzez zaprzeczenie, zatem jeśli powyższy ciąg dąży zera, i promień spektralny jest większy lub równy niż zera, to powinno zachodzić na podstawie (5.21):
0=limi||𝐀i𝐱||limi||𝐀||pi||𝐱||plimiρ(𝐀)i||𝐱||p||𝐱||p
(5.23)

Ponieważ według (5.23) ciąg zależny od "i" dąży do zera i jednocześnie jest większy lub równy ||𝐱||p dla dowolnego 𝐱, stad mamy sprzeczność. Udowodnijmy teraz twierdzenie odwrotne, jeśli ciąg jest rozbieżny od zera i promień spektralny jest mniejszy od zera dla dowolnie małego ε, to na podstawie wzoru (5.20) powiemy:

limi||𝐀i𝐱||limi||𝐀||pi||𝐱||plimϵ0i(ρ(𝐀)+ϵ)i=0
(5.24)
Stąd jeśli rozważany ciąg jest zbieżny do zera według obliczeń (5.24), to nie jest jednocześnie rozbieżny, stąd sprzeczność, więc udowodniane twierdzenie jest prawdziwe.

Błędy rozwiązań układów równań algebraicznych

[edytuj]

Przypadek pierwszy

Weźmy sobie zamiast 𝐀 i 𝐱 wielkości 𝐀+δ𝐀 i 𝐱+δ𝐱, wtedy równanie macierzowe 𝐀𝐱=𝐛 możemy zapisać przy δ𝐀 wzorem:

𝐀(𝐱+δ𝐱)=𝐛+δ𝐛δx=𝐀1δ𝐛
(5.25)

Dla dowolnej normy wektora zaburzenia zapisany przy pomocy normy macierzy 𝐀 dla równania macierzowego 𝐀𝐱=𝐛 możemy zapisać ||δ𝐱||p=||𝐀1||pq||δ𝐛||q, wtedy względne zaburzenie wielkości δ𝐱 możemy zapisać przez względną zmianę wielkości 𝐛, co daje nam w rezultacie przy oznaczeniu wielkości k:

||δ𝐱||p||𝐱||p||𝐀1||qp||𝐛||q||𝐱||pk||δ𝐛||q||𝐛||q=k||δ𝐛||q||𝐛||q
(5.26)

wtedy w (5.26) zachodzi równość tylko dla ściśle określonego δ𝐛, a nierówność słaba dla δ𝐛, który należy od n-wymiarowej przestrzeni rzeczywistej. Jeśli skorzystamy z rozważanego równania macierzowego, wtedy definicję na czynnik "k" możemy przepisać w formie niezależącego od wektora zmiennych 𝐱 w postaci pewnej nierówności:

k=||𝐀1||pq||𝐀𝐱||q||𝐱||p||𝐀1||pq||𝐀||pq=Kpq
(5.27)

Liczbę Kpq będziemy nazywać wskaźnikiem uwarunkowania równania macierzowego 𝐀𝐱=𝐛, który symbolizuje pewien układ równań.

Przypadek drugi

Niech dalej δ𝐛=0 i δ𝐀0, wtedy możemy napisać:

(𝐀+δ𝐀)(𝐱+δ𝐱)=𝐛𝐀𝐱+𝐀δ𝐱+δ𝐀𝐱+δ𝐀δ𝐱=𝐛𝐀δ𝐱+δ𝐀𝐱=0
δ𝐱=𝐀1δ𝐀𝐱||δ𝐱||p||𝐀1||qp||δ𝐀||pq||𝐱||p=||𝐀1||qp||𝐀||pqk||𝐱||p||δ𝐀||pq||𝐀||pq
(5.28)

Z obliczeń przeprowadzonych w punkcie (5.28) dochodzimy do wniosku przy odpowiedniej definicji k, że zachodzi:

||δ𝐱||p||𝐱||pk||δ𝐀||pq||𝐀||pq
(5.29)

Określmy jaka jest graniczna wartość współczynnika wzmocnienia k0, jako wielkości granicznej współczynników k określonych we wzorze (5.28) jako czynnik, takiego że zachodzi równość (5.29) dla ściśle określonego δ𝐀, która dla każdej tej wielkości zachodzi w ogólności nierówność słaba, takiego że:

||δ𝐀||||𝐀||δ
(5.30)

gdy zachodzi δ→0. Teraz będziemy wyznaczać oszacowanie wielkości k0, które wyznaczymy poniżej Weźmy sobie do rozważenia równość, którą jest tożsamościowo równa zero, i ją zapisujemy sposobem: F(𝐱,𝐀)=𝐀𝐱𝐛=0. Weźmy sobie wektor 𝐚, który przepiszemy w postaci: 𝐚=[a11,a21,...,an1,a12,a22,...,an2,..,an1,an2,...,ann]T. Mając sobie funkcję F(𝐱,𝐚)=0, to wtedy na podstawie różniczki zupełnej tejże funkcji możemy powiedzieć:

0=F(𝐱,𝐚)𝐱δ𝐱+F(𝐱,𝐚)𝐚δ𝐚=Fx(𝐱,𝐚)d𝐚+Fa(𝐱,𝐚)δ𝐚δ𝐱δ𝐚=[Fx(𝐱,𝐚)]1Fa(𝐱,𝐚)
(5.31)

wtedy możemy napisać wielkość Fx(𝐱,𝐚)=𝐀, która jest macierzą nieosobliwą, a Fx(𝐱,𝐚)=[x1𝐈,x2𝐈,...,xn𝐈], zatem po wykorzystaniu tożsamości na Fa(𝐱,𝐚) i na Fx(𝐱,𝐚), wtedy różniczkę wielkości 𝐱 możemy przepisać w następującej formie:

δ𝐱=[x1𝐀1,x2𝐀1,...,xn𝐀1]δ𝐚+O(||δ𝐚||)
(5.32)

Z definicji normy możemy napisać oszacowanie czynnika stojącego przy δ𝐚 występującego we wzorze (5.32):

||[x1𝐀1,x2𝐀1,..,xn𝐀1]||1=maxi,j,k|xkaijk1|=||𝐱||||𝐀1||1
(5.33)

stąd możemy napisać oszacowanie wielkości ||δ𝐱||||𝐱|| poprzez wielkość ||δ𝐚||||𝐀||1, zatem:

||δ𝐱||||𝐱||||𝐀1||1||𝐀||1k0||δ𝐚||1||𝐀||1+O(||δ𝐚||)
(5.34)

Czynnik stojący przy k0 możemy wyrazić przy pomocy definicji normy wektora (5.1), a także normy macierzy (5.8) w sposób δ𝐚||1||𝐀||1=i=1nj=1n|δaij|maxij|aij|, a k0 oblicza się jako iloczyn norm macierzy macierzy A i jego odwrotności przy normie (5.8), który jest iloczynem maksymalnych wartości modułów elementów macierzowych macierzy A i jego odwrotności.

Przypadek trzeci

Weźmy sobie, że różniczki wyrazów wolnych 𝐛 i macierzy 𝐀, które są nierówne zero, a macierz 𝐀+δ𝐀 jest macierzą nieosobliwą, wtedy:

(𝐀+δ𝐀)(𝐱+δ𝐱)=𝐛+δ𝐛(𝐀+δ𝐀)𝐱+(𝐀+δ𝐀)δ𝐱=𝐛+δ𝐛
δ𝐀𝐱+(𝐀+δ𝐀)δ𝐱=δ𝐛δ𝐱=(1+𝐀1δ𝐀)1𝐀1(δ𝐛δ𝐀𝐱)
(5.35)

Względny błąd wielkości δ𝐱 możemy napisać po wykorzystaniu równania macierzowego 𝐀𝐱=𝐛, którą wykorzystamy do wyliczenia nierówności drugiej poniżej występującego w nawiasie po prawej stronie jako drugi czynnik w pierwszym składniku, które jest zawsze mniejsze od jedynki według dowodu ||𝐛||q||𝐱||p||𝐀||pq=||𝐀𝐱||q||𝐱||p||𝐀||pq1, a także z małości zaburzenia δ𝐀 będziemy mogli zapisać ||𝐀1||||δ𝐀||=ρ<1, w takim razie:

||δ𝐱||p||𝐱||p11||𝐀1δ𝐀||pq||𝐀1||qp||𝐀||pq(||δ𝐛||q||𝐀||pq||𝐱||p+||δ𝐀||pq||𝐀||pq)
||δ𝐱||p||𝐱||p11||𝐀1||qp||δ𝐀||pq||𝐀1||qp||𝐀||pq(||δ𝐛||q||𝐛||q||𝐛||q||𝐱||p||𝐀||pq+||δ𝐀||pq||𝐀||pq)
||δ𝐱||p||𝐱||p11||𝐀1||qp||δ𝐀||pq||𝐀1||qp||𝐀||pq(||δ𝐛||q||𝐛||q+||δ𝐀||pq||𝐀||pq)
||δ𝐱||p||𝐱||p11ρ||𝐀1||qp||𝐀||pq(||δ𝐛||q||𝐛||q+||δ𝐀||pq||𝐀||pq)
(5.36)

Układy równań algebraicznych o trójkątnej macierzy

[edytuj]

Weźmy sobie układ równań, w której wszystkie wyrazy na diagonalnej są różne od zera, to możemy wyznaczyć zmienną 𝐱 wykonując małą liczbę działań arytmetycznych i dla małych błędów zaokrągleń przy wyznaczaniu poszczególnych elementów wspomnianego wektora, zatem ten nasz układ równań piszemy:

a11x1+a12x2+...+a1nxn=b1
..........a22x2+...+a2nxn=b2
........................................
.........................annxn=bn
(5.37)

Poszczególne elementy zmiennych xk możemy policzyć z poniższych wzorów:

xn=bnann

xn1=bn1an1nxnan1n1

xi=biainxn...aii+1xi+1aii dla i=n1,n2,..,1
(5.38)

Patrząc na powyższy układ równań można powiedzieć, że dla i=n jest wykonywane jedno dzielenie lub mnożenie, a dla i=n-1 jest wykonywane jedno mnożenie i jedno dzielenie, czyli dwa mnożenia i dzielenia, a przy x1 jest wykonywanych n dzieleń i mnożeń, wtedy ilość dzieleń i mnożeń jest:

M=1+2+3+..n=1+n2n=12n2+12n
(5.39)

Dla układu rozwiązań xi (5.34) dla xn mamy zero dodawań i odejmowań, dla xn-1 mamy jedno dodawanie lub odejmowanie, dla x1 mamy n-1 dodawań lub odejmowań, zatem liczba wszystkich dodawań lub odejmowań jakie należy wykonać jest:

D=0+1+2+...+n1=0+n12n=12n212n
(5.40)

Jeśli będziemy wykonywali działania na komputerze, jeśli nie możemy wsadzić w miejsce wektora 𝐛 wektora 𝐱, to liczba komórek zajętych dla i=n jest 3, dla i=n-1 jest 4, i idać dalej dochodzimy aż do i=1 jest n+2 zajętych komórek pamięci, zatem liczba wszystkich komórek zajętych jest:

P=3+4+...n+2=3+n+22n=n+52n=12n2+52n
(5.41)

Wzory (5.38) możemy napisać z odpowiednim przybliżeniem uwzględniając, że wielkości xi i bi są napisane z pewnym zaokrągleniem:

|δaij|ϵ[n|a11|(n+2)|a1,2|4|a1,n1|3|a1.n|0(n1)|a2,2|4|a1,n1|3|a1.n|002|an1,n13|an1,n|0001|ann|]
(5.42)

Powyższa macierzowa "nierówność" stanowi układ 1+2+3+..+n=n(n+1)/2 nierówności. Z powyższego oszacowania możemy wyedukować, że dla dowolnej normy p=1,∞,E spełniona jest zawsze nierówność:

||δ𝐀||pϵ(n+2)||𝐀||p
(5.43)

Jeśli wiadomo, że oszacowanie elementów macierzy ||𝐀|| z definicji normy ||⋅||1∞ od góry jest ||𝐀||1g, wtedy macierz błędu z normą ||⋅||1 i ||⋅|| możemy przepisać:

||δ𝐀||1ϵ(14n2+52n)g
(5.44)
||δ𝐀||ϵ(12n2+52n2)g
(5.45)

Wprowadźmy definicję macierzy A diagonalnie dominującej, których moduły elementów na diagonali są większe od sumy elementów macierzy stojącej w danym wierszu bez elementu na diagonali. Jest to macierz spełniającej warunek dla i=1,2,...,n:

|aii|kik=1n|aik|
(5.46)

Macierzą silnie diagonalnie dominującą nazywamy taką macierz A o stopniu n, w której w (5.46) występuje nierówność ostra. Macierz (silnie) diagonalnie dominująca kolumnowo nazywamy macierz, dla której AT jest (silnie) diagonalnie dominująca, tzn. gdy spełniony jest warunek dla i=1,2,...,n:

|aii|(>)kik=1n|aki|
(5.47)

Macierz A generowana przez (5.37) nazywamy diagonalnie dominującą, gdy spełniony jest warunek pierwszy poniżej, a także ta macierz jest diagonalnie dominująca kolumnowo, gdy spełniony jest drugi warunek poniżej:

||δ𝐀(z)||ϵ(2n+2)g
(5.48)
||δ𝐀(z)||1ϵ(2n+1)g
(5.49)

Rozwiązania równań liniowych metodą eliminacji Gaussa

[edytuj]

Będziemy rozwiązywać układ równań liniowych z pełną macierzą 𝐀, i doprowadzać ten układ równań do postaci trójkątnej, czyli przy wykorzystaniu równań (5.38), by później obliczyć jej poszczególne zmienne. Na sam początek określmy równanie macierzowe 𝐀(1)𝐛=𝐛(1), które możemy przepisać w postaci układu równań:

a11(1)x1+a12(1)x2+...+a1n(1)xn=b1(1)

a21(1)x1+a22(1)x2+...+a2n(1)xn=b2(1)
..........................................................

an1(1)x1+an2(1)x2+...+ann(1)xn=bn(1)
(5.50)

Odejmijmy i-te równanie i>1 od pierwszego równania pomnożonego przez ai1(1)/a11(1) układu równań (5.46), w ten sposób otrzymujemy równanie macierzowe 𝐀(2)𝐱=𝐛(2), co po rozpisaniu jego na układ równań, otrzymujemy:

a11(2)x1+a12(2)x2+...+a1n(2)xn=b1(2)

a22(2)x2+...+a2n(2)xn=b2(2)
..........................................................

an2(2)x2+...+ann(2)xn=bn(2)
(5.51)

W powyższych równaniu wyeliminowaliśmy zmienną x1 dla równania o numerze więcej niż pierwszy. Idąc dalej tym sposobem od równania i>2 odejmujemy od równania drugiego pomnożonej przez ai2(2)/a22(1), w ten sposób otrzymujemy układ macierzowy 𝐀(3)𝐱=𝐛(2). Dokonując tą metodę dalej według schematu podanego powyżej otrzymujemy na samym końcu równanie macierzowe 𝐀(n)𝐱=𝐛(n), które zapisujemy w postaci układu równań:

a11(n)x1+a12(n)x2+...+a1n(2)xn=b1(n)

a22(n)x2+...+a2n(n)xn=b2(n)
..........................................................

ann(n)xn=bn(n)
(5.52)

W uzyskanym układzie równań (5.52) rozwiązujemy xi metodą (5.38) dla macierzy 𝐀 trójkątnej. Liczba mnożeń i dzieleń jakie należy wykonać dla układu równań (5.50), by uzyskać macierz trójkątna 𝐀 dla układu równań (5.48) jest w ilości kroków:

D=i=0n1(n+1i)(n1i)=i=1n(i+1)(i1)=i=1ni2i=1n1=n33+n22+n6n=
=n33+12n256n
(5.53)

Powyższy rozwiązanie należy uzyskać, jeśli dla pierwszego kroku należy wykonać dzielenie ai1(1)/a11(1), które jest jedno, i wymnożenie jej przez n wyrazów pierwszego równania układu równań (5.50) poczynając od drugiego (bo pierwszy składnik chociaż jest wymnażany przez tą liczbę, ale tylko służy do wyzerowania pierwszego składnika w równania drugiego), tych dzieleń i mnożeń w sumie jest n+1, dla i=2,..,n, to aby przejść do układu równań (5.51) należy wykonać dodawań i mnożeń w ilości (n+1)(n-1), aby przejść od układu równań oznaczonej "i" na do i+1 należy wykonać działań (n+1-i)(n-1-i), czyli w sumie mamy takich naszych działań (5.53). Liczba dodawań i dzieleń jakie układ musi wykonać by układ (5.50) doprowadzić do postaci trójkątnej jest:

D=i=0n1(ni)(n1i)=i=1ni(i1)=i=1ni2i=1ni=n33+n22+n6n2n22=
=n3313n
(5.54)

Powyższe rozwiązanie możemy uzyskać, gdy dla pierwszego układu równań przejdziemy do drugiego układu równań, to wtedy należy wykonać n(n-1) działań, to aby przejść z układu równań i-tego do i+1-ego, to należy wykonać (n-i)(n-1-i) dodawań, odejmowań, zatem całkowita ilość dodawań i odejmowań aby układ był w postaci trójkątnej jest uzyskana równaniem (5.54). Powyższy sposób przeprowadziliśmy bez ujawniania jawnego operacji macierzowych, tylko powiedzieliśmy co dokonaliśmy na poszczególnych równaniach, do tego problemu podejdźmy z innej strony, tzn. za pomocą operacji macierzowych, aby przejść do równoważnych równań macierzowych z 𝐀(1)𝐱=𝐛(1) do 𝐀(2)𝐱=𝐛(2), to pierwsze z tych równań macierzowych należy pomnożyć obustronnie lewostronnie przez macierz:

𝐋(1)=[1000l21000ln1001] dla li1=ai1(1)a11(1)i=2,3,..n
(5.55)

Przy pomocy macierzy podanej w podpunkcie (5.55) możemy pomnożyć początkowe równanie macierzowe lewostronnie 𝐀(1)𝐱=𝐛(1), w ten sposób uzyskując równanie macierzowe 𝐋(1)𝐀(1)𝐱=𝐋(1)𝐛(1). By otrzymać równość macierzową 𝐋(3)𝐱=𝐛(3), to drugie równanie macierzowe należy pomnożyć obustronnie lewostronnie przez macierz:

𝐋(2)=[100001000l32100ln201] dla li1=ai2(1)a22(1)i=3,4,..n
(5.56)

Macierz końcową 𝐀(n), która jest macierzą trójkątną, to by go otrzymać należy macierz 𝐀(1) wymnożyć lewostronnie przez macierze 𝐋(i), gdzie i=2,3,..n, a także to samo robimy uzyskując wektor wyrazów wolnych 𝐛(n), co je napiszemy w jednej linijce:

𝐀(n)=𝐋(n1)𝐋(n2)...𝐋(1)𝐀(1)
(5.57)
𝐛(n)=𝐋(n1)𝐋(n2)...𝐋(1)𝐛(1)
(5.58)

Ponieważ macierze 𝐋i) są macierzami nieosobliwymi, wtedy możemy równanie (5.57) równoważnie zapisać na w sposób:

𝐀(1)=(𝐋(1))1(𝐋(2))1...(𝐋(n1))1𝐀(n)
(5.59)

Można udowodnić, że odwrotności macierzy (5.55) i (5.56), czyli macierze (𝐋(1))1 i (𝐋(2))2, zapisujemy w formie:

(𝐋(1))1=[1000l21000ln1001]
(5.60)
(𝐋(2))1=[100001000l32100ln201]
(5.61)

Możemy również powiedzieć, że iloczyn odwrotności macierzy 𝐋(i) dla i=1,...,n-1 możemy zapisać przy pomocy liczb lij w formie:

(𝐋(1))1(𝐋(2))1...(𝐋(n1))1=[1000l21100l31l3210ln1ln2ln31]
(5.62)

Oznaczmy macierz oznaczoną (5.62) przez 𝐋, a macierz 𝐀(n) przez 𝐔, wtedy wyrażenie macierzowe (5.59) zapisujemy jako:

𝐀(1)=𝐋𝐔
(5.63)

Macierz 𝐋 przedstawiona powyżej jest macierzą trójkątną dolną. Równanie macierzowe 𝐀𝐱=𝐛 zapisujemy w formie 𝐋𝐔𝐱=𝐛, co można zapisać po przekształceniu 𝐔𝐱=𝐋1𝐛=𝐛(n), co jest równoważne rozwiązaniu układu równań macierzowych 𝐋𝐲=𝐛 i 𝐔𝐱=𝐲, z których będziemy szukali rozwiązania 𝐱. Jeśli znamy macierz LU, to ilość mnożeń jakich należy dokonać przy wyznaczeniu wektora "x" jest wyrażona przez M=12n(n1)+12n(n+1)=n2, a ilość dodawań jakie musimy dokonać jest napisana przez D=n2n.

Wyznaczanie macierzy L i U, a metoda Doolittle'a

[edytuj]

Równanie macierzowe (5.63) możemy przepisać w postaci rozwiniętej w takiej postaci, tzn. w której napiszemy zamiast symboli macierzy wchodzących w skład tego równania ich postać rozwiniętą obrazująca poszczególne ich elementy:

[a11a12a1na21a22a2nan1an2ann]=[100l2110ln1ln21][u11u12u1n0u22u2n00unn]
(5.64)

Jeśli popatrzymy na równość macierzową (5.64) i wykonamy działanie w lewej jego stronie, to otrzymamy równość skalarną na elementy aij w których chcemy wyznaczyć lij i uij:

aij=uij+k=1i1likukjuij=aijk=1i1likukj, dla j=i,i+1,...,n
(5.65)

Równość (5.64) możemy przetransponować obustronnie, tzn. zamieniając wiersze z kolumnami, co w końcu otrzymujemy równość macierzową:

[a11a21an1a12a22an2a1na2nann]=[u1100u12u220u1nu2nunn][1l12l1n01l2n001]
(5.66)

Mając do dyspozycji równość macierzową (5.66) możemy go przepisać ujmując poszczególne jej elementy dla j=i+1,i+2,...,n:

aji=k=1iukiljkaji=uiilji+k=1i1ljkukilji=(ajik=1i1ljkuki)/uii
(5.67)

Ilość mnożeń w równaniach (5.65) i (5.67) jest wyrażona M=13n313n, a liczba dodawań w tych samych równaniach co poprzednio jest D=13n312n2+16n. Znając ile należy dokonać działań aby wyznaczyć wektor "x", gdy znamy macierz LU, to dodając te ilości do poprzednich M i D otrzymujemy liczbę dodawań i mnożeń taką samą jak przy metodzie Gaussa, tzn. ostateczną ilość mnożeń jaką musimy dokonać przy wyznaczeniu macierzy L i U, a potem do wyznaczania wektora "x" jest napisana M=13n3+n213n, a liczba dodawań D=13n3+12n256n.

Zastosujmy zmodyfikowaną metodę eliminacją zwaną również częściowym wyborem elementu podstawowego. W tej metodzie elementem podstawowym nazywamy taki element macierzy A przy pomocy której eliminujemy zmienną w pozostałych równaniach. Te elementy zwykle przyjmuje się jako elementy diagonalne macierzy podstawowych A(k), gdzie k=1,2,..,n. Te elementy wybieramy w taki sposób by one leżały w k-tek kolumnie w k-tego macierzy, by ten elementem miał największy moduł w stosunku do pozostałych elementów w danym wierszu macierzy A, co można je uzyskać poprzestawiając poszczególne wiersze w macierzy A, by później leżały one na diagonali, oczywiste jest, że również musimy jednocześnie przedstawiać wiersze wektorów x i b. Ta wersja algorytmu Gaussa z częściowym wyborem elementy częściowego nazywamy metodą Gaussa-Crouta, którą w dalszym ciągu będziemy nazywać metodą GCW. Ta metoda gwarantuje, że proces poszukiwania x nie zatrzyma się na dzieleniu przez zero przy założeniu nieosobliwości macierzy A.

Błędy przybliżeń w metodzie Gaussa i Doolittle'a

[edytuj]
Obie metody tutaj rozważane są ze sobą równoważne numeryczne o tej samej precyzji, aby wyznaczyć wektor "x" należy wyznaczyć macierz A~=𝐋𝐔 metodą Gaussa lub metodą Doolittle'a, a następnie znaleźć wektor "y" w równaniu macierzowym 𝐋𝐲=𝐛, i dalej wyznaczyć "x" w równaniu 𝐔𝐱=𝐲. Ponieważ macierze L i U są napisane z pewnym zaokrągleniem, to błąd zaokrąglenia LU napiszmy przez E, która jest błędem rozkładu i wtedy możemy powiedzieć 𝐋𝐔=𝐀~+𝐄. Znając błędu rozkładu L i U możemy napisać równości (𝐋+δ𝐋)𝐱=𝐛 i (𝐔+δ𝐔)𝐱=𝐲, co na podstawie tego możemy powiedzieć
(𝐋+δ𝐋)(𝐔+δ𝐔)𝐱=𝐛(𝐋𝐔+𝐋δ𝐔+δ𝐋𝐔+δ𝐋δ𝐔)𝐱=𝐛
(5.68)

Z równości (5.68) możemy wyznaczyć błąd zaokrągleń macierzy A wiedząc jakie jest błąd zaokrąglenia macierzy E, zatem:

δ𝐀(z)=𝐄+𝐋δ𝐔+δ𝐋𝐔+δ𝐋δ𝐔
(5.69)

Jeśli będziemy przyjmować gij=maxk=1,2,..,n|aij(k)|, to oszacowanie błędu macierzy LU dla poszczególnych jego elementów jest |eij|≤3,01εngij. Normy błędu zaokrągleń macierzy LU w metodzie GCW, pamiętając przy okazji, że g jest to największy moduł elementów macierzy 𝐀~=𝐀(1),𝐀(2),...,𝐀(n), określamy według:

||𝐄||1ϵ(n2n)g
(5.70)
||𝐄||ϵ(n2n2)g
(5.71)

W przypadku metody GCW wielkość g spełnia nierówność g≤2n-1||A||1∞, ale jak się okazuje, że dobrym ograniczeniem dla g od góry jest nierówność g8||𝐀~||1, a ponadto zachodzą również warunki ||𝐀~||1||𝐀~||1, ||𝐀~||||𝐀~||1, wtedy na podstawie (5.70) i (5.71) można przejąć względne błędy macierzy A według oszacowań:

||𝐄||1||𝐀||18ϵ(n2n)
(5.72)
||𝐄||||𝐀||8ϵ(n2+n2)
(5.73)

Jeśli dodatkowo uwzględnimy, że moduł poszczególnych elementów macierzy L jest mniejszy lub równy jeden, wtedy normy błędów macierzy L przepisujemy w formie:

||δ𝐋||1ϵ(14n2+52n1)
(5.74)
||δ𝐋||ϵ(12n2+52n3)
(5.75)

A ilorazy błędu U przez jakąś normę A możemy przepisać w formie zależnego od stopnia n macierzy i zmiennej dowolnej ε:

||δ𝐔||1||𝐀||1(14n2+52n)
(5.76)
||δ𝐔||||𝐀||ϵ(12n2+52n2)
(5.77)

Z definicji normy ||⋅||1 i ||⋅|| możemy napisać oszacowania dla norm macierzy U i L przy definicji parametru g i stopnia wspomnianych macierzy, które zapisujemy w formie ||U||1≤ng, ||U||≤ng, ||L||≤n, wtedy norma błędu bezwzględnego zaokrąglenia macierzy A według powyższych uwag przedstawiamy jako:

||δ𝐀(z)||||𝐀||||𝐄||||𝐀~||+||𝐋||||δ𝐔||||𝐀~||+||δ𝐋||||𝐔||||𝐀~||+o(ϵ)=
=ϵ(92n3+612n218n16)+o(ϵ)
(5.78)

Jeśli popatrzymy na wzór (5.36) i oznaczymy K=||𝐀||||𝐀1||, a także oznaczymy α=ϵKO(92n3), a O(92n3)=92n3+612n218n16, wtedy błąd względny wektora x jest napisany według nierówności:

||δ𝐱||||𝐱||α1α
(5.79)

Podamy teraz twierdzenie opisującą eliminację metody GCW.

Twierdzenie
Dla macierzy A, która jest nieosobliwa i jest diagonalnie dominująca kolumnowo, to w metodzie eliminacji GCW nie musimy przedstawiać wierszy.
Dowód
Załóżmy, że wyeliminowaliśmy N wierszy, a pozostałe o numerach kolumny N+1,N+2,..,n tworzą macierz diagonalnie dominująco kolumnowo. Dla macierzy 𝐀(1) poszczególne elementy macierzy L możemy napisać jako lk1=aki(1)/a11(1) dla k=2,3,..,n, przy której z definicji macierzy diagonalnie dolinującej kolumnowo (5.47) możemy napisać warunek k=1n|lk1|1. Elementy o numerach w wierszu 2,3,..,n możemy przepisać w formie aki(2)=aki(1)lk1ai1(1) dla numerów kolumn k=2,3,..,n. Dla macierzy A(2) elementy macierzy spełniają warunek na diagonali |aii(2)||aii(1)||li1||a1i(1)|, a elementy leżące poza diagonalą spełniają warunek |aii(2)||aii(1)|+|li1||a1i(1)|. Z definicji macierzy, diagonalnie dominująco kolumnowo (5.47) i powyższych rozważań, możemy napisać nierówność:
|aii(2)|kik=1n|aki(2)||aii(1)||a1i(1)|kik=1n|lk1|kik=1n|aki(1)||a1i(1)|kik=1n|lk1|=|aii(1)|kik=1n|aki(1)|0
(5.80)
Z właśności, jeśli macierz A(1) jest diagonalnie dominująca kolumnowo, to macierz A(2) jest diagonalnie dominująca kolumnowo, ogólnie rzecz biorąc macierz A(k) dla k=1,2,..,n jest macierzą diagonalnie dominująca kolumnowo.

Rozwiązania równań liniowych metodą eliminacji Jordana (metodą eliminacji zupełnej)

[edytuj]

Weźmy sobie układ równań, który przedstawimy w postaci macierzowej 𝐀(1)𝐱=𝐛(1), który możemy rozbić na n równań odpowiadających temu równaniu macierzowemu:

a11(1)x1+a12(1)x2+...+a1n(1)xn=b1(1)

a21(1)x1+a22(1)x2+...+a2n(1)xn=b2(1)
........................................................

an1(1)x1+an2(1)x2+...+ann(1)xn=bn(1)
(5.81)

Pierwsze równanie układu równań (5.81) dzielimy obustronnie przez a11(1), a następnie od i-tego wiersza odejmujemy pierwszy wiersz pomnożonej przez ai1(1), wtedy otrzymujemy następny układ równań, który zapisujemy w formie macierzowym 𝐀(2)𝐱=𝐛(2) rozpisując je w postaci n równań liniowych:

x1+a12(2)x2+...+a1n(2)xn=b1(2)

a22(2)x2+...+a2n(2)xn=b1(2)
...........................................

an2(2)x2+...+ann(2)xn=bn(2)
(5.82)

Po (n-1) dokonanych eliminacjach otrzymujemy n równań algebraicznych linowych równoważnych równaniu (5.81), z których w sposób bardzo łatwy możemy policzyć niewiadome występujące w poniższym równaniu:

x1+a12(n)x3+...+a1n(n)xn=b1(n)

x2+a23(n)x3+...+a2n(n)xn=b2(n)
..............................................

xn=bn(n)
(5.83)

Metoda eliminacji Jordana wymaga mnożeń M=12n3+12n2 i dodawań D=12n312. Jak widzimy, że metoda eliminacji Jordana wymaga około półtora więcej operacji niż metoda eliminacji Gaussa. Aby w tej metodzie nie nastąpiło dzielenie przez zero należy dokonać odpowiedni wybór elementu podstawowego.

Rozkład macierzy symetrycznej A na LDLT i LLT

[edytuj]

Weźmy sobie macierz kwadratową symetryczną 𝐀, którą rozłożymy na iloczyn dwóch macierzy 𝐋, która jest macierzą dolną trójkątną z jedynkami na diagonali i macierzy 𝐔, czyli: 𝐋𝐔, wtedy łatwo uzyskać rozkład macierzy symetrycznej w postaci 𝐀=𝐋𝐃𝐔, a macierz 𝐃 jest macierzą diagonalną o elementach na diagonali macierzy 𝐔, a 𝐔 jest macierzą górną trójkątną, która jest macierzą na diagonali z jedynkami. Ponieważ 𝐀 jest macierzą symetryczną, to również dobrze można napisać 𝐋𝐃𝐔=𝐀, a także 𝐔T𝐃𝐋T=𝐀T=𝐀, co stąd oczekujemy, że wyjdzie 𝐔=𝐋T, zatem dla macierzy symetrycznych spełniony jest związek:

𝐀=𝐋𝐃𝐋T
(5.84)

Z równania (5.84) możemy powiedzieć d1=a11, a także możemy otrzymać dwa równania na lij i di dla i=2,3,..,n, i j=1,2,..,i-1 przy definicji cij=djlij , takiego że:

lij=(aijk=1j1cikljk)/dj
(5.85)
di=aiik=1i1ciklik
(5.86)

W celu wyznaczenia rozkładu (5.84) należy dokonać M=16n3+n276n mnożeń i D=16n316n dodawań. Układ równań opisanej przez równanie macierzowe 𝐀𝐱=𝐛 przy definicji macierzy (5.84) możemy rozłożyć na układ trzech równań macierzowych:

𝐋T𝐳=𝐛𝐃𝐲=𝐳𝐋𝐱=𝐲
(5.87)

Ponieważ macierz 𝐀 jest macierzą symetryczną, znając dolną część macierzy wraz z wyrazami na diagonali zużyje nam 12n2+12n komórek pamięci komputera.

Znamy jeszcze inny rozkład macierzy 𝐀, która jest zwana rozkładem Banachiewicza, która jest również zwana rozkładem Cholesky'ego:

𝐀=𝐋𝐋T
(5.88)

Zakładamy, że zachodzi tożsamość 𝐋=𝐋, co z oczywistych powodów możemy napisać równoważnie dla (5.88) 𝐀=𝐋𝐋T, ale 𝐋 jest macierzą trójkątną dolną niekoniecznie z jedynkami na diagonali. Wzory na lii i lij dla i=1,2,..,n i dla j=i+1,i+2,..,n piszemy:

k=1ilij2=aiilii=aiik=1i1lik2
(5.89)
lji=(ajik=1i1ljklik)/lii
(5.90)

Dla spełnionej pierwszej równości (5.89) liczby lij mają ograniczoną wartość dla ograniczonych elementów aij. Błąd zaokrągleń Banachiewicza rozkładu LLT dla macierzy A piszemy 𝐄=𝐋𝐋T𝐀, wtedy błąd ograniczenia na tą wielkość piszemy przez:

||𝐄||2ϵn32||𝐀||2
(5.91)
||𝐄||2ϵn2||𝐀||1
(5.92)

Równanie macierzowe z macierzą trójdiagonalną

[edytuj]

Weźmy sobie równanie 𝐀𝐱=𝐛, w którym macierz 𝐀 jest macierzą trójdiagonalną napisaną na w sposób:

𝐀=[b1c10a2b2c20a3b3cn10anbn]
(5.93)

Macierz 𝐀 można rozłożyć na iloczyn dwóch macierzy 𝐋 i 𝐔, czyli na 𝐋𝐔, które mają specyficzny wygląd:

𝐋=[10l20ln1]
(5.94)
𝐔=[u1c10cn10un]
(5.95)

Wyznaczmy iloczyn macierzy 𝐋 (5.94) i 𝐔 (5.95), co w rezultacie po krótkich obliczeniach otrzymujemy:

𝐋𝐔=[10l20ln1][u1c10cn10un]=[u1c1l2u1l2c1+u2c2cn1lnun1lncn1+un]
(5.96)

Patrząc na obliczenia (5.96) i porównując ten wynik z (5.93), to możemy podać ogólny wynik na li i ui, który podajemy w postaci przepisu:

u1=b1
(5.97)
li=aiui1
(5.98)
ui=bilici1 dla i=2,3,..,n
(5.99)

Mamy sobie równanie macierzowe 𝐀𝐱=𝐝, który po rozkładzie macierzy 𝐀 na iloczyn dwóch czynników macierzowych (5.94) i (5.95) zapisując jako równanie 𝐋𝐔𝐱=𝐝, który rozbijemy na dwa równania, tzn. na 𝐋𝐲=𝐝 i 𝐔𝐱=𝐲, z których pierwsze równanie rozpiszemy w postaci równania yi jako:

y1=d1
(5.100)
yi=diliyi1 dla i=2,3,..,n
(5.101)

a drugie równanie macierzowe rozpisujemy na element xi w zależności od zmiennej yi i xi+1 i ui:

xn=ynun
(5.102)
xi=(yicixi+1)/ui
(5.103)

Gdy 𝐀 jest macierzą diagonalnie dominująca kolumnowo, tzn. gdy zachodzą warunki: |b1|≥|a2|, |bi|≥|ci-1|+|ai+1| dla i=2, 3,..,n-1, |bn|≥|cn-1|, to ten nasz rozkład jest oparty z częściowych wyborem elementu podstawowego, a więc jest metodą niezawodną, tzn. przy niej nie występuje dzielenie przez zero. Natomiast, gdy macierz 𝐀 jest macierzą diagonalnie dominująca, tzn. gdy zachodzą nierówności: |b1|≥|c1|, |bi|≥|ai|+|ci| dla i=2,3,..,n-1, |bn|≥|an|, to również metoda eliminacji Gaussa w tym przypadku jest niezawodna.

Weźmy sobie inny rozkład macierzy 𝐀 na iloczyn dwóch czynników, które te macierze są zdefiniowane w formie:

𝐋=[l10a2l20anln]
(5.104)
𝐔=[1u101u2un101]
(5.105)

Policzmy teraz iloczyn macierzy 𝐋 (5.104) i 𝐔 (5.105), który napiszemy według przepisu:

𝐋𝐔=[l10a2l20anln][1u101u2un101]=
=[l1a2a2u1+l2l2u2an1an1un2+ln1ln1un10ananun1+ln]
(5.106)

Patrząc na obliczenia (5.106) i porównując ten wynik z (5.93), to możemy podać ogólny wynik na li i ui, który podajemy w postaci przepisu:

l1=b1
(5.107)
u1=cili
(5.108)
li=biaiui1
(5.109)

Mamy sobie równanie macierzowe 𝐀𝐱=𝐝, który po rozkładzie macierzy 𝐀 na iloczyn dwóch czynników macierzowych (5.104) i (5.105) zapisując jako równanie 𝐋𝐔𝐱=𝐝, który rozbijemy na dwa równania, tzn. na 𝐋𝐲=𝐝 i 𝐔𝐱=𝐲, z których pierwsze równanie rozpiszemy w postaci równania yi dla i=1,2,..,n-1 jako:

y1=d1l1
(5.110)
yi+1=(di+1ai+1)/li+1
(5.111)

a drugie równanie macierzowe rozpisujemy na element xi w zależności od zmiennej yi i xi+1 i ui dla i=n-1,n-2,..,1:

xn=yn
(5.112)
xi=yiuixi+1
(5.113)

Będziemy szukali błędów zaokrągleń przy liczeniu macierzy 𝐀, którą liczymy ze wzoru 𝐀=𝐋𝐔. Błąd zaokrągleń będziemy liczyli w naszym przypadku ze wzoru 𝐄=𝐋𝐔𝐀, wtedy dla p=1,∞ możemy napisać ||E||p≤2ε||T||p. Jeśli natomiast (LL)y=d i (UU)x=y, wtedy powiemy: ||δL||p≤3ε, ||L||p≤2ε, a także zachodzą ||δU||p≤3ε||T||p i ||U||p≤2ε||T||p. Jeśli oznaczymy (AA)x=d, i ||δT||p≤14ε||T||p przy definicji ||A-1||p||A||p=Kp dla p=1,∞, a także wprowadzimy oznaczenie na parametr α=14εKp, wtedy wzór (5.36) przyjmuje taki sam wygląd jak wzór (5.79).

Równanie macierzowe z macierzą podobną do trójdiagonalnej

[edytuj]

W matematyce spotykamy się też w równaniach macierzowych 𝐀𝐱=𝐛 z macierzami 𝐀 podobnej do macierzy trójdiagonalnej (5.94), której przepis jest:

𝐀=[b1c1p1a2b2c20a3b30cn1q1anbn]
(5.114)

W porównaniu z macierzą trójdiaagonalną macierz powyższa róźni się od poprzedniej tym, że powyżej pojawiają się niezerowe elementy p1 i q1. Rozłóżmy macierz (5.114) na iloczyn 𝐋𝐔 stosując metodę Gaussa lub Doolittle'a. Macierz 𝐋 jest macierzą trójkatną dolną z jedynkami na diagonali, a macierz 𝐔 jest macierzą trójkątną górną niekoniecznie z jedynkami na diagonali, które przedstawiamy w formie:

𝐋=[1l200ln1q2qn1qn1]
(5.115)
𝐔=[u1c1p10cn1pn20pn1un]
(5.116)

Policzmy teraz iloczyn macierzy 𝐋 (5.115) i 𝐔 (5.116) i przyrównamy je do macierzy podobnej do trójdiagonalnej 𝐀 (5.114):

𝐋𝐔=[1l200ln1q2qn1qn1][u1c1p10cn1pn20pn1un]=
=[u1c1p1u1l2l2c1+u2c2u2l3l3c2+u30pn1+ln1pn2u1q2q2c1+q3u2q3c2+q4u3q2p1++pn1qn+...+un]
(5.117)

Porównując macierz końcową uzyskaną w wyniku obliczeń (5.117) i macierz (5.114), wtedy możemy napisać tożsamości na parametry pi, ui i qi:

Twierdzenie Wzory na elementy macierzy L i U
ui=b1
l2=a2/u1
q2=q1/u1

u2=b2l2c1
l3=a3/u2
q3=q2c1/u2

un2=bn2ln2cn3
ln1=an1/un2
qn1=qn2cn3/un2

un1=bn1ln1cn2
qn=(anqn1cn2)/un1

p2=l2p1
p3=l3p2

pn2=ln2pn3
pn1=cn1ln1pn2
un=bnp1q2...pn1qn

Mamy sobie równanie macierzowe 𝐀𝐱=𝐝, który po rozkładzie macierzy 𝐀 na iloczyn dwóch czynników macierzowych (5.115) i (5.116) zapisujemy je jako równanie 𝐋𝐔𝐱=𝐝, który rozbijemy na dwa równania, tzn. na 𝐋𝐲=𝐝 i 𝐔𝐱=𝐲, z których pierwsze równanie rozpiszemy w postaci równania yi, a drugie xi dla i=1,2,..,n:

y1=d1
y2=d2l2y1

yn1=dn1ln1yn2
yn=dnq2y1...qnyn1
(5.118)
xn=yn/un
xn1=(yn1pn1xn)/un1
xn2=(yn2cn2xn1pn2xn)/un2

x1=(y1c1x2p1xn)/u1
(5.119)

Podczas zaokrąglania macierzy przy liczeniu iloczynu LU powstaje błąd zaokrąglenia E=LU-A, wtedy norma błędu jest opisywana przez ||E||1≤ 2nε||A||1. Jeśli wyniki L i U są w pewien w sposób zaokrąglone, wtedy możemy napisać rozwiązanie równań macierzowych (LL)/y=d i (UU)/x=y, wtedy ograniczenia na normy i normy błędów dla macierzy L i U, przy zaokrągleniu, piszemy ||L||1≤2, ||δL||1≤ε||L||1, a także ||U||1≤2||A||1, ||δU||1≤5ε||U||1. Norma błędu zaokrąglenia macierzy A przedstawiamy w zależności od normy tejże macierzy w sposób: ||δA||1≤(6n+20+20nε)||A||1. Patrząc na wynik na normą błędu zaokrąglenia ostatnio napisany w tym rozdziale dowiadujemy się że nastąpiło pogorszenie osaczowania obliczeń dla naszej macierzy A w tym rozdziale niż dla macierzy całej A według jego normy błędu (5.78).

Wyznaczanie wartości wyznacznika oraz macierzy odwrotnej

[edytuj]

Podczas wyznaczania wyznacznika macierzy należy wykonać n! obliczeń, co jest za dużo dla obecnych maszyn cyfrowych i dlatego stosuje się rozkład macierzy A na dwa macierze L i U do postaci A=LU według metody eliminacji Gaussa, wtedy po tym rozkładzie zastosujmy twierdzenie o wyznaczniku iloczynu dwóch macierzy:

det(𝐀+𝐄)=det𝐋det𝐔=det𝐔
(5.120)

Powyżej zastosowaliśmy to , że detL=1, oraz że macierz LU została policzona z błędem na maszynie cyfrowej z błędem E. Przybliżeniu wyznacznik macierzy A w przybliżeniu jest równy iloczynowi n elementów na przekątnej macierzy U.

Oznaczmy przez X odwrotność macierzy A, wtedy błąd liczenia iloczynu XA powinien być w przybliżeniu równy macierzy jednostkowej z błędem określonej E=I-XA, wtedy błąd bezwzględny przy wyznaczaniu X według normy ||⋅|| jest równy:

||𝐄||||𝐗||ϵg(2,005n2+n3+14n4ϵ)
(5.121)

przez g oznaczymy największy element układu macierzy A(1),A(2),...,A(n)=U, które są otrzymane metodą eliminacji jakie dotychczas poznaliśmy. Wartość g możemy napisać według oszacowania g≤8||A||1∞. Jeśli mamy oszacowanie odwrotności macierzy A, wtedy błąd zmiennej x przepisujemy według (5.79). Oszacowanie błędu E według normy ||⋅||2 piszemy ||𝐄||2ϵn32||𝐀||2. Jeśli dokonamy rozkładu macierzy A według rozkładu Banachiewicza, to oznaczmy wartości własne macierzy A przez symbole λ1,...,λn. a wartości własne macierzy LLT napiszemy przez γ1,...,γn. Napiszmy przez ||A||21, ||LLT||21 jako największe wartości własne wspomnianych wyżej macierzy, wtedy na podstawie wyżej wniosków:

ϵn32λ1λiγiϵn32λ1
(5.122)

Z nierówności (5.122) możemy napisać następną dalszą nierówność, który piszemy względem wyznacznika macierzy LLT, wtedy:

i=1n(λiϵn32λ1)det(𝐋𝐋T)i=1n(λiϵn32λ1)
i=1n(1ϵn32λ1λi)det(𝐋𝐋T)det𝐀i=1n(1ϵn32λ1λi)
(5.123)

Na podstawie obliczeń (5.123) błąd bezwzględny wyznaczania wyznacznika det(LLT) jest opisywany poprzez wyrażenie εn3/2λmaxmin=εn3/2K2. Podobnie postępujemy przy wyznaczaniu błędu bezwzględnego wyznacznika A-1 według normy ||⋅||2.

||𝐀1(𝐋T)1(𝐋1)||2||||𝐀1||2ϵn32K2
(5.124)

Przy wyznaczaniu odwrotności macierzy A, którą możemy rozłożyć na L i U, wtedy macierz odwrotną macierzy możemy policzyć ze wzoru LUx(i)=e(i), gdzie e(i) jest macierzą kanoniczną, gdzie na i-tym miejscu jest jedynka, a na pozostałych elementach są zera. Element x(i) jest i-tą kolumną macierzy odwrotnej do LU. Przy liczeniu macierzy odwrotnej (5.94) należy skorzystać ze wzoru Lx(i)=e(i) dla i=1,2,..,n, wtedy błąd względny przy liczeniu błędu macierzy odwrotnej do L przy normie ||⋅||1 opisujemy przez:

||fl(𝐋1)𝐋1||1||𝐋1||1ϵ(n+2)K1
(5.125)

Odwrotność macierzy diagonalnej do (5.94) jest macierzą trójkątną dolną z jedynkami na diagonali zapisaną:

𝐋1=[10l21l2l3l3(1)n1l2...ln(1)n2l3...lnln1lnln1]
(5.126)

Aby wyznaczyć wektor y=L-1x należy wykonać n(n-1)/2 mnożeń, a przy liczeniu wektora Ly=x należy wykonać n-1 mnożeń.

Poprawianie rozwiązań układów równań liniowych i wektor reszt

[edytuj]

Podczas rozwiązywania układów równań liniowych Ax=b jest na ogół obarczona ściśle określonym pewnym błędem. W celu napisania jaki błąd popełniliśmy należy obliczyć resztę:

𝐫=𝐛𝐀𝐱
(5.127)

przy którym sprawdzimy, czy ona jest równa zeru. Przy metodach dokładnych podczas dokonanych przybliżeń, w tychże metodach ta reszta jest rzeczywiście jest nierówna zero. Dla rozwiązania x równania macierzowego liniowego Ax=b potrafimy dokładnie wyznaczyć poprawkę do uzyskanego rozwiązania w wyniku zaokrągleń, wyniku czego dokładne rozwiązanie zapisujemy 𝐱+δ𝐱=𝐱̂, co dokładną poprawką δx jest rozwiązaniem równania Aδx=r. Dla poszukiwanego rozwiązania metodą GCW uzyskując przedtem macierze L i U wykonując przy tym n2 mnożeń i n2-n dodawań, ale wtedy uzyskamy przybliżoną wartość błędu δx+δ(δx), zatem dla poprawionego rozwiązania naszego równania macierzowego liniowego 𝐱=𝐱+δ𝐱+δ(δ𝐱) wektor reszt będzie miał normę z oczywistych powodów mniejszą wartość. Sformujemy twierdzenie, który coś mówi o normie ||⋅||; reszty z dzielenia względem wielkości ε:

Lemat
Jeśli dla wektora reszty obliczonej dokładnie wyznaczonej według równości (5.127) poprawka do rozwiązania przybliżonego δx została wyznaczona metodą GCW, dla której zachodzi nierówność:
12||𝐫||ϵ||𝐀||(92n3+612n218n16)||δ𝐱||+||𝐀𝐱||ϵ
(5.128)

wtedy jest spełniony warunek względem poprawionego rozwiązania 𝐱 i rozwiązania przybliżonego x:

||𝐛𝐀x||12||𝐛𝐀𝐱||
(5.129)

Macierzowe algebraiczne liniowe równania iteracyjne

[edytuj]

Określmy sobie ciąg wektorów x(0),x(1),...,x(i), które są określone przez równość iteracyjną elementu o numerze i+1 w zależności od elementu i-tego dla i=0,1,... według przepisu:

𝐱(i+1)=𝐌𝐱(i)+𝐰
(5.130)
Twierdzenie
Jeśli mamy równanie iteracyjne (5.130), to on jest zbieżny przy ρ(M)<1.
Dowód
Według równania iteracyjnego (5.130) napiszemy wzór na i+1-ty element zmiennej x(i), wtedy napiszemy:
𝐱(i)=𝐌𝐱(i)+𝐰=𝐌(𝐌+𝐰)+𝐰=𝐌(i+1)𝐱(0)+(𝐌(i)𝐰+𝐌(i1)𝐰+...+𝐰)
(5.131)
Ponieważ ρ(M)<1 i 𝐌(i+1)𝐱(0)i0, wtedy szereg 𝐌(i)𝐰+𝐌(i1)𝐰+...+𝐰 jest zbieżny do pewnego szeregu, co stąd dla tego określonego M szereg generowany przez równanie iteracyjne (5.130) jest szeregiem zbieżnym.

Według równania (5.131) przy zachodzącym ρ(M)<1 szereg jest szeregiem zbieżnym do x(∞) przy zachodzącym równaniu x(∞)=Mx(∞)+w. Przy zachodzącym rozwiązywaniu równania AX=b należy tak dobrać takie M by był spełniony warunek w powyższym twierdzeniu. Ponieważ zachodzi x=Mx+w, wtedy wyznaczając x z równania liniowego względem wektora zmiennych i podstawiając do granicznego równania uzyskanego z (5.130), otrzymujemy:

𝐱=𝐌𝐱+𝐰(𝐈𝐌)𝐱=𝐰𝐰=(𝐈𝐌)𝐀1𝐛
(5.132)

Przyjmijmy tożsamość macierzową M=I-NA, wtedy tożsamość macierzową (5.132) możemy podstawić do równania iteracyjnego (5.130) otrzymując następną, ale równoważną tożsamość iteracyjną:

𝐱(i+1)=(𝐈𝐍𝐀)𝐱(i)+𝐍𝐛
(5.133)

W każdej iteracji Mx(i)+w wyliczamy x(i+1)=Mx(i)+w(i), gdzie δ(i) jest błędem zaokrągleń, która jest wielkością bardzo małą, ale przy większej liczbie iteracji zaczyna odgrywać ogromną rolę:

𝐱(i+1)=𝐌(i+1)𝐱(0)+𝐌(i)𝐰+...+𝐰+δ(i)+𝐌δ(i1)+...+𝐌iδ(0)
(5.134)

Błąd zaokrągleń δ(i)+Mδ(i-1)+...+Miδ(0) może spowodować generowanie ciągu cyklicznego, który krótko opiszemy jako x(i+1)=x(0), który nie jest zbieżny do żadnego rozwiązania, przed którą sytuacją jest trudno ustrzec.

Rozwiązanie algebraicznych układów równań metodą Jacobiego

[edytuj]

Weźmy sobie macierz 𝐀 układów równań algebraicznych zapisanych w postaci macierzowej 𝐀𝐱=𝐛, w której wspomnianą macierz możemy rozłożyć na trzy części 𝐀=𝐋+𝐃+𝐔, w której macierz 𝐋 jest macierzą poddiagonalną, 𝐃 jest macierzą diagonalną, a 𝐔 macierzą naddiagonalną, i przyjmując jednocześnie w (5.133), że 𝐍=𝐃1, wtedy wspomniane wyrażenie dla i=0,1,2,... możemy zapisać:

𝐱(i+1)=(𝐈𝐃1(𝐋+𝐃+𝐔))𝐱(i)+𝐃1𝐛𝐃𝐱(i+1)=(𝐋+𝐔)𝐱(i)+𝐛
(5.135)

Jeśli chcemy zastosować wzór (5.135), to równania algebraiczne równania macierzowego 𝐀𝐱=𝐛 powinny mieć na diagonali elementy tylko niezerowe, a jeśli są jakieś elementy niezerowe, to wybieramy jakąś kolumnę w której znajduje się największa liczba zer, i tak przedstawiamy wiersze w tym układzie równań by element o maksymalnym module był niezerowy, by on potem po przedstawieniu znajdował się na diagonali, by potem ten wiersz pominąć, tzn. nie rozważać go w dalszych przestawianiach. Czynność tą powtarzamy dla pozostałych kolumn, w ten sposób po tych operacjach otrzymujemy na diagonali tylko niezerowe elementy. Ta metoda jest zawsze niezawodna, ale pracochłonna. Jeśli w każdej kolumnie powyżej rozważanej macierzy znajduje się taka sama liczba zerowych elementów, co mamy doczynienia z macierzami rzadkimi, to wybór elementu podstawowego postępujemy zgodnie z metodą GCW. W powyższej metodzie oczywiście mamy:

𝐌J=𝐌=𝐈𝐍𝐀=𝐈𝐃1(𝐋+𝐃+𝐔)=𝐃1(𝐋+𝐔)
(5.136)

Należy zauważyć, że zastosowanie powyższej metody nie gwarantuje zbieżności metody, tzn. ρ(D-1(L+U))<1, ale gdy macierz A jest macierzą silnie diagonalnie dominującą lub silnie diagonalnie dominującą kolumnowo, to metoda Jacobiego jest na pewno zbieżna.

Rozwiązanie algebraicznych układów równań metodą Gaussa-Seidla

[edytuj]

Podobnie jak w metodzie, dla takiego samego typu macierzy mamy to samo 𝐀=𝐋+𝐃+𝐔, wtedy dla równania (5.133) możemy przyjąć 𝐍=(𝐃+𝐋)1, wtedy wspomniane równanie możemy zapisać:

𝐱(i+1)=(𝐈(𝐃+𝐋)1(𝐋+𝐃+𝐔))𝐱(i)+(𝐃+𝐋)1𝐛
(𝐃+𝐋)𝐱(i+1)=(𝐃+𝐋(𝐋+𝐃+𝐔))𝐱(i)+𝐛(𝐃+𝐋)𝐱(i+1)=𝐔𝐱(i)+𝐛
𝐃𝐱(i+1)=𝐋𝐱(i+1)𝐔𝐱(i)+𝐛
(5.137)

Przy końcowej równości (5.136) powstaje pytanie w jaki sposób można obliczyć prawą stronę wspomnianej równości nie znając 𝐱(i+1), otóż problem jest taki, gdy chcemy obliczyć x1(i+1) już nie trzeba znać innych elementów elementów tego typu, już dla xj(i+1) będziemy mogli wykorzystać już policzone elementy dla numerów składowych 𝐱(i+1) mniejszych niż "j". By móc zastosować metodę Gaussa-Seidla należy pamiętać, by na diagonali znajdowały się niezerowe elementy. W powyższej metodzie oczywiście mamy:

𝐌GS=𝐌=𝐈𝐍𝐀=𝐈(𝐃+𝐋)1(𝐋+𝐃+𝐔)=(𝐃+𝐋)1𝐔
(5.138)

Gdy 0<ρ(Mj)<1 metoda Gaussa-Seidla jest bardziej zbieżna niż metoda Jacobiego, bo zachodzi ρ(MGS)<ρ(MJ). Macierz 𝐀 jest macierzą symetryczną, to metoda Gaussa-Seidla jest zbieżna, gdy wspomniana macierz jest dodatnio określona. Gdy macierz 𝐀 jest macierzą silnie dominująca diagonalnie lub silnie dominująca diagonalnie kolumnowo metoda Gaussa-Seidla jest metodą na pewno zbieżna, ale silniej niż metoda Jacobiego.

Błędy iteracyjne w algebraicznych równaniach macierzowych

[edytuj]

Jeśli do wzoru (5.134), który przedstawia iteracje zmiennej o wskaźniku i-tym, który jest napisany w zależności od błędów zaokrągleń podstawimy wzór (5.131), który przedstawia wzór w których obliczenia są dokonane bardzo dokładne, co w rezultacie możemy powiedzieć dla j=0,1,2,...,i:

𝐱~(i+1)𝐱~(i+1)=δ(i)+𝐌δ(i1)+...+𝐌(i)δ(0)
(5.139)

W powyższy wzór jest napisany dla ciągu wektorów x(1), x(2),..., który jest zbieżny do dokładnego rozwiązania x̂, który jest rozwiązaniem równania macierzowego 𝐀𝐱=𝐛, dalej możemy przyjąć:

12||𝐱~||<||𝐱(i)||||2𝐱~|| dla 𝐱~0
(5.140)

wtedy możemy oszacowanie wynikające z (5.139) przy założeniu, że zachodzi ||δ(i)||<χ, napisać według:

||𝐱~(i+1)𝐱(i+1)||δ(i)+||𝐌||δ(i1)+||𝐌(2)||δ(i2)+...+||𝐌(i)||δ(0)
(1+||𝐌||+||𝐌(2)||+...+||𝐌(i)||)χ
||𝐱~(i+1)𝐱(i+1)||||𝐱~(i+1)||(1+||𝐌||+||𝐌(2)||+...+||𝐌(i)||)2χ||𝐱~||
||𝐱~(i+1)𝐱(i+1)||||𝐱~(i+1)||11||𝐌||2χ||𝐱~||
(5.141)

Rozwiązanie algebraicznych układów równań metodą Czebyszewa

[edytuj]

Mamy sobie metodę iteracyjną (5.133) za pomocą której generujemy ciąg wektorów x(1),x(2),..., który jest zbieżny do dokładnego rozwiązania układu równań zapisanych w sposób macierzowy Ax=b przy tak dobranym N=Ns, w taki sposób by moduł z M zapisanej jako ρ(I-NsA)<1. Można tak założyć, że macierz A jest macierzą symetryczną i dodatnio określoną, i można to uzyskać biorąc wielomian macierzowy Ns, który powstaje po zastąpieniu w miejsce t macierzy A, który jest stopnia s-1 wówczas zbudujmy wielomian Ms, który formujemy według zasady ps=1-w(t)t gdzie w miejsce t podstawiamy macierz A. Sformułujmy taki wielomian w(t) taki by był spełniony warunek maxtα,β|1w(t)t|, by było najmniejsze jak tylko możliwe. Wielomian ps(t), który przedstawiliśmy powyżej możemy przepisać jako:

ps(t)=Ts(2t(βα)βα)Ts(β+αβα)
(5.142)

Wielomiany Czybyszewa są zdefiniowane wzorem (1.27), wtedy dla s=1 wyrażenie (5.142) możemy na podstawie definicji wyżej wspomnianych wielomianów przepisać w formie: Upłynął czas przewidziany do wykonywania skryptów.Upłynął czas przewidziany do wykonywania skryptów.Upłynął czas przewidziany do wykonywania skryptów. wtedy macierz M możemy uzyskać podstawiając za "t" macierz A w wyrażeniu Upłynął czas przewidziany do wykonywania skryptów., a macierz N przepisujemy po uzyskanym wyrażeniu p1(t) w formie: Upłynął czas przewidziany do wykonywania skryptów. Wielkość ρ(M) możemy w taki sposób przepisać pamiętając przy tym, że |p(t)|<1, która jest napisane dla t∈<α,β>, by jego ograniczenie od góry przepisać w formie: Upłynął czas przewidziany do wykonywania skryptów. Wyrażenie Upłynął czas przewidziany do wykonywania skryptów. przepiszemy dla s=2, przy którym dla tego s napiszemy odpowiednio wielomiany Czybyszewa Upłynął czas przewidziany do wykonywania skryptów., którego wielomian jest napisany w postaci rozwiniętej T2(x)=2x2-1, które wykorzystamy do wspomnianego wyrażenia, by potem przepisać go w formie: Upłynął czas przewidziany do wykonywania skryptów. Wielkość ρ(M) możemy w taki sposób przepisać pamiętając przy tym, że |p(t)|<1 jest napisane dla t∈<α,β>, by jego ograniczenie od góry przepisać w formie: Upłynął czas przewidziany do wykonywania skryptów. Patrząc na wzory Upłynął czas przewidziany do wykonywania skryptów. dla s=1 i na Upłynął czas przewidziany do wykonywania skryptów. dla s=2 dochodzimy do wniosku, że dla s=1 przy y(0)=x(i) mamy: Upłynął czas przewidziany do wykonywania skryptów. a także dla dowolnego k można powiedzieć dla k=1,2,..,s-1: Upłynął czas przewidziany do wykonywania skryptów. We wzorach Upłynął czas przewidziany do wykonywania skryptów. i Upłynął czas przewidziany do wykonywania skryptów. możemy zdefiniować liczby ω0, ω1,... , które wyliczamy jako:

Upłynął czas przewidziany do wykonywania skryptów.

Upłynął czas przewidziany do wykonywania skryptów. Upłynął czas przewidziany do wykonywania skryptów.