Projekt1 Meoda Gaussa seidlacka


Konrad Krowicki

Piotr Krupa

L07

Metoda Gaussa-Seidla

Metoda Gaussa-Seidla - iteracyjna metoda numeryczna rozwiązywania układów równań liniowych. Stosowana jest głównie do rozwiązywania ogromnych układów równań postaci 0x01 graphic
, w których 0x01 graphic
jest macierzą przekątniowo dominującą. Równania tego typu, obejmujące tysiące a nawet miliony niewiadomych, występują powszechnie w numerycznych metodach rozwiązywania eliptycznych równań różniczkowych cząstkowych, np. równania Laplace'a. Nazwa metody upamiętnia niemieckich matematyków: Carla Friedricha Gaussa i Philippa Ludwiga von Seidla

Obecnie metoda Gaussa-Seidla ma charakter czysto akademicki. Dla małych układów równań dużo szybsze są metody bezpośrednie, np. metoda eliminacji Gaussa, natomiast dla ogromnych układów równań lepszą zbieżność zapewniają metody nadrelaksacyjne oraz wielosiatkowe (ang. multigrid).

Definicja:

Metoda Gaussa-Seidla jest metodą relaksacyjną, w której poszukiwanie rozwiązania rozpoczyna się od dowolnie wybranego rozwiązania próbnego 0x01 graphic
, po czym w kolejnych krokach, zwanych iteracjami, za pomocą prostego algorytmu zmienia się kolejno jego składowe, tak by coraz lepiej odpowiadały rzeczywistemu rozwiązaniu. Metoda Gaussa-Seidla bazuje na metodzie Jacobiego, w której krok iteracyjny zmieniono w ten sposób, by każda modyfikacja rozwiązania próbnego korzystała ze wszystkich aktualnie dostępnych przybliżonych składowych rozwiązania. Pozwala to zaoszczędzić połowę pamięci operacyjnej i w większości zastosowań praktycznych zmniejsza ok. dwukrotnie liczbę obliczeń niezbędnych do osiągnięcia zadanej dokładności rozwiązania.

Rozpatrzmy układ 0x01 graphic
równań liniowych z 0x01 graphic
niewiadomymi:

0x01 graphic

gdzie

Pojedynczą iterację metody Gaussa-Seidla można zapisać algebraicznie jako

0x01 graphic

gdzie 0x01 graphic
jest nieosobliwą macierzą diagonalną, a 0x01 graphic
i 0x01 graphic
są odpowiednio macierzą dolnotrójkątną i górnotrójkątną macierzy 0x01 graphic
(tzn. 0x01 graphic
oraz 0x01 graphic
mają zera na głównej przekątnej oraz 0x01 graphic
), natomiast indeks 0x01 graphic
oznacza numer porządkowy iteracji.

Po rozpisaniu na składowe wzór ten przyjmuje postać używaną w implementacjach numerycznych:

0x01 graphic

Uwaga!

Opis programu :

GaussSeidel (n,a,b,mit,eps,x,it,st)

n - liczba równań (równań liczbie niewiadomych)

a - tablica zawierająca wartość elementów macierzy A (element a[i,k] powinien zawierać wartość aij, gdzie i,j = 1,2,…,n),

b- tablica zawierająca wartości składowych wektora b(element b[i] powinien zawierać wartość bi, gdzie i = 1,2,…,n);

mit - maksymalna liczba iteracji w procesie(3),

eps - względna dokładność rozwiązania,

x- tablica zawierająca początkowe przybliżenia wartości xi (i=1,2,…,n).

Inne parametry

ST- zmienna w procedurze GaussSeidel przypisuje się jedną z następujących wartości :

1, jeżeli n<1,

2, gdy macierz A jest osobliwa,

3, jeśli wymagana dokładność rozwiązania nie jest osiągnięta po mit interajach,

0, w przeciwnym wypadku.

Typy parametrów

Integer : it,mit,n,ST

Extended : eps

matrix: a

vector : b,x

Schemat rozwiązywania:

Na początku macierz współczynników A rozłożymy na sumę trzech macierzy A = L + D + U, gdzie L jest macierzą w której znajdują się elementy których numer wiersza jest większy od numeru kolumny, D to macierz diagonalna z elementami tylko na głównej przekątnej, a U to macierz, w której znajdują się elementy których numery wiersza są mniejsze od numerów kolumny. Można to zapisać następująco:

0x01 graphic


Następnie obliczymy macierz odwrotną do macierzy D, czyli D-1. Otrzymamy ją po podniesieniu do potęgi -1 wszystkich wartości na głównej przekątnej macierzy. Po tych operacjach możemy przystąpić już do iteracyjnego obliczania kolejnych przybliżeń rozwiązania według następującego wzoru:


xn+1 = D-1b - D-1Lxn+1 - D-1Uxn
(indeksy n oznaczają tutaj numer iteracji).

Przykład:

Obliczymy następujący układ równań:

4x1 - x2 - 0.2x3 + 2x4 = 30
-1x
1 + 5x2 - 2x4 = 0
0.2x
1 + x2 + 10x3 - x4 = -10
- 2x
2 - x3 + 4x4 = 5

Zapiszmy go teraz w postaci Ax = b
0x01 graphic


Podzielmy teraz macierz A na sumę macierzy L + D + U
0x01 graphic


Obliczmy teraz macierz D-1
0x01 graphic


A teraz kolejno D-1b, D-1L, D-1U
0x01 graphic


Rozpoczynamy od zerowego przybliżenia czyli x10 = 0, x20 = 0, x30 = 0, x40 = 0

Obliczmy pierwszą iterację metody, według przytoczonego na początku wzoru:


x11 = 7,5 + 0,25x20 + 0,05x30 - 0,5x40
x
11 = 7,5
x
21 = 0 + 0,2x11 + 0,4x40
x
21 = 1,5
x
31 = -1 - 0,02x11 - 0,1x21 + 0,1x40
x
31 = -1,30
x
41 = 1,25 + 0,5x21 + 0,25x31
x
41 = 1,675

Kolejna iteracja


x12 = 7,5 + 0,25x21 + 0,05x31 - 0,5x41
x
12 = 6,9725
x
22 = 0 + 0,2x12 + 0,4x41
x
22 = 2,0645
x
32 = -1 - 0,02x12 - 0,1x22 + 0,1x41
x
32 = -1,1784
x
42 = 1,25 + 0,5x22 + 0,25x32
x
42 = 1,98765

Można teraz obliczyć kolejną iterację. Każda z nich przybliża nas do dokładnego wyniku.

Wyniki otrzymane przy użyciu algorytmu:

a) 1 iteracja:

0x08 graphic

b) 2 iteracje:

0x08 graphic

c) 100 iteracji:

0x08 graphic

Przykład 2 (układ równań z 4.3.2:

a)

0x01 graphic

Dla danych:

0x01 graphic

Wyniki:

x[1] = -3.87215061601966E-0021

x[2] = 2.00000000000000E-0001

x[3] = 2.00000000000000E-0001

x[4] = 4.00000000000000E-0001

it = 46, st = 0

Komentarz: W tym układzie równań do rozwiązania go, wystarczyło tylko 46 iteracji.

b)

Dla danych:

0x01 graphic

Wyniki:

x[1] = -8.53655928498797E-0001

x[2] = -7.75175766736041E+0000

x[3] = 6.86615393897085E-0002

x[4] = 1.07951328548122E+0000

it = 10, st = 3

Komentarz: Przy rozwiązywaniu tego układu równań, okazało się, że 10 iteracji to za mało i dokładność rozwiązania nie została osiągnięta. Powyższe wyniki to ostatnie obliczone przybliżenie rozwiązania.

c)

Dla danych:

0x01 graphic

Wyniki:

x[1] = -8.53655931618867E-0001

x[2] = -7.75175767876022E+0000

x[3] = 6.86615398239442E-0002

x[4] = 1.07951328720871E+0000

it = 18, st = 0

Komentarz: W tym podpunkcie zadania rozwiązywaliśmy ponownie przykład z podpunktu b, tym razem zwiększyliśmy ilość iteracji z 10 na 50, program rozwiązał układ równań z wymaganą dokładnością po 18 iteracjach.

Wnioski:

Metoda Gaussa-Seidla pozwala uzyskać tym dokładniejsze wyniki im więcej wykonamy iteracji. Jest to o tyle dobre, że dzięki temu sami możemy ustalić z jaką dokładnością otrzymamy końcowy wynik.

Wynik

x[1] = 7,5

x[2] = 1,5

x[3] = -1,3

x[4] = 1,675

Wynik

x[1] = 6,9725

x[2] = 2,0645

x[3] = -1,1784

x[4] = 1,98765

Wynik

x[1] = 6,96156056445949

x[2] = 2,2211225336824

x[3] = -1,1541408594598

x[4] = 2,07202605197625



Wyszukiwarka

Podobne podstrony:
Metoda Eliminacji Gaussa i Gaussa Seidla
Metoda Gaussa Seidla
projekt o narkomanii(1)
!!! ETAPY CYKLU PROJEKTU !!!id 455 ppt
Wykład 3 Dokumentacja projektowa i STWiOR
Projekt nr 1piątek
Projet metoda projektu
34 Zasady projektowania strefy wjazdowej do wsi
PROJEKTOWANIE ERGONOMICZNE
Wykorzystanie modelu procesow w projektowaniu systemow informatycznych
Narzedzia wspomagajace zarzadzanie projektem
Zarządzanie projektami 3
Metody Projektowania 2

więcej podobnych podstron