PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko...

57
Wydzial Podstawowych Problemów Techniki Kierunek: Fizyka Specjalno´ c: Fizyka komputerowa PRACA DYPLOMOWA ´ Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej Praca magisterska Aleksander Pasek slowa kluczowe: symetryczna macierz trójdiagonalna, macierz odwrotna, programowanie, numeryczna algebra liniowa krótkie streszczenie: Wynikiem pracy jest program komputerowy do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej. Slu˙ zy on do wykonywania oblicze´ n oraz badania dokladno´ sci i czasów wykonania algorytmów numerycznych. Opracowano i zbadano 22 metody numeryczne, z czego 6 to metody nowe, które oparte s˛ a o wzory analityczne. Wroclaw, marzec 2007 Promotor: dr hab. in ˙ z. Wlodzimierz Salejda, prof. PWr

Transcript of PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko...

Page 1: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Wydział Podstawowych Problemów TechnikiKierunek: Fizyka

Specjalnosc: Fizyka komputerowa

PRACA DYPLOMOWA

Srodowisko programowedo wyznaczania macierzy odwrotnej

do symetrycznej macierzy trójdiagonalnej

Praca magisterska

Aleksander Pasek

słowa kluczowe:symetryczna macierz trójdiagonalna, macierz odwrotna,

programowanie, numeryczna algebra liniowa

krótkie streszczenie:Wynikiem pracy jest program komputerowy do wyznaczania macierzyodwrotnej do symetrycznej macierzy trójdiagonalnej. Słuzy on dowykonywania obliczen oraz badania dokładnosci i czasów wykonaniaalgorytmów numerycznych. Opracowano i zbadano 22 metody numeryczne,z czego 6 to metody nowe, które oparte sa o wzory analityczne.

Wrocław, marzec 2007

Promotor: dr hab. inz. Włodzimierz Salejda, prof. PWr

Page 2: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Pragnę złożyć serdeczne podziękowania opiekunowi naukowemu,dr hab. inż. Włodzimierzowi Salejdzie, prof. PWrza zainteresowanie tematem, cierpliwość i pomoc

przy realizacji pracy dyplomowej.

1

Page 3: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Spis treści

1. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2. Przegląd metod numerycznych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1. Metody bezpośrednie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1. Metoda wyznacznikowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.2. Metoda eliminacji Gaussa, rozkład LU . . . . . . . . . . . . . . . . . . . 72.1.3. Rozkład Cholesky’ego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.1.4. Rozkład QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.1.5. Rozkład SVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2. Metody iteracyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2.1. Metoda Jacobiego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.2. Metoda Richardsona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.3. Metoda nadrelaksacji (SOR) . . . . . . . . . . . . . . . . . . . . . . . . . 152.2.4. Metoda Czebyszewa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2.5. Metoda gradientów sprzężonych (CG) . . . . . . . . . . . . . . . . . . . . 16

2.3. Metody oparte o wzory analityczne . . . . . . . . . . . . . . . . . . . . . . . . . 17Metoda dla macierzy symetrycznej . . . . . . . . . . . . . . . . . . . . . . . . . . 17Metoda dla macierzy diagonalnie dominującej . . . . . . . . . . . . . . . . . . . . 20

3. Opis środowiska obliczeniowego (Program TIPS) . . . . . . . . . . . . . . . . . 223.1. Źródła danych i algorytmów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.2. Ocena dokładności obliczeń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.3. Interfejs użytkownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.3.1. Informacje podstawowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.3.2. Zapis i odczyt opcji obliczeń . . . . . . . . . . . . . . . . . . . . . . . . . 283.3.3. Zakładka „Macierze” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.3.4. Zakładka „Algorytmy i wyniki” . . . . . . . . . . . . . . . . . . . . . . . 313.3.5. Zakładka „Testy i wykresy” . . . . . . . . . . . . . . . . . . . . . . . . . 363.3.6. Okno „Wykres” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.7. Okno „Obliczenia” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.3.8. Korzystanie ze wzorów . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4. Przeprowadzone testy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.1. Porównanie czasów wykonania algorytmów . . . . . . . . . . . . . . . . . . . . . 454.2. Porównanie dokładności - macierz Poissona . . . . . . . . . . . . . . . . . . . . . 464.3. Porównanie dokładności - macierz Hilberta . . . . . . . . . . . . . . . . . . . . . 484.4. Porównanie dokładności - macierz losowa . . . . . . . . . . . . . . . . . . . . . . 52

5. Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Spis ilustracji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Literatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

2

Page 4: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

1. Wprowadzenie

Wyznaczanie macierzy odwrotnej jest jednym z podstawowych problemów algebrynumerycznej. Do tego celu stosuje się różne algorytmy numeryczne. Macierz odwrotnaprzydaje się w problemach automatyki sterowania i przetwarzania sygnałów, gdyż po-zwala szybko rozwiązywać układy równań dla zmieniających się wektorów wejściowychpodczas gdy macierz układu równań pozostaje stała. Wiele zjawisk opisuje się przez mo-dele liniowe, a matematyczną reprezentacją operatorów liniowych są właśnie macierze.Każdą macierz symetryczną można zredukować do symetrycznej macierzy trójdiagonal-nej poprzez przedstawienie zagadnienia w innej bazie przestrzeni liniowej. Koniecznośćwyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej pojawia sięzatem w wielu zagadnieniach fizyki, ekonomii oraz inżynierii.W praktyce obliczeń numerycznych zwykle unika się bezpośredniego obliczania ma-

cierzy odwrotnej, zastępując je przez zagadnienie rozwiązywania układu równań, którejest lepiej uwarunkowane [1, 2]. Istnieją jednak sytuacje, w których dokładna znajomośćmacierzy odwrotnej jest bardzo przydatna [3, 4]. Na uwagę zasługuje na przykład zagad-nienie rozwiązywania czasowego równania Schrodingera [5], gdzie dla każdego kolejnegokroku czasu należy rozwiązywać trójdiagonalny układ równań.Znane jest wiele klasycznych metod numerycznych stosowanych do wyznaczania ma-

cierzy odwrotnej. Są to zarówno metody bezpośrednie, jak i metody iteracyjne. Zakoń-czone sukcesem próby uzyskania rozwiązania analitycznego dla problemu odwracaniamacierzy trójdiagonalnej pozwalają na sformułowanie metody numerycznej nowego ty-pu. Metodę zwaną w tej pracy „metodą analityczną” można zastosować do uzyskaniaanalitycznego rozwiązania zagadnienia odwracania symetrycznej macierzy trójdiagonal-nej dla macierzy, których elementy są ustalone [6, 7]. Dla dowolnych elementów macierzyta sama metoda pozwala sformułować algorytm inny niż dotychczas stosowane dla tegotypu zagadnień.Celem tej pracy jest opracowanie i napisanie programu komputerowego, który po-

zwoli zbadać własności numeryczne tej „metody analitycznej” na tle własności innychwybranych metod bezpośrednich i iteracyjnych.W rozdziale 2 przedstawiono krótko każdą z metod numerycznych zaimplementowa-

nych w programie. Podrozdział 2.1 zawiera opis pięciu podstawowych metod bezpośred-nich, czyli takich, które dają wynik po skończonej liczbie kroków algorytmu. W podroz-dziale 2.2 natomiast znajduje się opis zastosowanych metod iteracyjnych. Opis metod„analitycznych”, wraz z ich częściowym wyprowadzeniem na podstawie prac [7, 8] za-wiera podrozdział 2.3. Zdefiniowano w nim 6 wersji algorytmów numerycznych opartycho te metody.

3

Page 5: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rozdział 3 poświęcono na dokładniejszy opis środowiska obliczeniowego (zestawuprogramów komputerowych). Opis ten podzielono na trzy części. W części pierwszej(podrozdział 3.1) zawarty jest wykaz 22 programów obliczeniowych realizujących odwra-canie symetrycznej macierzy trójdiagonalnej. Podrozdział 3.2 przedstawia zastosowanew programie metody badania i porównywania dokładności obliczeń. Część trzecia, za-warta w podrozdziale 3.3, to opis możliwości programu, wyglądu poszczególnych okieni sposobu korzystania z dostępnych funkcji.Przeprowadzono także szereg testów numerycznych, a ich wyniki przedstawione są

w rozdziale 4. Znajduje się tam porównanie czasów wykonania poszczególnych algoryt-mów oraz porównanie dokładności wyników dla trzech przykładowych macierzy: Poisso-na, Hilberta oraz macierzy losowej.W podsumowaniu, znajdującym się w ostatnim rozdziale 5, zawarto wnioski z prze-

prowadzonych testów, ze szczególnym uwzględnieniem wniosków dotyczących metod„analitycznych”. Pracę zamyka spis ilustracji oraz lista pozycji cytowanej literatury.Do pracy dołączono też płytę CD zawierającą oprogramowanie w wersji wykonywalneji źródłowej wraz z programem instalacyjnym.

Page 6: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

2. Przegląd metod numerycznych

Rzeczywista symetryczna macierz trójdiagonalna stopniaN jest następującej postaci:

TN =

d1 e1e1 d2 e2

e2. . . . . .. . . . . . eN−2eN−2 dN−1 eN−1

eN−1 dN

. (2.1)

Macierz TN zawiera zawsze liczbę zer równą N2 − 3N + 2. Ze względu na symetrięwystarczy 2N − 1 liczb aby zapisać macierz TN w pamięci operacyjnej komputera.Macierz do niej odwrotna T−1N nie jest już w ogólności trójdiagonalna, czyli ma N

2 nie-zerowych elementów, a ze względu na symetrię można ją zapisać w pamięci przy pomocy(N2+N)/2 liczb. Algorytmy obliczające macierz odwrotną do macierzy trójdiagonalnejpowinny więc mieć złożoność obliczeniową nie mniejszą niż O(N2).W kolejnych podrozdziałach przedstawione są wybrane metody bezpośrednie i itera-

cyjne stosowane do obliczania macierzy odwrotnej do symetrycznej macierzy trójdiago-nalnej. Podrozdział 2.3 opisuje metodę analityczną, która pozwala wyprowadzać wzoryna poszczególne elementy macierzy T−1N . Z metody tej wynika bezpośrednio algorytmnumeryczny, który został także zaimplementowany w programie TIPS. Nazwa progra-mu TIPS to skrótowiec składający się z pierwszych liter nazwy angielskiej: TridiagonalInverse Problem Solver.

2.1. Metody bezpośrednie

2.1.1. Metoda wyznacznikowa

Elementy macierzy odwrotnej do macierzy kwadratowej A są postaci [9, 10]

(A−1

)ij= (−1)i+jMji

|A|, (2.2)

gdzie |A| jest wyznacznikiem macierzy A, a Mij jest minorem (N − 1) rzędu, czyliwyznacznikiem macierzy A po skreśleniu z niej i-tego wiersza i j-tej kolumny.

5

Page 7: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

W celu obliczenia wyznacznika macierzy (2.1), tworzymy ciąg wielomianów {pi(z)},tzw. ciąg Sturma [11]

p0(z) = 1p1(z) = d1pi(z) = (di − z)pi−1(z)− e2i−1pi−2(z), i = 2, ..., N.

(2.3)

Po (N − 1) krokach rekurencyjnych otrzymujemy wielomian pN (z), który jest wie-lomianem charakterystycznym macierzy TN , a szukany wyznacznik |TN | jest wyrazemwolnym tego wielomianu, czyli

|TN | = pN (0). (2.4)

Następnie obliczymy minor Mij macierzy TN . Jeśli skreślimy z macierzy trójdiago-nalnej (2.1) jeden wiersz i jedną kolumnę, to otrzymamy macierz blokowo-diagonalną(przykład na rysunku 2.1).

Rysunek 2.1. Minor M42 macierzy T6

Wyznacznik takiej macierzy jest iloczynem wyznaczników kwadratowych bloków sto-jących na przekątnej jeśli wszystkie elementy macierzy ponad (albo poniżej) tych blokówsą zerami [10]. Na tej samej zasadzie wyznacznik macierzy trójkątnej jest iloczynem jejelementów diagonalnych. W przypadku z rysunku 2.1 możemy zapisać

M42 = d1· e2e3· (d5d6 − e25).

Jeśli analogicznie do (2.3) zdefiniujemy ciąg {qj(z)} jakoqj(z) = (dj − z)qj+1(z)− e2jqj+2(z), j = N − 1, ..., 1qN (z) = dNqN+1(z) = 1

, (2.5)

to możemy zapisać

M42 = p2−1(0)

(4−1∏k=2

ek

)q4+1(0).

6

Page 8: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Ogólnie minor Mij ma postać

Mij =

pi−1(0)

j−i∏k=1

ej−k

qj+1(0) dla i < j,

pj−1(0)

i−j∏k=1

ej+k−1

qi+1(0) dla i > j.(2.6)

Podstawiając (2.6) i (2.4) do wzoru (2.2) otrzymujemy następujące wyrażenie na elementmacierzy odwrotnej do symetrycznej macierzy trójdiagonalnej:

(T−1N

)ij=(−1)i+j

pN (0)

pi−1(0)

j−i∏k=1

ej−k

qj+1(0) dla i < j,

pi−1(0) qj+1(0) dla i = j,

pj−1(0)

i−j∏k=1

ej+k−1

qi+1(0) dla i > j.(2.7)

Pamiętamy przy tym, że nasza macierz jest symetryczna, więc teoretycznie(T−1N

)ij=(

T−1N)ji, ale wyniki obliczeń numerycznych dla (i < j) i (i > j) mogą być różne.

Spodziewamy się, że także równość pN (0) = q1(0) będzie spełniona tylko ze skończonądokładnością. Podczas bezpośredniego obliczania wyznaczników może wystąpić przepeł-nienie [ang. floating point overflow]. W pozycji [1] na stronie 57 znajdziemy opis jakmożna się przed tym zabezpieczyć.

2.1.2. Metoda eliminacji Gaussa, rozkład LU

Metoda eliminacji Gaussa jest metodą rozwiązywania układów równań liniowychtypu

AX = B, (2.8)

gdzie macierz A jest macierzą układu, X macierzą rozwiązań, a B macierzą wektorówkolumnowych składających się z wyrazów wolnych odpowiednich równań. W metodzietej przeprowadza się na macierzy A układu i na wektorze (wektorach) prawej strony(kolumny macierzy B) operacje, które nie zmieniają rozwiązania układu X. Operacje tewykonuje się w celu sukcesywnego zerowania kolejnych elementów macierzy A poniżej(powyżej) jej głównej przekątnej aby otrzymać macierz trójkątną górną (dolną). Wyko-nuje się te operacje w takiej kolejności, żeby zera wygenerowane w poprzednich krokachpozostały zerami. Operacje, o których tutaj mowa, to zastępowanie wierszy (równań),przez nie trywialne kombinacje liniowe innych wierszy (równań). Kiedy już powstaniemacierz trójkątna górna (dolna) okazuje się, że współczynniki kolejnych kombinacji li-niowych układają się również w macierz trójkątną, ale dolną (górną).

7

Page 9: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Eliminacja Gaussa może być zatem wykorzystana do otrzymania tzw. rozkładu trój-kątnego macierzy

A = LU, (2.9)

gdzie macierz L jest trójkątna dolna [ang. lower], a macierz U – trójkątna górna [ang.upper]. Warunkiem istnienia rozkładu (2.9) jest niezerowość wszystkich tzw. minorówwiodących macierzy A [3]. Dla symetrycznej macierzy trójdiagonalnej można ten waru-nek zapisać przy użyciu notacji z (2.41) jako W1,j = 0, dla j = 2, ..., N .Kiedy znamy rozkład LU, rozwiązanie X równania (2.8) otrzymujemy w procesach

podstawiania, czyli rozwiązywania układów równań z macierzami trójkątnymi

LY = B, (2.10)

UX = Y. (2.11)

Standardowa eliminacja Gaussa nie oblicza rozkładu LU. Wykonuje ona jednocze-śnie te same operacje na macierzach A i B, nie musi więc zapamiętywać macierzy L,a macierz B przekształca się automatycznie w macierz Y i podstawianie (2.10) nie jestjuż potrzebne. Podstawianie (2.11) trzeba jednak na koniec wykonać.Faktycznie w procesie eliminacji Gaussa zerujemy tylko elementy poniżej albo po-

wyżej przekątnej macierzy A. Nic nie stoi na przeszkodzie, aby zerować jednocześnieelementy poniżej i powyżej tej przekątnej. Modyfikacja taka prowadzi do algorytmu eli-minacji Gaussa-Jordana. Nie trzeba już wykonywać ani (2.10), ani (2.11), bo macierzB przekształca się automatycznie w macierz rozwiązań X.Jeśli macierz B jest macierzą jednostkową B = I, to wcale nie trzeba jej pamiętać,

a wynik X = A−1 można zapisywać kolumna po kolumnie zamiast macierzy A (w tejsamej pamięci). W takim przypadku mówimy, że algorytm „pracuje w miejscu” (tzn.nadpisuje pamięć danych wynikami).Metoda eliminacji Gaussa byłaby dobrą metodą gdyby nie to, że jest niestabilna

numerycznie ze względu na możliwość wystąpienia zerowych, lub bardzo małych elemen-tów na przekątnej macierzy A [1, 2, 9]. Problem ten rozwiązuje się zauważając prostyfakt: przekątna nie musi być przekątną. Przestawiając odpowiednie wiersze macierzyA przenosimy problematyczne elementy diagonalne gdzie indziej. Przestawienie wierszyuzyskuje się mnożąc macierz lewostronnie przez tzw. macierz permutacji P. Rozkład LUnie jest już więc rozkładem macierzy A, ale macierzy PA

PA = LU (2.12)

Aby otrzymać wynik X, obliczamy najpierw Y przez podstawienie

LY = PB (2.13)

oraz stosujemy znane już podstawienie (2.11). Algorytm ten nazywany jest elimina-cją Gaussa z częściowym wyborem elementu głównego albo rozkładem PLU.Oczywiście macierzy P nie znamy a priori, gdyż powstaje ona podczas wykonywaniarozkładu. Rozkład PLU jest wykonalny dla macierzy A odwracalnej (nieosobliwej) [3].

8

Page 10: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

W rzadkich przypadkach, kiedy częściowy wybór elementu głównego nie jest wystar-czający proponuje się algorytm eliminacji Gaussa z pełnym wyborem elementugłównego. Polega on na tym, że wybieramy element Aij do zamiany z elementem dia-gonalnym Akk nie tylko spośród elementów i ­ j = k (wybór częściowy), ale spośródelementów i ­ k oraz j ­ k. Wiąże się to z koniecznością przestawiania nie tylko wierszy,ale także kolumn macierzy A. Przestawienie kolumn formalnie uzyskuje się mnożąc ma-cierz prawostronnie przez inną macierz permutacji P. Rozkład LU jest teraz rozkłademmacierzy PAP

PAP = LU. (2.14)

Aby otrzymać wynik X wykonujemy (2.13), a następnie

UZ = Y, (2.15)

X = PZ. (2.16)

Widzimy na podstawie (2.16), że przestawianie kolumn macierzy A powoduje przesta-wienie wierszy w uzyskanym przez nas wyniku. Rozkład LU z pełnym wyborem elementugłównego istnieje dla każdej macierzy kwadratowej [3].Kiedy macierz układu jest trójdiagonalna symetryczna A = T i nie wykonujemy

zamiany wierszy ani kolumn, to jej rozkład LU ma następującą postać [12]:d1 e1

e1. . . . . .. . . . . . eN−1eN−1 dN

=1

l1. . .. . . . . .lN−1 1

u1 e1. . . . . .. . . eN−1

uN

. (2.17)

Współczynniki {li} i {ui} dane są wzorem rekurencyjnym

u1 = d1;li = ei/uiui+1 = di+1 − liei

}i = 1, ..., N − 1. (2.18)

Ciąg {ui} pojawia się często gdy rozpatrujemy macierz trójdiagonalną (patrz wzór2.52). Macierz odwrotną obliczamy ze wzoru T−1 = U−1L−1. Można pokazać, że wyni-kiem jest następujący wzór na elementy macierzy odwrotnej

(T−1

)ij= (−1)i+j

N∑k=max(i,j)

1uk

k−1∏p=i

lp

k−1∏q=j

lq

. (2.19)

Widać stąd, że jeśli istnieje wyraz ciągu {ui} równy zero, to nie istnieje macierz odwrotna,czyli macierz T jest osobliwa. Problemy numeryczne pojawiają się wtedy, gdy {ui} jestbardzo małą liczbą, niekoniecznie dokładnie równą zero. Ten sam problem występujezawsze, gdy mamy do czynienia z ciągiem {ui}. Tutaj ratunkiem jest wybór elementugłównego. Przy częściowym wyborze mamy do dyspozycji tylko jeden wiersz ((k+1)-szy),który możemy zamienić z k-tym wierszem. Jeśli to zrobimy, macierz U będzie miała

9

Page 11: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

niezerowe elementy także na drugiej naddiagonali. W ten sposób działa podprogramDGTSV z biblioteki Lapack [13]. Pełnego wyboru elementu głównego zwykle się w tymwypadku nie wykonuje, gdyż zamiana kolumn psuje trójdiagonalną strukturę macierzy,a zapamiętanie nowej pozycji niezerowych elementów wymaga niepotrzebnie dodatkowejpamięci. Jeśli wybór częściowy się nie powiedzie, to już wiemy, że macierz jest osobliwai kończymy obliczenia.

2.1.3. Rozkład Cholesky’ego

Rozkład Cholesky’ego jest podobny do rozkładu LU, z tą różnicą, że macierz górnatrójkątna jest transpozycją macierzy dolnej trójkątnej, czyliU = LT . Rozkład ten możnazastosować tylko do macierzy, które są dodatnio określone [ang. positive definite], tzn.mają wszystkie wartości własne dodatnie [1, 2]. Macierze takie występują często w fizyce,gdyż są one reprezentacjami operatorów hermitowskich o rzeczywistych wartościach wła-snych (wartości te muszą być rzeczywiste, bo są wynikami pomiarów różnych wielkościfizycznych).Zapiszmy rozkład Cholesky’ego LLT dla symetrycznej macierzy trójdiagonalnej:d1 e1

e1. . . . . .. . . . . . eN−1eN−1 dN

=m1

l1. . .. . . . . .lN−1 mN

m1 l1

. . . . . .. . . lN−1mN

.(2.20)

Bezpośrednio z (2.20) otrzymujemy związki rekurencyjne pozwalające obliczyć współ-czynniki macierzy L:

m1 =√d1;

li = ei/mimi+1 =

√di+1 − l2i

}i = 1, ..., N − 1. (2.21)

Rozkład ten nie wymaga przestawiania wierszy ani kolumn, a sam algorytm jestpoprawny numerycznie [1]. Możemy także uniknąć obliczania pierwiastka kwadratowego

i zamiast rozkładu LLT obliczyć rozkład LDLT[1, 11], gdzie mi = 1 i D = diag(m2i ) =

diag(ui)

u1 = d1;li = ei/ui

ui+1 = di+1 −e2iui

i = 1, ..., N − 1. (2.22)

Ciągi {li} i {ui} z (2.22) to te same ciągi, co {li} i {ui} we wzorach (2.18). RozkładCholesky’ego jest zaimplementowany w podprogramie DPTSV biblioteki Lapack [13].Zauważmy, że w (2.22) elementy ciągu {ui} mogą być ujemne, co sugerowałoby, że roz-kład ten można wykonać także dla macierzy, które nie są dodatnio określone. Można, alealgorytm nie jest wtedy numerycznie poprawny, co oznacza, że błąd może być dowolnieduży nawet dla macierzy o małym wskaźniku uwarunkowania [1].

10

Page 12: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Obliczamy X, macierz odwrotną do symetrycznej macierzy trójdiagonalnej przy po-mocy rozkładu Cholesky’ego przez rozwiązanie trójkątnych układów równań LZ = Ioraz LTX = Z. Jeśli natomiast obliczymy rozkład T = LDLT , to macierz odwrotnąotrzymamy rozwiązując równania macierzowe LDZ = I oraz LTX = Z.

2.1.4. Rozkład QR

Rozkład T = QR, zwany rozkładem ortogonalno-trójkątnym jest zawsze wykonalnydla trójdiagonalnej macierzy symetrycznej [2, 11]. Macierz górna trójkątna R powstajew procesie tzw. dekompozycji, czyli po przeprowadzeniu (N−1) transformacji ortogonal-nych macierzyT. Każda z tych transformacji na wyzerować jeden element poddiagonalnymacierzy T.Transformacje, o których tutaj mowa to tzw. obroty Givensa. Mogą to być też inne

transformacje (np. odbicia Householdera albo zmodyfikowana ortogonalizacja Gramma--Schmidta), ale po ich zastosowaniu macierz R jest na ogół pełną macierzą trójkątną,podczas gdy (N − 1) obrotów Givensa prowadzi do macierzy trójkątnej z tylko dwie-ma naddiagonalami (2.25) (podobnie jak rozkład LU z częściowym wyborem elementugłównego). Pojedynczy i-ty obrót Givensa ma postać macierzy

GTi =

1. . .

ci si−si ci

. . .1

. (2.23)

Kąt obrotu ϕi jest tak dobrany, aby wyzerować element poddiagonalny ei, co prowadzido związków

cosϕi = ci =δi√δ2i + e

2i

, sinϕi = si =ei√δ2i + e

2i

, (2.24)

gdzie δi to element di już zmieniony przez poprzedni obrót GTi−1.Proces dekompozycji GTN−1 · · ·GT1T = QTT = R prowadzi do macierzy trójkątnej

R =

r1 q1 v1

r2 q2. . .

. . . . . . . . .. . . qN−2 vN−2rN−1 qN−1

rN

. (2.25)

Macierz odwrotną otrzymujemy rozwiązując równanie macierzowe RX = QT względemX, gdzieQT jest macierzą skumulowanych (tzn. pomnożonych przez siebie) transformacjiortogonalnych.

11

Page 13: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Z postaci (2.23) wnioskujemy, że macierzQT jest prawie trójkątna dolna (tylko pierw-sza naddiagonala jest niezerowa i zawiera wartości si). Jeśli w algorytmie dekompozycjiprzedstawionym w [11] na stronie 64 zamienimy kolejność obliczania wielkości pi+1 i qi,to w każdym kroku możemy wykonać o jedno mnożenie mniej. Po tych modyfikacjachalgorytm rozkładu QR symetrycznej macierzy trójdiagonalnej wraz z akumulacją trans-formacji ortogonalnych przedstawia się następująco:

QT = I{qi = vi = ei} i = 1, ..., N − 1p = d1

ri =√p2 + v2i , c = p/ri, s = vi/ri{

QTi+1,j = −sQTi,jQTi,j = cQ

Ti,j

}j = 1, ..., i

QTi,i+1 = s, QTi+1,i+1 = c

p = cdi+1 − sqi, qi = cqi + sdi+1if i ¬ N − 2 then vi = sqi+1, qi+1 = cqi+1

i = 1, ..., N − 1

rN = p.

(2.26)

2.1.5. Rozkład SVD

Rozkład SVD (Singular Value Decomposition) polega na zapisaniu dowolnej prosto-kątnej macierzy rzeczywistej A w postaci iloczynu

A = UΣVT , (2.27)

gdzie macierze U i V są ortogonalne, a macierz Σ jest diagonalna. Niezerowe elementymacierzy Σ to tzw. wartości szczególne macierzy A. Rozkład ten łatwo zastosować doobliczenia macierzy odwrotnej do macierzy A, gdyż

A−1 = VΣ−1UT . (2.28)

Jeśli macierz A nie jest kwadratowa, to macierz (2.28) nazywamy macierzą pseudoodw-rotną (znajduje ona zastosowanie w problemach minimalizacji funkcji metodą najmniej-szych kwadratów).Nowoczesne algorytmy służące do obliczania rozkładu SVD są dwuetapowe. Najpierw

przy pomocy transformacji ortogonalnych sprowadza się macierz A do postaci górnejmacierzy bidiagonalnej, a następnie oblicza się wartości i wektory szczególne tej macierzy.W przypadku symetrycznej macierzy trójdiagonalnej zastosowanie tej metody napo-

tyka na trudności związane z koniecznością zapamiętania pełnych macierzy zawierają-cych wektory szczególne oraz pomnożenia tych macierzy przez siebie. Z drugiej jednakstrony redukcja macierzy trójdiagonalnej do bidiagonalnej jest bardzo prosta i szybkaprzy pomocy obrotów Givensa, a obliczenie macierzy odwrotnej do macierzy diagonalnejΣ sprowadza się do obliczenia odwrotności jej elementów diagonalnych.

12

Page 14: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Proces redukcji dowolnej macierzy pasmowej do postaci górnej macierzy bidiagonal-nej wykonuje procedura DGBBRD z biblioteki Lapack [13], a obliczenie rozkładu SVDmożemy wykonać jedną z dwóch metod (również z biblioteki Lapack):• DBDSQR przeprowadza iterację metodą QR,• DBDSDC stosuje algorytm typu „dziel i rządź”.Druga z podanych tu metod wymaga więcej pamięci i powinna działać szybciej dla

dużych macierzy. Powodem, dla którego należy zwrócić uwagę na metodę SVD jest jejduża niezawodność [2]. Potrafi ona dawać bardzo dokładne wyniki nawet w przypadkumacierzy o wyznaczniku bliskim zeru (prawie osobliwych). Jeśli macierz będzie osobli-wa, to pojawią się wartości szczególne równe zero, jednak liczba niezerowych wartościszczególnych wciąż jest równa rzędowi macierzy wyjściowej.

2.2. Metody iteracyjne

Oprócz metod bezpośrednich (dających rozwiązanie po skończonej liczbie kroków)istnieje cała rodzina metod i algorytmów iteracyjnych służących do rozwiązywania ukła-dów równań liniowych. Iteracja polega na cyklicznym wykonywaniu tych samych operacjiw każdym kroku tak, aby wartości obliczone w poszczególnych krokach były zbieżne doposzukiwanego rozwiązania. Aby rozpocząć iterację potrzebna jest znajomość tzw. wek-tora początkowego x(0), który możemy wybrać dowolnie albo jako wcześniej obliczoneinną metodą rozwiązanie przybliżone (uwarunkowanie wstępne [ang. preconditioning]).Iteracja w i-tym kroku ma postać mnożenia niezmienionej macierzy A przez wektori dodania innego wektora [1, 2, 3]:

x(i+1) =Mx(i) +w. (2.29)

Główny koszt wykonania metody iteracyjnej związany jest z mnożeniem macierzyprzez wektor, które jest czasochłonne. Jeśli jednak macierz jest macierzą rzadką, tzn.liczba jej niezerowych elementów jest rzędu O(N), to mnożenie takie można wykonaćznacznie szybciej. Dzięki temu każda metoda iteracyjna potrafi skorzystać z faktu rzad-kości macierzy w przeciwieństwie do metod bezpośrednich, które trzeba specjalnie za-projektować, aby mogły skorzystać z tego samego faktu.Liczba pojedynczych operacji zmiennoprzecinkowych, które trzeba wykonać w meto-

dzie iteracyjnej jest niekiedy znacznie większa niż w metodzie bezpośredniej zastosowanejdla macierzy tych samych rozmiarów. Większe niebezpieczeństwo kumulacji pojedyn-czych błędów zaokrągleń nie martwi nas już jednak tak bardzo jak w przypadku metodbezpośrednich, ponieważ jeśli tylko metoda iteracyjna jest zbieżna, błędy wygenerowanew jednym kroku mogą zostać poprawione w kolejnych krokach. Dzieje się tak dlatego, żena każdym etapie iteracji istnieje stały i niezmienny czynnik: macierz iteracjiM. Podczasgdy algorytmy bezpośrednie manipulują wyrazami macierzy A, algorytmy iteracyjne razobliczoną na początku macierzM pozostawiają w niezmienionej postaci aż do końca obli-czeń. Tak działają stacjonarne metody iteracyjne, ale istnieją też metody niestacjonarne,w których zarówno macierzM, jak i wektor w mogą zmieniać się w kolejnych iteracjach(zmiany te są zwykle niewielkie i mają na celu przyspieszenie zbieżności metody).

13

Page 15: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Warunkiem koniecznym zbieżności metody iteracyjnej postaci (2.29) jest prosta za-leżność ‖M‖ < 1, gdzie ‖ · ‖ jest dowolną normą macierzy zgodną z normą wektorową.Warunek ten jest konieczny, ale nie zawsze wystarczający [1].Wystarczającym warunkiem jest aby promień spektralny macierzy iteracji M (naj-

większa co do modułu wartość własna M), spełniał [1, 3, 14]

ρ(M) = max1¬i¬N

|λi| < 1. (2.30)

Należy też zwrócić uwagę na fakt, że im mniejszy promień spektralny macierzy iteracjiM, tym szybsza zbieżność metody iteracyjnej [1, 3].Aby zastosować metodę iteracyjną rozwiązywania N równań liniowych postaci Ax =

b do odwracania macierzy A, będziemy uruchamiać daną metodę N razy obliczająckolejne kolumny macierzy odwrotnej przez podstawienie wektora ei = (0, ..., 0, ei =1, 0, ..., 0)T za wektor b. Wyjątkiem jest metoda Richardsona z [14], zaimplementowanaw taki sposób, że przeprowadza jednocześnie iterację wszystkich (nawet więcej niż N)kolumn macierzy B rozwiązując de facto równanie macierzowe AX = B. Przez podsta-wienie B = I otrzymamy X ≈ A−1.

2.2.1. Metoda Jacobiego

Najprostszą z metod iteracyjnych jest metoda Jacobiego. Polega ona na rozkładziemacierzy A na sumę macierzy wg wzoru

A = L+D+U, (2.31)

gdzie D jest macierzą diagonalną i zawiera elementy diagonalne macierzy A, a macierzeL i U są odpowiednio dolną i górną częścią macierzy A z zerami na głównej przekątnej.Po podstawieniu (2.31) do układu równań Ax = b proste przekształcenia prowadzą

do wzoru [1, 14]x = −D−1(L+U)x+D−1b. (2.32)

Porównując powyższy wzór z (2.29) mamy M = −D−1(L + U) oraz w = D−1b.Zbieżność metody Jacobiego wymaga, aby macierzM była nieredukowalna i diagonalniesłabo dominująca [1, 3]. Taka macierz jest też nieosobliwa.

2.2.2. Metoda Richardsona

Metoda ta również prowadzi do stałej macierzy iteracji M i stałego wektora w,a oparta jest na następujących przekształceniach [1, 3, 14]:

Ax = b,αAx = αb,

x+ αAx = x+ αb,x = x− αAx+ αb,x = (I− αA)x+ αb,M = I− αA,w = αb.

14

Page 16: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Łatwo pokazać [1], że jeśli macierz A jest symetryczna, to aby promień spektralnymacierzyM był mniejszy od jedności, wszystkie wartości własne macierzy A muszą byćtego samego znaku. Warunek ten spełnia symetryczna macierz dodatnio określona.Parametr α jest liczbą całkowitą dobraną tak, aby promień spektralny macierzy

M = I− αA był jak najmniejszy. Najmniejszą wartość promienia spektralnego równą

ρmin(M) =∣∣∣∣ λmax − λminλmax + λmin)

∣∣∣∣ (2.33)

otrzymuje się dla

α =2

λmax + λmin. (2.34)

Żeby móc skorzystać z tej metody, trzeba w naszym przypadku znać ekstremalne war-tości własne symetrycznej macierzy trójdiagonalnej T. Wiemy (np. z [9]), że wszystkiewartości własne macierzy dodatnio określonej zawarte są w przedziale (0, ‖T‖∞), gdzie‖ · ‖∞ to norma nieskończona macierzy, czyli maksymalna suma modułów w wierszu(patrz (3.3)). Jeśli nie chcemy szukać wartości własnych możemy spróbować zastąpićλmin przez 0, a λmax przez ‖T‖∞. Kiedy zbieżność metody wciąż nie jest zadowalają-ca, możemy spróbować wyznaczyć największą i najmniejszą wartość własną macierzytrójdiagonalnej przy pomocy stabilnej metody Martina-Deana opisanej w [11]. Okazujesię bowiem, że liczba ujemnych wyrazów w ciągu (2.52) równa jest liczbie ujemnychwartości własnych macierzy T. Wystarczy przesuwając widmo macierzy znaleźć takieprzesunięcie, w otoczeniu którego liczba ta „przeskakuje” o jeden i metoda bisekcji po-zwoli znaleźć przybliżenie jednej wybranej wartości własnej macierzy T (w tym wypadkudwóch: maksymalnej i minimalnej).

2.2.3. Metoda nadrelaksacji (SOR)

Metoda ta korzysta z obu powyższych pomysłów i jest jakby połączeniem metodyJacobiego z metodą Richardsona. W metodzie Jacobiego pomysłem był rozkład macierzyna sumę (2.31) i przeniesienie jednego z powstałych w ten sposób czynników na drugąstronę równania, a w metodzie Richardsona pomnożenie obu stron równania przez pewienparametr i dodanie do obu stron składnika zawierającego wektor x. W metodzie SORstosujemy oba te przekształcenia [1, 3, 14, 15]:

Ax = b,ω(L+D+U)x = ωb,

ωLx = −ωDx− ωUx+ ωb,Dx+ ωLx = Dx− ωDx− ωUx+ ωb,(D+ ωL)x = ((1− ω)D− ωU)x+ ωb,

x = (D+ ωL)−1((1− ω)D− ωU)x+ ω(D+ ωL)−1b,M = (D+ ωL)−1((1− ω)D− ωU),w = ω(D+ ωL)−1b.

Właściwy wybór wartości parametru ω jest trudny, ale niezwykle istotny, bo możeznacznie przyspieszyć zbieżność algorytmu [1, 15]. Wartość ω musi spełniać 0 < ω < 2,

15

Page 17: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

przy czym dla ω < 1 mówimy o podrelaksacji, a dla ω > 1 o nadrelaksacji. Kiedyparametr ω jest równy jeden, to metoda SOR sprowadza się do metody Gaussa-Seidela,która jest zbieżna dla tych samych warunków, co metoda Jacobiego (tylko jest zwyklezbieżna szybciej).Dla symetrycznej i dodatnio określonej macierzy trójdiagonalnej można wykazać, że

optymalna wartość parametru ω wyraża się przez

ω =2

1 +√1− λ2max

, (2.35)

gdzie λmax jest największą wartością własną macierzyM z iteracji Jacobiego, czyliM =−D−1(L+U).

2.2.4. Metoda Czebyszewa

Metoda Czebyszewa należy do niestacjonarnych metod iteracyjnych, czyli w każdymkroku iteracji, jej parametry zależą od poprzednich kroków. Wykorzystuje ona relacjerekurencyjne wielomianów Czebyszewa, aby uzależnić kolejne przybliżenie od dwóch po-przednich przybliżeń obliczonych w dwóch poprzednich krokach iteracji. Iteracja w me-todzie Czebyszewa ma postać [1]

r(i) = Ax(i), (2.36)

x(i+1) = x(i) + (p(i−1)(x(i) − x(i−1))− r(i))/q(i). (2.37)

Współczynniki p(i) i q(i) oblicza się ze wzorów [1]

c =a+ b2, d =

(b− a4

)2, q∗ =

a+ b+ 2√ab

4,

p(−1) = 0, q(0) = c, p(0) =2dc,

q(1) =a+ b4+ab

a+ b, γ(1) =

2√ab

a+ b

(d

q∗

),

p(i−1) =d

q(i−1), γ(i) =

p(i−1)γ(i−1)

q∗, q(i) = q∗ − γ(i). (2.38)

Parametry a i b to odpowiednio minimalna i maksymalna wartość własna macierzyT, albo (jeśli nie są one znane) przyjmuje się, że a = 0, a b = ‖T‖. Głównym kosz-tem metody Czebyszewa jest mnożenie macierzy przez wektor przy obliczaniu wektoraresidualnego r.

2.2.5. Metoda gradientów sprzężonych (CG)

Metoda gradientów sprzężonych, podobnie jak metoda Czebyszewa jest niestacjonar-ną metodą iteracyjną. Można ją zastosować do symetrycznej macierzy dodatnio określo-nej. Oparta jest na minimalizacji funkcji

f(x) =12x ·A · x− b · x (2.39)

16

Page 18: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

poprzez doprowadzanie jej gradientu ∇f = A · x− b do zera. Minimalizacja tej funkcjipolega na poszukiwaniu tzw. kierunku najszybszego spadku i na sukcesywnym poru-szaniu się w tym kierunku. W każdym kroku poszukuje się takiej wartości αi, któraminimalizuje wyrażenie f(x(i+1)), gdzie x(i+1) = x(i) + αip(i).Algorytm dla metody gradientów sprzężonych wykonuje w każdym kroku iteracji

jedno mnożenie macierzy A przez wektor i dwa iloczyny skalarne wektorów. Ta pro-stota jest przyczyną, dla której metoda CG jest taka popularna. Wystarczy pamiętaćtrzy wektory: przybliżone rozwiązanie x, resztę r i kierunek poszukiwań p. Łatwo teżudowodnić zbieżność iteracji CG zakładając, że obliczenia wykonywane są z nieskoń-czoną dokładnością [2]. Interpretacja wyników w arytmetyce zmiennoprzecinkowej jestjuż trudniejsza i skuteczność algorytmu CG w tym przypadku jest zadziwiająco duża.W teorii [2] jeśli macierz A ma N różnych wartości własnych, to iteracja CG (przynieskończonej precyzji obliczeń) osiąga minimum w co najwyżej N krokach. Mamy więcmetodę iteracyjną o cechach metody bezpośredniej, dla której zbieżność jest teoretyczniepewna po skończonej liczbie iteracji! Jeśli mnożenie wektora przez macierz można wyko-nać przy pomocy liczby operacji rzędu O(N), to sumaryczny koszt metody gradientówsprzężonych powinien być rzędu O(N2).Podstawową wersję algorytmu, którą opracowali Hestens i Stiefel, przytoczymy tutaj

za [2]. Tej samej wersji używa wykorzystana w programie TIPS procedura z [15]. Dlawartości początkowych x0 = 0, r0 = b i p0 = r0, n-ty krok iteracji ma postać

αn =rTn−1rn−1pTn−1Apn−1

nowa wartość parametru α

xn = xn−1 + αnpn−1 kolejne przybliżeniern = rn−1 + αnApn−1 reszta

βn =rTnrnrTn−1rn−1

nowa wartość parametru β

pn = rn + βnpn−1 nowy kierunek poszukiwań

(2.40)

2.3. Metody oparte o wzory analityczne

Metoda dla macierzy symetrycznej

Wróćmy do metody wyznacznikowej z podrozdziału 2.1.1. Obie rekurencje (2.3)i (2.5) obliczają wyznacznik macierzy TN , przy pomocy wyznaczników niższych stopni(nazwijmy je minorami diagonalnymi) stosując rozwinięcie Laplace’a [10] odpowied-nio względem ostatniego i pierwszego wiersza. Minory diagonalne, to takie wyznaczniki,których przekątna jest w całości zawarta w przekątnej macierzy TN .

17

Page 19: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Oznaczymy minory diagonalne rzędu j − i+ 1 jako

Wi,j =

∣∣∣∣∣∣∣∣∣∣∣∣

di eiei di+1 ei+1. . . . . . . . .

ej−2 dj−1 ej−1ej−1 dj

∣∣∣∣∣∣∣∣∣∣∣∣. (2.41)

Wzór (2.7) dla i < j (symetria macierzy T−1N ) zapisujemy krócej jako

(T−1N

)ij=(−1)i+j

W1,NW1,i−1

j−1∏k=i

ek

Wj+1,N . (2.42)

Stosunkowo łatwo wykazać indukcyjnie, że dla N ­ 1 i j = 1, ..., N zachodzij−1∏k=1

e2k

Wj+1,N =W1,j−1W2,N −W2,j−1W1,N , (2.43)

jeśli przyjmiemy, że dla i > j jest Wi,j = 2 − i + j. Gdy podstawimy Wj+1,N ze wzoru(2.43) do (2.42) otrzymujemy(

T−1N)ij=(−1)i+j

W1,NW1,i−1

W1,j−1W2,N −W2,j−1W1,N(∏i−1k=1 ek

) (∏j−1k=1 ek

) =

= (−1)i+j W1,i−1W1,j−1(∏i−1k=1 ek

) (∏j−1k=1 ek

) (W2,NW1,N

− W2,j−1W1,j−1

)=

=

((−1)i−1W1,i−1∏i−1

k=1 ek

)((−1)j−1W1,j−1∏j−1

k=1 ek

)((−1)jW2,j−1(−1)j−1W1,j−1

− (−1)N+1W2,N

(−1)NW1,N

). (2.44)

Definiujemy dwa nowe ciągi {pi} i {qj}:

pi =(−1)iW1,i∏ik=1 ek

, qj =(−1)j+1W2,j∏j

k=1 ek. (2.45)

Nie są to te same ciągi, co (2.3) i (2.5), gdzie dla odróżnienia pisaliśmy zawsze argumentwielomianu z. Dzięki (2.45) wzór (2.44) sprowadza się do prostej postaci

(T−1N

)ij= pi−1pj−1

(qj−1pj−1− qNpN

). (2.46)

Wzór (2.46) pochodzi z pracy [8], jednak metoda jego wyprowadzenia przedstawionatutaj jest bardziej oczywista. Ciągi (2.45) są w [8] zdefiniowane rekurencyjnie

eipi = −ei−1pi−2 − dipi−1, p0 = 1, p1 = −d1/e1,eiqi = −ei−1qi−2 − diqi−1, q0 = 0, q1 = 1/e1.

(2.47)

18

Page 20: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Korzyść, jaką uzyskujemy w stosunku do wzoru (2.7) polega na tym, że nie liczymyjuż bezpośrednio wartości minorów, które mogą być bardzo duże i powodować problemynumeryczne. Zamiast tego obliczamy rekurencyjnie według (2.47) elementy ciągów {pi}i {qj}, które mają mniejszą wartość bezwzględną dzięki iloczynom w mianownikach wzo-rów (2.45). Niestety te same iloczyny powodują, że wartości pN i qN potrzebne w (2.46)nie są dobrze określone (nie istnieje w macierzy wyraz eN ). Dobrze określony jest nato-miast ich iloraz qN/pN , ponieważ

(T−1N

)11= −qN/pN . Wartości pN i qN nie otrzymamy

z ciągów (2.47), więc musimy obliczyć(T−1N

)11inną metodą i zamiast z (2.46) skorzystać

z następującego wzoru (T−1N

)ij= pi−1

(qj−1 + pj−1

(T−1N

)11

). (2.48)

Ciąg {qj(0)} (2.5) obliczany jest od końca (tzn. dla j = N−1, ..., 1) w przeciwieństwiedo ciągu {pi(0)} (2.3), który liczymy od początku (tzn. dla i = 2, ..., N). Natomiast ciągi{pi} i {qj} (2.47) można obliczać jednocześnie, w jednej pętli, w miarę czytania kolejnychwartości {di} i {ei}. Dzięki temu można ponownie wykorzystać pamięć przeznaczoną namacierz TN .Liniowe rekurencje drugiego rzędu (2.47) pozwalają wyznaczać kolejny wyraz każdego

z ciągów przy pomocy dwóch poprzednich wyrazów tego samego ciągu (metoda 1A). Takjednak być nie musi. W pracy [8] znajdujemy także łatwy do udowodnienia indukcyjniezwiązek

ei(pi−1qi − piqi−1) = 1, dla i ­ 1. (2.49)

Jeśli teraz najpierw obliczymy pi, to qi możemy wyznaczyć z (2.49) nie używającjawnie wyrazu qi−2 (metoda 1B). Podobnie jeśli najpierw obliczymy qi, to pi możemywyznaczyć nie używając pi−2 (metoda 1C). Daje to dwie alternatywne w stosunku do(2.47) metody obliczania ciągów {pi} i {qj}, które choć równoważne matematycznie,mogą nie być równoważne numerycznie.Do skorzystania z metod 1A, 1B i 1C opartych o wzór (2.48) musimy poznać wartość

pierwszego elementu diagonalnego macierzy odwrotnej. W pracy [8] podaje się odpo-wiedni wzór w postaci ułamka łańcuchowego (ciągłego)

(T−1N

)11=

1

d1 −e21

d2 −e22

· · · − · · ·...

e2N−2

dN−1 −e2N−1dN

. (2.50)

Obliczenie wzoru (2.50) sprowadza się do obliczenia odwrotności wyrazu v1 ciągu(2.53).

19

Page 21: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Metoda dla macierzy diagonalnie dominującej

Wyprowadzona i udowodniona w pracy [7] metoda obliczania wyrazów macierzyodwrotnej dotyczy macierzy trójdiagonalnej, która jest diagonalnie dominująca (tzn.|di| > |ei−1| + |ei|), ale niekoniecznie symetryczna. Zastosowana jednak do macierzysymetrycznej, po przyjęciu oznaczeń z (2.1), (2.3) i (2.5) ma następującą postać:

(T−1N

)ij=

−eipi−1(0)pi(0)

(T−1N

)i+1,j

i < j(dj − e2j−1

pj−2(0)pj−1(0)

− e2jqj+2(0)qj+1(0)

)−1i = j

−ei−1qi+1(0)qi(0)

(T−1N

)i−1,j

i > j

. (2.51)

Ze wzoru (2.51) wynika, że jeśli najpierw obliczymy wyrazy diagonalne macierzyT−1N ,to pozostałe wyrazy łatwo wyznaczyć, bo są one od siebie nawzajem zależne! Minoryz ciągów {pi(0)} i {qi(0)} wchodzą do wzoru (2.51) zawsze w postaci ilorazów dwóchkolejnych minorów z tych samych ciągów.Można zatem zdefiniować pomocnicze ciągi w następujący sposób:

u1 = d1, ui =pi(0)pi−1(0)

= di −e2i−1ui−1, i = 2, ..., N ; (2.52)

vN = dN , vj =qj(0)qj+1(0)

= dj −e2jvj+1, j = N − 1, ..., 1. (2.53)

Ciąg (2.52) jest znany i szeroko stosowany w zagadnieniach własnych z symetrycznąmacierzą trójdiagonalną [11], ponieważ są to kolejne wyrazy diagonalne macierzy Dz rozkładu TN = LDLT (porównaj z (2.18) i (2.22)).Dzięki (2.52) i (2.53) możemy uprościć (2.51) do postaci

(T−1N

)ij=

− eiui

(T−1N

)i+1,j

i < j(uj −

e2jvj+1

)−1i = j

−ei−1vi

(T−1N

)i−1,j

i > j

. (2.54)

Wzór (2.54) można obliczać na trzy sposoby. Metoda 2A polegać będzie na tym, żenajpierw obliczymy {vj}, a potem

(T−1N

)iijednocześnie zapamiętując {ei/ui} w pamięci

poprzednio zajętej przez {ei}. Wyrazy niediagonalne obliczymy ostatecznie ze wzoru(2.54) dla i < j. Metoda 2B polegać będzie na tym, że najpierw obliczymy {ui}, a potem(T−1N

)jjjednocześnie zapamiętując {ej/vj+1} w pamięci poprzednio zajętej przez {ej}.

Wyrazy niediagonalne obliczymy ostatecznie ze wzoru (2.54) dla i > j. Metoda 2Cpolegać będzie na tym, że najpierw obliczymy {ui}, potem osobno {vj}, dalej

(T−1N

)ii,

20

Page 22: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

a wyrazy niediagonalne macierzy odwrotnej obliczymy korzystając z obu wzorów (2.54)odpowiednio dla i < j oraz i > j.Problemem może wydawać się obliczenie ostatniego wyrazu diagonalnego macierzy

odwrotnej ze wzoru (2.54), gdyż znów mamy tam nie istniejący wyraz eN . Tutaj jednak,w przeciwieństwie do (2.45), wystarczy przyjąć za [7], że eN = 0, a wtedy

(T−1N

)NN=

u−1N =W1,N−1/W1,N . Widać przy tym podobieństwo do wzoru (2.44), z którego wynika(T−1N

)11=W2,N/W1,N . Obydwa te wzory wynikają też w oczywisty sposób bezpośrednio

z (2.2).

Page 23: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

3. Opis środowiska obliczeniowego (ProgramTIPS)

3.1. Źródła danych i algorytmów

Środowisko TIPS (Tridiagonal Inverse Problem Solver) służy do wyznaczania ma-cierzy odwrotnej do symetrycznej macierzy trójdiagonalnej. Przeznaczone jest ono dlawszystkich systemów operacyjnych rodziny Windows R©, chociaż dostępne kody źródłowepozwalają na osobną kompilację środowiska w innym systemie operacyjnym.Składa się z aplikacji głównej (tips.exe), programu losującego macierze trójdiago-

nalne (h matgen.exe), programu sprawdzającego poprawność wyniku (h tester.exe) orazszeregu osobnych programów obliczających macierz odwrotną.TIPS jest aplikacją napisaną i skompilowaną przy pomocy pakietu Delphi 5, a po-

zostałe programy napisano w języku Fortran i skompilowano przy pomocy środowiskaForce w wersji 2.0.8 i dostępnego wraz z nim kompilatora G77 w wersji 0.5.25 z dodat-kowymi programami pakietu binutils w wersji 2.15.91. Niektóre programy skompilowanoz fragmentami bibliotek LAPACK 3 oraz BLAS, które nie są do nich dołączone w postaciźródłowej. Wykorzystano także bibliotekę Portable Network Graphics Delphi w wersji1.564 napisaną przez Gustavo Daud ([email protected]) i dostępną za darmopod adresem http://pngdelphi.sourceforge.net.Wszystkie programy obliczeniowe wymienione są w pliku konfiguracyjnym tips.ini.

Plik ten użytkownik może dowolnie modyfikować, tzn. dodawać własne programy obli-czeniowe pod warunkiem, że przestrzegają one reguł dotyczących nazewnictwa plikówwejściowych, wyjściowych oraz formatu i kolejności danych w tych plikach. Dokładnyopis tego interfejsu programistycznego, a także innych możliwości środowiska zawartyjest osobno w pomocy do programu TIPS i nie jest tutaj przedstawiony szczegółowo.Dane dla programu TIPS to macierze trójdiagonalne oraz dodatkowe parametry je-

śli wybrany algorytm numeryczny ich wymaga (np. tolerancje dla kryteriów zbieżno-ści, maksymalna dozwolona liczba iteracji itp.). Macierze mogą być wylosowane przezprogram TIPS (a dokładnie przez podprogram h matgen.exe), dostarczone z zewnątrzw postaci plików tekstowych, albo obliczone przez TIPS na podstawie zadanego wzoru(osobne wzory dla elementów diagonalnych i pozadiagonalnych).Obliczenia wzorów w programie TIPS wykonywane są w rozszerzonej precyzji (80

bitów), a następnie zaokrąglane do podwójnej precyzji (64 bity). Aby zachować mak-simum kompatybilności z innymi językami programowania wszelkie dane przekazywanesą między programami środowiska TIPS poprzez pliki tekstowe. Programy obliczenioweotrzymują dane podwójnej precyzji (17 dziesiętnych cyfr znaczących), wykonują oblicze-

22

Page 24: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

nia w podwójnej precyzji i przekazują wyniki (tj. macierz odwrotną, czas obliczeń mie-rzony w jednostkach 1/1000 sekundy oraz ewentualne błędy) do programu testującego,który przeprowadza czasochłonne mnożenie macierzy, oblicza wybrane błędy numerycz-ne (również w podwójnej precyzji) i umieszcza je w wielokolumnowym pliku tekstowym.Plik ten może być potem czytany przez program TIPS, który rysuje dwuwymiarowewykresy wybranych testów (dowolne zależności między kolumnami pliku wynikowego).Program TIPS (h matgen.exe) może generować symetryczne macierze trójdiagonalne

przy pomocy generatora pseudolosowego z [9]. Macierz tą można też uczynić diagonalniedominującą lub dodatnio określoną.Algorytmy dla metod iteracyjnych zaczerpnięto z [15]. Wyjątki są dwa. Implementa-

cja metody Czebyszewa oparta jest w całości na [1]. Implementacja metody Richardsonazawarta w [14], została dostosowana do konwencji używanych w pozostałych programachnapisanych w języku Fortran i może służyć także jako przykład takiego dostosowania.W wielu programach obliczeniowych korzystam także z biblioteki Lapack [13], z którejpochodzą też w całości algorytmy obliczania rozkładów SVD (2 wersje), LDLT orazLU z częściowym wyborem elementu głównego. Eliminacja Gaussa-Jordana opiera sięna podprogramie gaussj z [5]. Rozkład QR jest nieco zmodyfikowanym algorytmemdekompozycji z [11]. Pozostałe metody, tj. wyznacznikowa i różne metody ”analityczne”(w 6 wersjach) oparte są na wzorach zawartych i częściowo wyprowadzonych w tej pra-cy. Ich implementacja i przetestowanie były inspirowane wynikami prac [7, 8] oraz [6].Kompletny spis dołączonych do programu TIPS programów obliczeniowych (ich nazwyzaczynają się od p ) zawarty jest w tabeli na następnej stronie.

23

Page 25: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Program Metoda Źródło/Wzory

p wyzn.exe wyznacznikowa (2.3, 2.5, 2.7)p gauss.exe eliminacja Gaussa / rozkład

LUDGTSV [13] ze zmiana-mi

p dgtsv.exe eliminacja Gaussa z wyboremelementu głównego / rozkładLU

DGTSV [13]

p gsjor.exe eliminacja Gaussa-Jordana oparta na gaussj [5]p llt1.exe rozkład LLT (2.21)p dptsv.exe rozkład LDLT DPTSV [13]p qr1.exe rozkład QR (2.26), oparta na [11]p svd1.exe rozkład SVD / metoda QR DGBBRD, DBDSQR

[13]p svd2.exe rozkład SVD / metoda „dziel

i rządź”DGBBRD, DBDSDC[13]

p alg1.exe „analityczna” 1A (2.47), (2.48), (2.53), [8]p alg2.exe „analityczna” 1B (2.47), (2.48), (2.53),

(2.49), [8]p alg3.exe „analityczna” 1C (2.47), (2.48), (2.53),

(2.49), [8]p alg4.exe „analityczna” 2A (2.52), (2.53), (2.54), [7]p alg5.exe „analityczna” 2B (2.52), (2.53), (2.54), [7]p alg6.exe „analityczna” 2C (2.52), (2.53), (2.54), [7]p jacobi.exe Jacobiego JacobiREVCOM[15]p richar.exe Richardsona msSolveRichardson [14]p gseid.exe Gaussa-Seidla SORREVCOM [15]p sor.exe nadrelaksacji SOR SORREVCOM [15]p cgrad1.exe gradientów sprzężonych (bez

uwarunkowania wstępnego)CGREVCOM [15]

p cgrad2.exe gradientów sprzężonych(diagonalne uwarunkowaniewstępne)

CGREVCOM [15]

p cheby2.exe Czebyszewa (2.38) [1]

3.2. Ocena dokładności obliczeń

Numeryczne obliczenie macierzy odwrotnej do macierzy trójdiagonalnej T jest rów-noważne rozwiązaniu układu równań macierzowych

TX = I, (3.1)

24

Page 26: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

gdzie X ≈ T−1. Dokładność wyznaczenia macierzy X możemy sprawdzać obliczającreszty [4]

XT− I reszta lewostronna [ang. left residual],TX− I reszta prawostronna [ang. right residual].

(3.2)

Z definicji macierzy odwrotnej wynika przemienność mnożenia A−1A = AA−1 = I[10]. Ponieważ macierz T jest symetryczna, to spodziewamy się, że reszty (3.2) będąjednakowe, jeśli tylko obliczona przybliżona macierz X także będzie symetryczna. Pa-miętajmy jednak, że w trakcie mnożenia macierzy wykonujemy także dodawanie, a tonie jest przemienne w sensie numerycznym i podczas dodawania bliskich siebie liczbprzeciwnych mogą wystąpić duże błędy obcięcia [ang. cancelation].Nie możemy bezpośrednio obliczyć tzw. błędu bieżącego [ang. forward error] T−1−X,

bo nie znamy dokładnej wartości T−1. Czasem bada się algorytmy numeryczne wyko-nując obliczenia w większej precyzji, a następnie zaokrągla się uzyskiwane wyniki sy-mulując w ten sposób arytmetykę zmiennoprzecinkową o mniejszej precyzji. W takichkontrolowanych warunkach uprawnione jest potraktowanie wyników dokładniejszych ja-ko prawdziwe i oszacowanie przy ich pomocy błędu bieżącego [4].W programie TIPS także możemy dysponować dokładniejszym rozwiązaniem korzy-

stając z procedury DGTRFS z biblioteki Lapack [13]. Procedura ta stosuje metodę itera-cyjnego udokładniania [ang. refinement] rozwiązania, która nie tylko pozwala polepszyćdokładność wyniku uzyskanego każdą inną metodą, ale także udostępnia oszacowaniabłędu bieżącego FERR i wstecznego błędu komponentowego BERR. Opis definicji i do-kładnego sposobu obliczania tych błędów znajdziemy w [13].Reszty (3.2) są macierzami i porównywać je można w sensie dowolnej normy (przez

równoważność norm [1, 2, 13]) albo komponentowo [2, 4]. Dalej (podobnie jak w [13])jako normy macierzy będziemy używali normy ‖·‖∞ (tzw. normy nieskończonej, zwanejteż wierszową)

‖A‖∞ = max1¬i¬N

N∑j=1

|Aij |. (3.3)

Jest ona najmniejszą znaną normą macierzową, bo zachodzą związki [13]

‖A‖∞ ¬ N ‖A‖1 oraz ‖A‖∞ ¬√N ‖A‖2 ¬

√N ‖A‖F . (3.4)

Program TIPS może obliczać także pozostałe normy z (3.4):

• normę kolumnową (normę jeden) ‖A‖1 = max1¬j¬N

N∑i=1

|Aij |,

• normę spektralną (normę dwa) ‖A‖2 = maxx6=0‖Ax‖‖x‖

= σmax(A),

• normę Frobeniusa ‖A‖F =√∑ij

|Aij |2.

Norma spektralna wyznaczana jest jako maksymalna wartość szczególna macierzy,która jest szacowana przez pierwiastek kwadratowy z maksymalnej wartości własnejsymetrycznej, dodatnio określonej macierzy ATA. Specjalnie do znalezienia tej wartości

25

Page 27: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

własnej zaimplementowano w programie (h tester.exe) metodę potęgową [1, 11, 14]. Ob-liczenia te mogą być czasochłonne, dlatego w programie TIPS są domyślnie wyłączone.Program TIPS oblicza lewo- i prawostronne błędy względne

LERR :=‖XT− I‖∞‖T‖∞‖X‖∞

, (3.5)

PERR :=‖TX− I‖∞‖T‖∞‖X‖∞

, (3.6)

oraz błędy względne komponentowe (lewo- i prawostronne)

CLERR := min{ε : ∀ij |(XT− I)ij | ¬ ε|Tij ||Xij |}, (3.7)

CPERR := min{ε : ∀ij |(TX− I)ij | ¬ ε|Tij ||Xij |}. (3.8)

Wzory (3.7) i (3.8) wymagają wyjaśnienia. Nazwa „komponentowy” przyjęła się z ję-zyka angielskiego. Komponent to po prostu element lub wyraz macierzy. Dla każdegoelementu i-tego wiersza i j-tej kolumny macierzy liczymy iloraz

|Rij ||Tij ||Xij |

,

a błąd względny komponentowy definiuje się jako największy z tych ilorazów. Powyż-sza macierz R jest macierzą reszty lewo- albo prawostronnej (3.2). Problem polega natym, że nie policzymy tego ilorazu jeśli elementy Tij lub Xij są równe zero. Dlategowłaśnie zamiast ilorazów we wzorach (3.7) i (3.8) mamy iloczyny. Myląca jest funkcjaminimum występująca w tych wzorach, gdyż kwantyfikator ∀ (dla każdego) niejako za-mienia ją w maksimum. Jeśli dla pewnego elementu macierzy zdarzy się przypadkiem, żeRij = Tij = Xij = 0, to jedyne możliwe ε wynosi zero, ale kwantyfikator ∀ mówi nam, żemusiałoby tak być dla każdego elementu macierzy, więc takie przypadkowe zero zostaniezignorowane (tzn. nie będzie stanowiło minimum). Błąd komponentowy jest narzędziem,które nie tylko pozwala zignorować przypadkowe zera (w tym przypadku norma byłabypo prostu mniejsza i wynik wydawałby się dokładniejszy niż jest w rzeczywistości), alecelowo ignorować zera, które nie są przypadkowe. Dlatego błędy komponentowe (3.7)i (3.8) mają przewagę nad błędami w sensie normy. Mogą one być duże podczas gdy błę-dy w sensie normy pozostają bardzo małe. Błędy komponentowe pozwalają oszacowaćmaksymalne zaburzenie, jakie może zaistnieć po zastosowaniu danego algorytmu, a nieogólny wpływ tych zaburzeń na normę. W przypadku macierzy rzadkiej jaką jest naprzykład macierz trójdiagonalna, nie interesuje nas wpływ zaburzeń zerowych wyrazówna wynik, bo w żadnej praktycznej sytuacji takie zaburzenie nie wystąpi (tych wyrazówpo prostu nie ma). Gdy obliczamy błędy w sensie normy, to poprzez uśrednianie (li-czymy przecież sumy modułów) uwzględniamy takie zaburzenia, natomiast licząc błędykomponentowe nie bierzemy niejawnie pod uwagę zaburzeń wyrazów macierzy równychzero z definicji.

26

Page 28: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

3.3. Interfejs użytkownika

3.3.1. Informacje podstawowe

Główne okno programu TIPS po uruchomieniu wygląda tak:

Rysunek 3.1. Wygląd okna głównego programu TIPS

Przed uruchomieniem obliczeń (F9) należy ustawić opcje obliczeń. Opcje te podzie-lone są tematycznie na trzy zakładki:Macierze— opcje dotyczące macierzy i odpowie-dzialne za dostarczenie danych dla algorytmów numerycznych, Algorytmy i wyniki— opcje dotyczące algorytmów numerycznych i sposobu zapisania obliczonych macie-rzy na dysku, Testy i wykresy — opcje dotyczące wyboru przeprowadzanych testówi wykresów przedstawiających wyniki tych testów.

27

Page 29: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

3.3.2. Zapis i odczyt opcji obliczeń

Zapis opcji odbywa się po naciśnięciu F5 albo przycisku ’Zapisz’ w górnej części oknaTIPS. Opcje zapisywane są domyślnie do plików tekstowych z rozszerzeniem ’.tips’, któ-re zostają związane z programem TIPS przy jego instalacji. Po podwójnym kliknięciupliku z rozszerzeniem ’.tips’ w oknie Eksploratora Windows R© otwiera się program TIPSz opcjami już wczytanymi z tego pliku. Opcją jest wszystko to, co ustawiamy w okniegłównym TIPS na trzech zakładkach. Opcjami obliczeń nie są więc wykresy i parametryich wyświetlania ani też parametry zapisu wyników do plików i nie są one zapisywa-ne w plikach z rozszerzeniem ’.tips’. Dodatkowe parametry metod obliczeniowych sązapisywane do plików ’.tips’. Ustawione opcje można przywrócić do ustawień domyśl-nych (początkowych) przez naciśnięcie F4 albo przycisku ’Nowy’ w górnej części oknaTIPS. Opcje początkowe nie pozwalają na natychmiastowe uruchomienie obliczeń, gdyżkonieczne minimum stanowi wybranie algorytmu, typu macierzy i sposobu dostępu dodanych (czy i jak są losowane, czy są wczytywane z pliku, czy są obliczane ze wzoru).Wcześniej zapisane opcje można wczytać do programu TIPS naciskając F3 albo przycisk’Otwórz’ w górnej części okna TIPS.

3.3.3. Zakładka „Macierze”

Określanie rodzaju macierzy

Rodzaj macierzy określa w polu wyboru z rysunku 3.3. Macierz dowolna symetrycznapowstaje po prostu przez wylosowanie liczb z podanego rozkładu. Wybranie macierzydiagonalnie dominującej powoduje, że najpierw odbywa się losowanie macierzy dowol-nej symetrycznej z rozkładu jednostajnego (di ∈ (dod,ddo), ei ∈ (eod, edo)), a potemwylosowane elementy są przeliczane według wzoru z rysunku 3.4.Macierz dodatnio określona jest tworzona przez mnożenie macierzy bidiagonalnej

dolnej przez jej transpozycję (odwrócenie rozkładu LLT ). Liczone są wartości własnedanej macierzy przy pomocy procedury DSTEQR z biblioteki Lapack [13]. Jeśli oka-że się, że wygenerowana macierz posiada jednak wartości własne ujemne, to widmotej macierzy jest przesuwane o podwojoną wartość bezwzględną najmniejszej (ujemnej)wartości własnej.

28

Page 30: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 3.2. Wygląd zakładki „Macierze”

Rysunek 3.3. Rodzaje macierzy do wyboru

29

Page 31: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 3.4. Wzory do przekształcenia macierzy w macierz diagonalnie dominującą

Wybranie numerów K macierzy

Program TIPS może wykonywać wiele obliczeń macierzy odwrotnych przy jednymuruchomieniu. Każde takie obliczenie ma swój numer oznaczony przez liczbę K. NumeruK można używać w polach edycyjnych we wzorach aby zmieniać wartości parametróww kolejnych obliczeniach. Określany jest numer K minimalny i maksymalny. Podczasobliczeń numery K zmieniają się co jeden od najmniejszego, do największego.

Wybranie rozmiarów N macierzy

Przy każdym obliczeniu, razem z nowym K, można zmienić rozmiar macierzy. Wy-starczy wpisać wzór, zawierający K. Rozmiary macierzy N mogą się zmieniać od 1 do1000.

Określanie parametru ISEED

Parametr ISEED oznacza liczbę całkowitą, użytą do zainicjalizowania generatoraliczb pseudolosowych. Są dwie osobne wartości ISEED: jedna dla elementów diago-nalnych, a druga dla elementów pozadiagonalnych macierzy trójdiagonalnej. Jeśli niepodamy żadnej wartości, to generator zostanie zainicjalizowany liczbą wybraną (takżewylosowaną) przez program TIPS. Określenie parametru ISEED nie jest więc potrzebnejeśli chcemy wykonywać kolejne obliczenia dla innych losowych macierzy. Jeśli jednakpodamy jakąś wartość dla ISEED, to będzie ona ustawiana przed każdym obliczeniem(dla każdego K), więc generowane za każdym razem macierze będą takie same (chyba żewzrośnie ich rozmiar, ale wtedy będą się różnić tylko ostatnimi elementami). Określenieniezerowego parametru ISEED umożliwia też uruchomienie różnych algorytmów dla tejsamej macierzy losowej.

Parametry rozkładów

Jak widać na rysunku 3.2 dla rozkładu jednostajnego mamy dwa parametry od i do,które wyznaczają przedział losowanych wartości. Rozkład Gaussa ma także dwa para-metry: wartość średnią m i odchylenie standardowe od średniej σ. Liczby losowane sąprzy pomocy generatorów pseudolosowych z książki [9].

30

Page 32: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Macierze o elementach obliczonych ze wzoru

Zamiast losować macierze, można pozwolić programowi TIPS obliczyć ich elementyz podanego przez nas wzoru. We wzorze tym możemy użyć czterech zmiennych: K, N , Ioraz RAND. Zmienna I przyjmuje wartości od 1 do N i zmienia się dla każdego elementudiagonali (dla elementów nad- i poddiagonali maksymalna wartość to oczywiście N −1).Zmienna RAND przyjmuje wartość losową o rozkładzie jednostajnym na przedziale(0, 1). Jej pseudolosowość także jest kontrolowana przez parametr ISEED. Podanie tejsamej wartości ISEED generuje te same ciągi liczb. Przy wprowadzaniu wzoru nie możnapodać parametru ISEED. Żeby podać parametr ISEED, trzeba wybrać macierz losową,wpisać wartość ISEED dla di albo ei i powrócić do wyboru opcji „wg wzoru”.

Macierze wczytane z plików

Macierz może zostać wczytana z pliku tekstowego. Należy podać osobne pliki dlaelementów diagonalnych i pozadiagonalnych. Nazwa pliku może zmieniać się wraz z nu-merem K. Sekwencja %K% wstawia do nazwy wartość K jako tekst. Jeśli chcemy, abywstawiona wartość K miała stałą liczbę cyfr (zera z lewej strony), to np. dla wartości4-cyfrowej wpisujemy %000K% (trzy zera przed K). Pliki o podanych nazwach powinnysię znajdować w katalogu z programami obliczeniowymi (domyślnie to podkatalog „prg”katalogu, w którym zainstalowano program TIPS).

3.3.4. Zakładka „Algorytmy i wyniki”

Wybranie algorytmu

Algorytm wybiera się w polu wyboru zatytułowanym ’Algorytm’. Na rysunku 3.6przedstawiona jest lista dostępnych do wybrania algorytmów.

Dodatkowe parametry dla metody (algorytmu)

Jeśli wybrany algorytm potrzebuje dodatkowych parametrów, to pod oknem wybo-ru algorytmu pojawia się arkusz z nazwami parametrów dodatkowych dla wybranegoalgorytmu i ich domyślnymi wartościami. Wartości te można zmieniać. Zmiany te są za-pisywane w plikach z rozszerzeniem ’.tips’ po naciśnięciu przycisku ’Zapisz’ albo klawiszaF5.

Przycisk i okno „Opcje wyników”

Przycisk ten pokazuje okno „Opcje wyników” z rysunku 3.7. Opcje te są opcjamiprogramu TIPS i nie są zapisywane razem z innymi opcjami w plikach z rozszerzeniem’.tips’. Dane (symetryczna macierz trójdiagonalna) znajdują się w plikach fort.8 i fort.9,a wyniki (macierz odwrotna do symetrycznej macierzy trójdiagonalnej) w pliku fort.10.Jeśli jednak obliczenia są powtarzane dla różnych wartości K, to dane z tych plikówsą utracone, a dostępne są tylko te, które powstały dla największego (ostatniego) K.Aby temu zapobiec i aby umożliwić zgromadzenie wszystkich danych i wyników z danejsekwencji obliczeń (dla różnych K) na dysku, program h tester.exe zapisuje wyniki do

31

Page 33: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 3.5. Zakładka „Algorytmy i wyniki”

32

Page 34: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 3.6. Lista dostępnych do wyboru algorytmów

Rysunek 3.7. Okno „Opcje wyników”

33

Page 35: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

plików fort.18, fort.19 i fort.21, które mogą być następnie przeniesione do dowolnegoinnego katalogu pod dowolną inną nazwą. Po drodze przeprowadzane są transformacjedanych i wyników do wybranego formatu. Format liczb się nie zmienia, ale zmienia sięich ułożenie w pliku. Wyboru można dokonać między formatami dla danych (rysunek3.8) i dla wyników (rysunek 3.9). Jak widać można zrezygnować z zapisu całkowicie,a nawet usuwać pliki o pasujących nazwach nie zastępując ich nowymi plikami.

Rysunek 3.8. Opcje zapisu pliku(-ów) z macierzą trójdiagonalną

Rysunek 3.9. Opcje zapisu pliku z macierzą odwrotną

Reguły nazewnictwa plików

Jeśli wybrano format zapisu danych w osobnych plikach, to w polu edycyjnym ’Plikimacierzy trójdiagonalnych’ należy podać dwie nazwy oddzielone przecinkiem. W na-zwach można używać wartości zmiennych K i N zamienionych na tekst. Sekwencja %K%wstawia do nazwy wartość zmiennej K, a sekwencja %N% wstawia wartość N. Jeślichcemy, aby wstawiona wartość miała stałą liczbę cyfr (zera z lewej strony), to np. dlawartości 4-cyfrowej wpisujemy %000K% (trzy zera przed K). Tak samo można wstawićzmienną N, czyli rozmiar macierzy. Pliki mogą się znajdować w innym katalogu, alekatalog ten musi wcześniej istnieć (nie jest tworzony).

34

Page 36: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 3.10. Zakładka „Testy i wykresy”

35

Page 37: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

3.3.5. Zakładka „Testy i wykresy”

Wybór testów do przeprowadzenia

Po uzyskaniu wyniku jakim jest macierz odwrotna uruchamiany jest program testu-jący h tester.exe. Wynikiem jego działania jest tzw. plik wynikowy. Każdy wiersz tegopliku odpowiada kolejnemu obliczeniu (innemu K). W kolumnach znajdują się wybranetesty. Testy FERR i BERR pochodzą z wywołania procedury DGTRFS z bibliotekiLapack [13] po obliczeniu wyniku daną metodą. Procedura ta udokładnia otrzymanerozwiązanie i jeśli wybierzemy co najmniej jeden z tych testów, to otrzymana macierzodwrotna będzie już macierzą dokładniejszą, ale pozostałe testy są przeprowadzane wcze-śniej i dotyczą macierzy mniej dokładnej, będącej bezpośrednim wynikiem wybranegoalgorytmu obliczeniowego. Jeśli natomiast wybierzemy ostatnie dwa testy preFERR lubpreBERR, to samo udokładnianie wyniku zostanie uruchomione przed obliczaniem po-zostałych testów, więc ich wyniki będą dotyczyły już udokładnionego rozwiązania. testyFERR i BERR nie są przeprowadzane, jeśli wybrano testy preFERR lub preBERR. Abywybrać dany test, należy zaznaczyć pole wyboru z lewej strony jego nazwy. Po zazna-czeniu testu nadawany mu jest numer, który pojawia się z przodu nazwy testu przedkropką. Jest to numer kolumny w pliku wynikowym. W tej kolumnie zostaną zapisanewyniki danego testu dla każdego kolejnego K. Testy nie wybrane nie są przeprowadzane,chyba że ich przeprowadzenie jest konieczne do obliczenia wyników innych wybranychtestów. Dzięki temu wybranie mniejszej ilości testów spowoduje przyspieszenie testowa-nia wyniku przez program TIPS. Jeśli obliczenia są już przeprowadzone lista ’Kolumnypliku wynikowego’ jest ”wyszarzona” (tzn. niedostępna) i nie można już zmieniać kolumnpliku wynikowego. Ponieważ plik wynikowy istnieje, opcje obliczeń zostają z nim zwią-zane. Powiązanie to, czyli nazwa pliku wynikowego, może być zapisane razem z opcjamiobliczeń w pliku ’.tips’.

Dodawanie nowych wykresów

Aby po obliczeniach zobaczyć wyniki wybranych testów, należy dodać wykresy. Doda-nie wykresu polega na wybraniu numerów kolumn pliku wynikowego, w których znajdująsię wartości X (poziome) i Y (pionowe) dwuwymiarowego wykresu. Dodajemy wykre-sy naciskając przycisk ’Nowy wykres’ (rysunek 3.10). Pojawia się wtedy okno „Nowywykres” (rysunek 3.11). Nowe wykresy (ich nazwy) pojawiają się na zakładce „Testyi wykresy” na liście ’Wykresy’. Podwójne kliknięcie na nazwie wykresy na tej liście(albo zaznaczenie nazwy i kliknięcie przycisku ’Pokaż wykres’) spowoduje pojawienie sięokna ’Wykres’ zawierającego dany wykres. Wykresy można też usuwać. W tym celu pozaznaczeniu wykresu do usunięcia w oknie ’Wykresy’ naciskamy przycisk ’Usuń wykres’.Nie trzeba usuwać wykresów aby zamykać okna z wykresami. Zmieniając kolumny X i Ywykresu automatycznie wpisywane są domyślne podpisy osi wykresu i nazwa wykresuumieszczona na górze okna ’Wykres’ Nazwę tę i podpisy można zmienić teraz, albo póź-niej poprzez edycję parametrów wykresu. Kliknięcie przycisku ’OK’ spowoduje dodaniewykresu do listy ’Wykresy’ na zakładce ’Testy i wykresy’. Można potem obejrzeć danywykres klikając podwójnie na jego nazwę na tej liście.

36

Page 38: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 3.11. Okno „Nowy wykres”

Dodawanie wielu wykresów jednocześnie

Ponieważ dodawanie wykresów jest dość czasochłonną czynnością można automa-tycznie dodać wiele wykresów jednocześnie przez naciśnięcie przycisku ’Wszystkie z tąkolumną X’ (rysunek 3.11). Dodane zostaną wszystkie wykresy, które mają aktualniewybraną w tym oknie kolumnę X i każdą z kolumn Y (innych niż kolumna X). Nie sąwybierane kolumny, których nie ma w pliku wynikowym.

Rysunek 3.12. Okno „Edytuj wykres”

37

Page 39: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Edytowanie parametrów wykresu

Po naciśnięciu przycisku ’Edytuj wykres’ na zakładce „Testy i wykresy” pokaże sięokno „Edytuj wykres” (rysunek 3.12). Różni się ono od okna „Nowy wykres” tylko tym,że nie ma przycisku ’Wszystkie z tą kolumną X’. Przeznaczenie pozostałych elementówokna jest takie samo. Naciśnięcie przycisku ’OK’ nie dodaje jednak nowego okna, alezmienia parametry (może nawet kolumny X i Y) wykresu istniejącego i aktualnie wybra-nego w oknie ’Wykresy’. Dodane wykresy i ich parametry nie są zapisywane w plikachz rozszerzeniem ’.tips’ i trzeba je dodawać od nowa po każdym wczytaniu opcji obliczeńz takiego pliku.

Rysunek 3.13. Okno „Wykres”

3.3.6. Okno „Wykres”

Pokazanie wykresu

Aby pokazać wykres można kliknąć podwójnie lewym przyciskiem myszy na nazwiewykresu w oknie ’Wykresy’, albo zaznaczyć nazwę pojedynczym kliknięciem i nacisnąćprzycisk ’Pokaż wykres’. Pokaże się wtedy okno wykresu podobne do tego z rysunku 3.13.Pokazanie wykresu jest możliwe dopiero po obliczeniach (wtedy istnieje plik wynikowyi jego kolumny faktycznie zawierają wyniki wybranych wcześniej testów), albo po wczy-taniu pliku z opcjami obliczeń, kiedy ten plik był zapisany po tym jak obliczenia byłyjuż wykonane (wtedy pozostało powiązanie opcji z plikiem wynikowym). Wykresy sąrysowane na podstawie danych z dwóch kolumn pliku wynikowego. Plik ten jest czytanyprzy każdym wyświetlaniu okna z wykresem. Kolumny wybierane są w oknie „Edytujwykres” (rysunek 3.12).

38

Page 40: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Wygląd wykresu

Rozmiary okna z wykresem można dowolnie zmieniać w jednym kierunku chwyta-jąc i przeciągając myszką jedną z jego krawędzi, albo w dwóch kierunkach chwytająci przeciągając jeden z rogów okna. Wykresy są ”wykresami punktowymi”. Poszczególnepunkty nigdy nie są łączone linią. Liczby w opisach osi nigdy nie mają więcej niż 4cyfry (2 cyfry po kropce). Jeśli zapis liczby wymaga więcej cyfr, cała oś jest rysowanaw skali, przy czym mnożnik jest zapisany w nawiasie kwadratowym obok osi przy jejkońcu. Nazwa wykresu i podpisy osi mogą być zmienione w oknie ’Edycja wykresu’. Osiewykresu nie przecinają się w punkcie (0, 0). Skala nie jest rysowana poniżej minimalneji powyżej maksymalnej wartości współrzędnych rysowanych punktów. Dzięki temu moż-na rysować wykresy bardzo małych wartości (np. 1E-17) bez obawy, że nie zobaczymydrobnych różnic w pobliżu zera. Jeśli rozrzut wartości jest duży, można je narysowaćw skali logarytmicznej.

Rysunek 3.14. Menu podręczne do okna „Wykres”

Menu podręczne

Menu z rysunku 3.14 pojawia się po kliknięciu prawym klawiszem myszy w obsza-rze okna z wykresem. Dostępne tutaj opcje pozwalają manipulować opcjami wykresuniedostępnymi nigdzie indziej w programie TIPS i nie zapisywanymi nigdzie (po za-mknięciu okna z wykresem trzeba je ustawiać na nowo). Każdą z osi można ustawićjako logarytmiczną, a jeśli istnieją punkty o współrzędnych równych zero, to możnaje usunąć z wykresu. Do wykresu można też dodać (dorysować) czerwoną linię regresji.Regresja liniowa pozostaje liniowa nawet jeśli co najmniej jedna z osi jest logarytmiczna.Parametry regresji się wtedy zmieniają i pozwala to na wykorzystanie regresji zarównona wykresie zwykłym, jak i logarytmicznym. Na rysunku 3.15 pokazano przykładowywygląd linii regresji i okna z parametrami regresji dla tej linii. Okno to pokazuje sięrównież wskutek wybrania odpowiedniej pozycji z menu podręcznego.Kiedy podejmiemy już decyzje czy osie mają być logarytmiczne i czy wyświetlić

linię regresji, to możemy zapisać obraz wykresu do pliku graficznego w formacie PNG(Portable Network Graphics).

39

Page 41: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 3.15. Okno „Wykres” z linią regresji i okno „Parametry regresji”

40

Page 42: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Skale logarytmiczne

Zarówno skala Y jak i skala X mogą być logarytmiczne. Oznacza to w tym wypad-ku, że zamiast właściwych wartości rysowane są ich logarytmy dziesiętne. Opisy osi niezawierają jednak całych potęg 10, ale ułamkowe wartości właściwych logarytmów. Po-nadto podpis osi, która jest logarytmiczna zostaje automatycznie poprzedzony tekstem’log’. Na osiach logarytmicznych nie jest rysowana skala, tzn. nie mają one mnożni-ka w nawiasie kwadratowym oznaczającego potęgę 10, którą trzeba przemnożyć przezwszystkie wartości na osi aby otrzymać właściwy wynik. Wartości wszystkich testów są(powinny być) nieujemne, ale mogą tam wystąpić zera, szczególnie dla małych rozmiarówN macierzy. Skala nie może być logarytmiczna gdy musi zawiewrać wartość zero (gdysą punkty o współrzędnej zero). Takie punkty można jednak usunąć z wykresu (danew pliku wynikowym pozostają nie zmienione), a następnie narysować wykres logaryt-miczny z pozostałych punktów. Usuniętych punktów nie można już przywrócić, chybaże zamkniemy okno z wykresem i otworzymy je na nowo (przycisk ’Pokaż wykres’),co spowoduje ponowne odczytanie pliku wynikowego. Na przykładzie z rysunku 3.16pokazano jak wykorzystać osie logarytmiczne i linię regresji do odczytania złożonościczasowej algorytmu (tutaj jest to O(N2.24)).

3.3.7. Okno „Obliczenia”

Okno z rysunku 3.17 pojawia się na czas wykonywania obliczeń. Po uruchomieniuobliczeń okno główne zostaje zminimalizowane, a na środku ekranu pojawia się poniższeokno z paskiem postępu, który przesuwa się K razy, raz po każdej macierzy w serii obli-czeń. Jeśli podczas obliczeń naciśnięty zostanie przycisk zamknięcia okna, to obliczeniazostaną wstrzymane i pojawi się pytanie z rysunku 3.18. Naciśnięcie ’NIE’ spowodujewznowienie obliczeń i ich dokończenie, a odpowiedź ’TAK’ przerwie obliczenia i wyświe-tli okno z potwierdzeniem przerwania obliczeń. Nie będzie można później dokończyć takprzerwanych obliczeń (można zawsze uruchomić je od początku, albo dla zmienionychopcji).

3.3.8. Korzystanie ze wzorów

Liczby

Wszystkie liczby zostaną zamienione na zmiennoprzecinkowe podczas obliczania wzo-ru. Jeśli wynikiem wzoru ma być liczba całkowita, to zostanie on zaokrąglony przezobcięcie części ułamkowej (czyli w stronę zera na osi liczbowej). Do oddzielenia częściułamkowej używamy kropki, a nie przecinka. Można stosować w zapisie liczb notacjęnaukową, np. 1.345e-19. Wszystkie liczby we wzorach są zmiennoprzecinkowe o typierozszerzonym 80-bitowym. Podczas obliczania wyrażeń nie ma innego typu. Są jednakdwa wyjątki: logarytm naturalny LN() i funkcja znaku SGN(). Argument tych funkcjinie może być bliżej zera niż 1E-16. Jeśli będzie, spowoduje błąd.

41

Page 43: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 3.16. Przykład wykorzystania osi logarytmicznych i linii regresji

Rysunek 3.17. Okno „Obliczenia”

42

Page 44: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 3.18. Wstrzymanie obliczeń i pytanie o potwierdzenie chęci ich przerwania

Zmienne i funkcje

We wzorach można używać nazw zmiennych oraz predefiniowanych nazw funkcji. Niemożna definiować własnych funkcji. Wielkość liter jest bez znaczenia. Poniżej przedsta-wiona jest lista dostępnych funkcji.• SQRT() pierwiastek kwadratowy• ABS() wartość bezwzględna• RAD() zamiana stopni na radiany (funkcje trygonometryczne przyjmują argumentyw radianach)

• DEG() zamiana radianów na stopnie• INV() odwrotność liczby• EXP(x) liczba e do potęgi x• LN() logarytm naturalny (podstawa jest liczbą e)• SGN() znak liczby (-1,0 lub 1)• CEIL() zaokrąglenie do liczby całkowitej w górę• FLOOR() zaokrąglenie do liczby całkowitej w dół• FRAC() część ułamkowa liczby• MOD(a,b) dzielenie modulo• POW(a,b), POWER(a,b) a do potęgi b• MIN(a,b) mniejsza z liczb• MAX(a,b) większa z liczb• IF(a,b,c) funkcja IF, jeśli a = 0 to c inaczej b• SIN() sinus• COS() kosinus• TG(), TAN() tangens• CTG(), CTAN(), COTAN(), COT() kotangens• SEC() sekans• COSEC(), CSC() kosekans• ARCSIN(), ASIN() arkus sinus• ARCCOS(), ACOS() arkus kosinus• ARCTG(), ATG(), ARCTAN(), ATAN() arkus tangens• ARCCTG(), ACTG(), ACTAN(), ARCCOT(), ACOT() arkus kotangens

43

Page 45: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

• ARCSEC(), ASEC() arkus sekans• ARCCSC(), ACSC(), ARCCOSEC(), ACOSEC() arkus kosekans• SH(), SINH() sinus hiperboliczny• CH(), COSH() kosinus hiperboliczny• TH(), TGH(), TANH() tangens hiperboliczny• CTH(), CTGH(), CTANH(), COTH() kotangens hiperboliczny• SECH() sekans hiperboliczny• CSCH(), COSECH() kosekans hiperboliczny

Operatory

We wzorach oprócz liczb, zmiennych i funkcji można używać wielu operatorów ma-tematycznych. Należy pamiętać, że operatory dwuargumentowe są lewostronnie łączne.Oznacza to, że wyrażenia są obliczane od strony lewej do prawej. Wyrażeniu A+B+Codpowiada (A+B)+C, a wyrażeniu A*B/C odpowiada (A*B)/C. Priorytet operatorówjest zgodny z matematyką (wyjątkiem są operatory relacji). Poniżej znajduje się listadostępnych operatorów w kolejności od najbardziej wiążących:

+ - ! jednoargumentowe: plus, minus i negacja(wyr) fun(wyr1,wyr2) nawias i wywołanie funkcjidaszek (Shift+6) potęgowanie* / mod mnożenie, dzielenie i operacja modulo+ - dodawanie i odejmowanie¡ ¿ = ¡= ¿= == ¡¿ != relacje

Operatory = i == działają jednakowo i oznaczają równość. Operatory ¡¿ i != dzia-łają jednakowo i oznaczają różność. Lewostronna łączność nie dotyczy operatorów rela-cji. Wynik relacji jest jedynką dla relacji prawdziwej albo zerem dla fałszywej. Gdybyoperatory relacji były lewostronnie łączne, to na przykład relacja (−1 < −10 < 1)byłaby prawdziwa, a relacja (−1 < 0 < 1) fałszywa. Takie wielokrotne relacje są trak-towane w specjalny sposób. Jeśli co najmniej jedna z relacji składowych jest fałszywa,to cała relacja jest fałszywa. Na przykład relacja A < B < C jest traktowana jak(A < B) ∗ (B < C). Zwykły iloczyn działa na wyniki relacji jak logiczna koniunkcja(AND), a zwykła suma relacji działa jak logiczna alternatywa (OR). Nie ma osobnychoperatorów AND i OR. Można jednak użyć zwykłego mnożenia i dodawania jeśli wymu-simy konwersję liczby na wartość logiczną przez dwukrotny operator negacji, na przykład!!A odpowiada funkcji if(A,1,0). Spotykaną w wielu językach programowania konstrukcję(A OR B) można uzyskać tak (!!A + !!B). Podobnie (A AND B) zapisujemy jako (!!A* !!B) albo też jako !!(A*B). Dla dodawania na ogół nie jest prawdą, że (!!A + !!B)= !!(A+B). Funkcja if sama przeprowadza konwersję swojego pierwszego argumentu nawartość logiczną, więc wyrażenia if((A¡B)*(C¿D),1,2) oraz if(!!( (A¡B)*(C¿D) ),1,2) dająten sam wynik. Funkcję if(A,B,C) można zapisać jako wyrażenie (!!A*B + !A*C).

Page 46: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

4. Przeprowadzone testy

4.1. Porównanie czasów wykonania algorytmów

Algorytmy przetestowano na przykładzie macierzy Poissona (di = 2, ei = −1) o roz-miarach od 100 do 1000. Jeśli zależność czasu obliczeń t od rozmiaru macierzy N jestfunkcją potęgową typu t(N) = αNβ , to po zlogarytmowaniu tego równania stronami ma-my log t(N) = β log(N)+log(α). Wykładnik potęgowy β zawarty w poniższych tabelachzostał wyznaczony przy pomocy regresji liniowej tak, jak na przykładowym rysunku 3.16.Czas wykonania metod iteracyjnych był mierzony aż do osiągnięcia dokładności 10−7.

Metody bezpośrednieMetoda Wykładnik β

1. Wyznacznikowa 2.982. Eliminacja Gaussa 1 2.113. Eliminacja Gaussa 2 2.174. Eliminacja Gaussa-Jordana 3.415. Rozkład LLT 2.016. Rozkład LDLT 2.097. Rozkład QR 2.178. Rozkład SVD 1 2.899. Rozkład SVD 2 2.9210. „Analityczna” 1A 1.9711. „Analityczna” 1B 1.8912. „Analityczna” 1C 2.5313. „Analityczna” 2A 2.1314. „Analityczna” 2B 2.0415. „Analityczna” 2C 2.21

Metody iteracyjneMetoda Wykładnik β

16. Jacobiego 3.5817. Richardsona 3.1918. Gaussa-Seidela 3.1719. SOR 3.3820. Gradientów sprzężonych 1 3.0421. Gradientów sprzężonych 2 3.0922. Czebyszewa 2.63

45

Page 47: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

4.2. Porównanie dokładności - macierz Poissona

Norma (w sensie normy nieskończonej) macierzy odwrotnej do macierzy Poissonarośnie jak O(N2). Powoduje to, że wskaźnik uwarunkowania także rośnie jak O(N2)i dla N = 1000 osiąga wartość 500000 (rysunek 4.1).

Rysunek 4.1. Wskaźnik uwarunkowania macierzy Poissona

Dla metody wyznacznikowej nie obserwuje się dużych różnic między błędami lewo-stronnymi i prawostronnymi. Zarówno błędy w sensie normy, jak i błędy komponentowesą rzędu εmach dla macierzy Poissona o rozmiarach od N = 50 do N = 1000. Pozwala totwierdzić, że metoda ta jest w tym przypadku numerycznie poprawna.Obie metody eliminacji Gaussa (bez wyboru i z wyborem elementu głównego) zacho-

wują się podobnie, stąd wniosek, że wybór ten w przypadku macierzy Poissona nie jestpotrzebny. Występuje jednak znaczna różnica w charakterze zależności błędów (zarównokomponentowych, jak i w sensie normy) od rozmiaru macierzy. Błędy lewostronne wy-raźnie rosną (rysunek 4.2), podczas gdy błędy prawostronne pozostają proporcjonalnedo εmach (rysunek 4.3). Ponieważ wraz z rozmiarem macierzy Poissona rośnie jej współ-czynnik uwarunkowania, to nie wiemy czym dokładnie jest spowodowany wzrost błędulewostronnego.Metoda Gaussa-Jordana nie wykazuje powyższych różnic między błędami lewo- i pra-

wostronnymi (wszystkie są rzędu εmach).Błędy lewostronne metod korzystających z rozkładów LLT i LDLT wraz ze wzrostem

46

Page 48: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 4.2. Błąd lewostronny metody Gaussa dla macierzy Poissona

Rysunek 4.3. Błąd prawostronny metody Gaussa dla macierzy Poissona

47

Page 49: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

rozmiaru macierzy podobnie jak dla metody Gaussa, podczas gdy błędy prawostronneoscylują wokół jednej wartości.Ten sam wzrost błędów lewostronnych obserwujemy dla metody rozkładu QR, z tym

że błędy lewostronne są w tym przypadku prawie o 3 rzędy wielkości większe (prawo-stronne pozostają rzędu εmach).Obie metody wykorzystujące rozkład SV D są do siebie bardzo podobne. Błędy le-

wostronne rosną w nich proporcjonalnie do√N , a błędy prawostronne są 4 razy większe

od lewostronnych (nie pozostają stałe, ale także rosną).Wyniki trzech pierwszych wersji metody analitycznej (1A, 1B, 1C) dla macierzy

Poissona są dokładnie takie same (otrzymano identyczne liczby zmiennoprzecinkowe).Błędy komponentowe lewostronne i prawostronne także są dokładnie takie same, aleniestety dość duże, bo rzędu 10−9 i wykazują tendencję wzrostową typu N 2.44. Istniejąjednak różnice w błędach względnych w sensie normy. Błędy lewostronne LERR są duże(na poziomie 10−14), ale błędy prawostronne PERR są jeszcze większe (średnio 20 razywiększe).Wyniki metod analitycznych 2A, 2B i 2C są do siebie podobne, ale nie są identyczne.

W przypadku metod 2A i 2B obserwuje się jednak identyczność błędów komponentowychCLERR i CPERR dla tej samej metody. Oba te błędy, a także błędy w sensie normyrosną liniowo wraz ze wzrostem N (rysunek 4.4). Błąd PERR osiąga 10−14 dla N = 1000,ale błąd LERR jest od niego około 3.4 razy mniejszy. Błędy komponentowe, oprócz tegoże są identyczne dla mnożenia lewo- i prawostronnego, to są one tylko o rząd wielkościwiększe i dla N = 1000 osiągają wartość 10−13.Metoda 2C wymaga osobnego komentarza. Podczas gdy błędy lewostronne CLERR

i LERR są bardzo podobne do tych samych błędów w metodach 2A i 2B, błędy prawo-stronne są znacznie mniejsze, rzędu εmach i nie wykazują liniowej tendencji wzrostowej!Upodabnia to metodę „analityczną” w wersji 2C do metod eliminacji Gaussa, jednaktam błąd LERR rósł nie liniowo, ale jak

√N i dla N = 1000 był rzędu εmach (rysunek

4.2).Błędy metod iteracyjnych można zbadać ustalając niemożliwą do osiągnięcia tole-

rancję dla maksymalnego błędu i wykonywać iteracje aż błąd przestanie maleć. Błądjednak nie zawsze maleje monotonicznie, a poza tym takie obliczenia byłyby bardzoczasochłonne. Można też inaczej porównywać dokładność osiągniętą przez różne metodyiteracyjne po wykonaniu takiej samej liczby iteracji. Wtedy jednak oceniamy szybkośćzbieżności, a nie błąd metody.

4.3. Porównanie dokładności - macierz Hilberta

Macierz Hilberta ma postać: di = 12i−1 , ei =

12i . Macierz ta nie jest dodatnio określona

i metod korzystających z rozkładów LLT i LDLT nie można zastosować. Wyniki metodbezpośrednich porównano dla macierzy o rozmiarach od 5 do 100 z krokiem 5. Normamacierzy odwrotnej do macierzy Hilberta przyjmuje wartości z jednej z trzech gałęzi, takjak to widać na rysunku 4.5. Gałąź środkowa odpowiada rozmiarom macierzy podzielnymprzez 3, gałąź górna zawiera macierze o rozmiarach N = 3m−1, a dolna dla N = 3m+1.

48

Page 50: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 4.4. Liniowy wzrost błędu LERR metody 2C dla macierzy Poissona

Rysunek 4.5. Norma macierzy Hilberta

49

Page 51: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Dla metody wyznacznikowej błędy w sensie normy LERR i PERR maleją i pozostająmniejsze od εmach gdy rozmiar N macierzy rośnie. Natomiast błędy względne kompo-nentowe CLERR i CPERR są takie same i rosną jak N2.2 osiągając wartości rzędu 10−11

już dla N = 100.Dla metod Gaussa błędy LERR i PERR również są bardzo małe, mniejsze niż εmach

i maleją gdy rozmiar macierzy rośnie od 5 do 100. Zawsze błąd prawostronny zdaje się byćnieznacznie mniejszy niż lewostronny. Jeśli nie wykonujemy wyboru elementu głównego,to błędy CLERR są rzędu 10−11, a CPERR są około 8 razy mniejsze. Przy wyborze ele-mentu głównego nie ma takiej jednoznacznej zależności, natomiast błąd LERR zmniejszasię do poziomu błędu PERR. W metodzie Gaussa-Jordana błędy komponentowe nadalsą rzędu 10−11 dla N = 100, a błędy w normie nieskończonej są mniejsze od εmach.Wciąż błędy komponentowe rosną co najmniej jak N2. Obserwujemy jednak, że w tejmetodzie błędy lewostronne są większe niż prawostronne (najwyżej 2 razy większe).Metoda rozkładu QR jest porównywalna z eliminacją Gaussa, a obie metody rozkładuSVD są o rząd wielkości gorsze.Wyniki dla metod „analitycznych” są do siebie bardzo podobne, ale istnieją jednak

pewne drobne różnice. Błędy CLERR i CPERR są jednakowe dla każdej metody z wy-jątkiem 2C. Błędy PERR są porównywalne z LERR dla metod 1A i 2B, a są około 3 razywiększe dla metod 1B i 1C i 1.5 razy większe dla metody 2B. Metoda 2C jest wyjątkowa,gdyż dla niej błędy PERR są 3 razy mniejsze niż LERR, co znów wyróżnia tą wersjęmetody spośród pozostałych (rysunek 4.6).

Rysunek 4.6. Błędy PERR Metody 2C dla macierzy Hilberta

50

Page 52: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Rysunek 4.7. Prawostronne błędy komponentowe dla macierzy Hilberta

51

Page 53: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

4.4. Porównanie dokładności - macierz losowa

Przeprowadzono także testy dla macierzy losowej, której elementy były losowanez rozkładu jednostajnego na odcinku (0, 1). Obie metody SVD wykazują bardzo dużybłąd komponentowy i błąd w sensie normy o rząd wielkości większy niż εmach. Metodawyznacznikowa generuje macierz symetryczną, więc błędy komponentowe lewo- i pra-wostronne są sobie równe. Błędy w sensie normy są mniejsze niż εmach. Metoda Gaussaz częściowym wyborem elementu głównego jest dokładniejsza niż bez wyboru, ale po-nieważ nie generuje macierzy symetrycznej, błąd LERR jest większy niż dla metodywyznacznikowej (za to PERR jest nieco mniejszy). Metoda QR jest prawie o rząd wiel-kości gorsza od metody Gaussa. Metody „analityczne” 1A, 1B i 1C czasem nie dająwłaściwego wyniku (nieskończoności), tak jak metoda rozkładu LLT nie dawała wynikudla macierzy, która nie jest dodatnio określona. Metoda 2B ma najmniejsze błędy kom-ponentowe z metod 2A, 2B i 2C. Metoda 2A ma mniejsze błędy prawostronne podczasgdy metoda 2B ma mniejsze błędy lewostronne. Metoda 2C ma nieco większe błędykomponentowe od metody 2B, ale za to błędy w sensie normy są znacznie mniejsze(PERR jest mniejszy o ponad 3 rzędy wielkości).

Page 54: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

5. Podsumowanie

Na podstawie przeprowadzonych testów i obliczeń numerycznych można sformułowaćnastępujące wnioski:1. Metoda 2C jest w wielu przypadkach najdokładniejszą z badanych metod „analitycz-nych”, choć nie jest najszybsza. Najszybsza jest metoda 1B. Dla macierzy Poissonabłąd metody 2C rośnie liniowo wraz ze wzrostem rozmiaru macierzy N (rysunek 4.4).Lepszy wynik uzyskujemy dla metody eliminacji Gaussa z częściowym wyborem ele-mentu głównego (Eliminacja Gaussa 2), której błąd rośnie jak

√N (rysunek 4.2).

W najgorszym przypadku (macierz Hilberta) błąd komponentowy obu metod rośniew przybliżeniu jak N2 (rysunek 4.7).

2. Dla macierzy Hilberta obserwujemy wzrost błędów komponentowych wraz ze wzro-stem rozmiaru macierzy (rysunek 4.7), podczas gdy błędy w sensie normy maleją(rysunek 4.6). Być może wzrost błędów w sensie normy widoczny będzie dla macie-rzy znacznie większych rozmiarów niż badane (100 dla macierzy Hilberta i 1000 dlamacierzy Poissona).

3. Dwie najdokładniejsze metody (tzn. Gaussa i 2C) nie generują symetrycznej ma-cierzy odwrotnej. Jeśli dana metoda nie generuje symetrycznej macierzy odwrotnej,to zwykle jeden z błędów (lewostronny lub prawostronny) jest znacznie mniejszy oddrugiego, ale nigdy nie są one porównywalne. Kiedy jakaś metoda generuje macierzsymetryczną, to najbardziej prawdopodobne jest, że wykorzystuje ona fakt syme-tryczności wyniku po prostu kopiując wartości elementów xij znad (spod) diagonalido odpowiadających im elementów xji (w ten sposób zostały zaimplementowanewszystkie metody „analityczne” oprócz 2C). Nie opłaca się więc tak formułowaćalgorytmów numerycznych odwracania macierzy, że wymuszają one symetrycznośćwyniku przez zignorowanie połowy obliczeń.

4. Metod „analitycznych” w wersjach 1A, 1B i 1C nie można stosować dla macierzy,które nie są dodatnio określone. Obserwowano bardzo buże błędy, a nawet przekro-czenie zakresu (nieskończoności) dla niektórych macierzy losowych. Z kolei metody2A, 2B i 2C zachowują się poprawnie dla macierzy losowych. W teorii ich stabilnośćjest jednak gwarantowana tylko dla macierzy diagonalnie dominujących [7].

5. Metody używające rozkładów macierzy, w których występują macierze pełne lub teżtrójkątne pełne (SVD, QR) są znacznie mniej dokładne ze względu na większą liczbęoperacji zmiennoprzecinkowych, które muszą one wykonywać.

6. Metoda wyznacznikowa okazała się być stabilna numerycznie, co jest pewnym zasko-czeniem. Dla macierzy Poissona jest nawet poprawna numerycznie. Złożoność tej me-

53

Page 55: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

tody zbliża się jednak bardziej do złożoności metod iteracyjnych (O(N3)) niż innychmetod bezpośrednich, co raczej wyklucza możliwość jej praktycznego zastosowania.

7. Z metod iteracyjnych najszybsza okazała się metoda Czebyszewa. Może to wynikaćw faktu, że w implementacji tej metody obliczane są ekstremalne wartości własne ma-cierzy trójdiagonalnej aby wybrać optymalny przedział (a, b). Z pozostałych metoditeracyjnych najszybsza jest metoda gradientów sprzężonych, co nie jest zaskocze-niem.

Program TIPS, który powstał jako główny rezultat tej pracy umożliwia skuteczne ba-danie różnych metod numerycznych w zastosowaniu do zagadnienia odwracania syme-trycznej macierzy trójdiagonalnej. Udostępnia do wyboru szereg testów (łącznie z normąspektralną), które mogą służyć do analizowania i diagnozowania algorytmów zarównow warunkach praktycznych, jak i w pobliżu teoretycznych granic stosowalności danegoalgorytmu. Możliwości opracowanych specjalnie dla programu TIPS modułów rysowaniawykresów i obliczania wzorów analitycznych znacznie wykraczają poza prezentowanew tej pracy przykłady. Modułowa struktura środowiska obliczeniowego TIPS pozwalana rozbudowę programu w przyszłości. Łatwo też połączyć jego funkcjonalność z innymiśrodowiskami obliczeniowymi, gdyż wszystkie dane i wyniki zapisane są w przenośnymformacie tekstowym z dokładnością 17 cyfr znaczących. Wszystkie te cechy powodują, żeprogram TIPS może być przydatnym narzędziem w analizie algorytmów odwracania ma-cierzy (po pewnych modyfikacjach nie tylko trójdiagonalnych), a także może służyć jakopomoc dydaktyczna w prezentacji wielu problemów związanych z analizą numeryczną.

54

Page 56: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Spis ilustracji

2.1. Minor M42 macierzy T6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.1. Wygląd okna głównego programu TIPS . . . . . . . . . . . . . . . . . . . . . . . . . 273.2. Wygląd zakładki „Macierze” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3. Rodzaje macierzy do wyboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.4. Wzory do przekształcenia macierzy w macierz diagonalnie dominującą . . . . . . . . 303.5. Zakładka „Algorytmy i wyniki” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.6. Lista dostępnych do wyboru algorytmów . . . . . . . . . . . . . . . . . . . . . . . . 333.7. Okno „Opcje wyników” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.8. Opcje zapisu pliku(-ów) z macierzą trójdiagonalną . . . . . . . . . . . . . . . . . . . 343.9. Opcje zapisu pliku z macierzą odwrotną . . . . . . . . . . . . . . . . . . . . . . . . . 343.10. Zakładka „Testy i wykresy” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.11. Okno „Nowy wykres” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.12. Okno „Edytuj wykres” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.13. Okno „Wykres” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.14. Menu podręczne do okna „Wykres” . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.15. Okno „Wykres” z linią regresji i okno „Parametry regresji” . . . . . . . . . . . . . . 403.16. Przykład wykorzystania osi logarytmicznych i linii regresji . . . . . . . . . . . . . . 423.17. Okno „Obliczenia” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.18. Wstrzymanie obliczeń i pytanie o potwierdzenie chęci ich przerwania . . . . . . . . . 43

4.1. Wskaźnik uwarunkowania macierzy Poissona . . . . . . . . . . . . . . . . . . . . . . 464.2. Błąd lewostronny metody Gaussa dla macierzy Poissona . . . . . . . . . . . . . . . . 474.3. Błąd prawostronny metody Gaussa dla macierzy Poissona . . . . . . . . . . . . . . . 474.4. Liniowy wzrost błędu LERR metody 2C dla macierzy Poissona . . . . . . . . . . . . 494.5. Norma macierzy Hilberta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.6. Błędy PERR Metody 2C dla macierzy Hilberta . . . . . . . . . . . . . . . . . . . . . 504.7. Prawostronne błędy komponentowe dla macierzy Hilberta . . . . . . . . . . . . . . . 51

55

Page 57: PRACA DYPLOMOWA - if.pwr.wroc.plwsalejda/prace_mgr/praca_pasek.pdf · PRACA DYPLOMOWA ´Srodowisko programowe do wyznaczania macierzy odwrotnej do symetrycznej macierzy trójdiagonalnej

Literatura

[1] M. Dryja, J. I M. Jankowscy, Przegląd metod i algorytmów numerycznych, cz. 2, WNT,Warszawa 1988.

[2] L.L. Trefethen, D. Bau III, Numerical linear algebra, SIAM, Philadelphia 1997.[3] A. Kiełbasiński, H. Schwetlick, Numeryczna algebra liniowa, WNT, Warszawa 1992.[4] J. Du Croz, N.J. Higham, Stability of methods for matrix inversion, IMA, J. Numer. Anal.,12 (1992), pp. 1-19.

[5] B.P. Flannery, W.H. Press, Numerical Recipes in FORTRAN 77. The Art of ScientificComputing Volume 1, Volume 1 of Fortran Numerical Recipes, Cambridge University Press,Cambridge 1993.

[6] Hu, G. Y.; O’Connell, R. F., Analytical inversion of symmetric tridiagonal matrices, Journalof Physics A: Mathematical and General, Volume 29, Issue 7, pp. 1511-1513 (1996).

[7] Huang, Y.; McColl, W. F., Analytical inversion of general tridiagonal matrices, Journal ofPhysics A: Mathematical and General, Volume 30, Issue 22, pp. 7919-7933 (1997).

[8] Yamani, H. A.; Abdelmonem, M. S., COMMENT: The analytic inversion of any finitesymmetric tridiagonal matrix, Journal of Physics A: Mathematical and General, Volume30, Issue 8, pp. 2889-2893 (1997).

[9] T. Pang, Metody obliczeniowe w fizyce. Fizyka i komputery, Wydawnictwo Naukowe PWN,Warszawa 2001.

[10] T. Jurlewicz, Z. Skoczylas, Algebra liniowa 1. Definicje, twierdzenia, wzory, Wydanie piątepowiększone, Oficyna Wydawnicza GiS, Wrocław 1998.

[11] W. Salejda, M.H. Tyc, M. Just, Algebraiczne metody rozwiązywania równania Schrodingera,Wydawnictwo Naukowe PWN, Warszawa 2002.

[12] N.J. Higham, Bounding the error in gaussian elimination for tridiagonal systems, SIAM, J.Matrix Anal. Appl., Vol. 11, No. 4, pp. 521-530, (1990).

[13] E. Anderson, Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A.Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen, LAPACK User’s Guide, ThirdEdition, SIAM, Philadelphia 1999.

[14] B. Baron, Algorytmy numeryczne w Delphi, Helion, Gliwice 2006.[15] R. Barrett, M. Berry, T. F. Chan, J. Demmel, J. Donato, J. Dongarra, V. Eijkhout, R.Pozo, C. Romine, H. Van der Vorst, Templates for the Solution of Linear Systems: BuildingBlocks for Iterative Methods, Second Edition, SIAM, Philadelphia 1994.

56