Opis1, Semestr 1, Algebra liniowa z elementami geometrii, Dokumenty na temat rozwiązywania równań liniowych


Wydział EAIiE

kierunek Automatyka i Robotyka

wykonanie ćwiczenia - 19.12.2007


Andrzej Leśko grupa laboratoryjna 4

Rozwiązywanie układów równań liniowych

  1. Wstęp

Rozpatrujemy układy równań liniowych postaci Ax=B, gdzie A jest pewną macierzą (posiadającą m wierszy i n kolumn), B jest znanym wektorem (posiadającym m współrzędnych), a x jest szukanym wektorem (n nieznanych współrzędnych).

Układy takie mogą mieć 0, 1 lub nieskończenie wiele rozwiązań. Ilość rozwiązań można przewidzieć analizując odpowiednie - zazwyczaj dość proste warunki.

Rozwiązanie omawianych układów można znaleźć na wiele różnych sposobów, które generalnie można podzielić na dwie grupy: metody dokładne i metody iteracyjne.

Metody dokładne (np. metoda Cramera, eliminacji Gaussa, rozkładu LU) - pozwalają przy wykorzystaniu skończonej ilości dokładnych działań arytmetycznych, przekształcających macierz A i wektor B, otrzymać rozwiązanie.

Metody iteracyjne (np. metoda Jacobiego, metoda Gaussa-Seidla) - polegają na wykonaniu skończonej ilości działań, coraz lepiej przybliżających rozwiązanie. Za pomocą tych metod - zwiększając ilość obliczeń możemy znaleźć wynik z dowolną dokładnością.

Aby dana metoda iteracyjna mogła przynieść oczekiwany efekt - muszą być spełnione odpowiednie - zależne od wyboru metody warunki zbieżności.

  1. Wykonanie ćwiczenia

  1. Metody dokładne - metoda Cramera

Metoda Cramera pozwala znaleźć rozwiązanie układu równań poprzez obliczanie ilorazów wyznaczników odpowiednich macierzy.

Najpierw obliczamy wyznacznik główny - wyznacznik macierzy A.

Następnie kolejne j-te kolumny macierzy zastępujemy znanym wektorem B i obliczamy wyznaczniki tak otrzymanych macierzy. Rozwiązaniem układu jest wektor składający się z j wyznaczników tych macierzy podzielonych przez wyznacznik główny.

Gdy wyznacznik główny jest niezerowy - układ posiada jedno rozwiązanie. Gdy wyznacznik główny jest zerowy i pozostałe j wyznaczników też jest równa 0 - układ ma nieskończenie wiele rozwiązań. W przeciwnym razie układ jest sprzeczny.

Dany był układ równań:

Ax=b

gdzie:

0x01 graphic

0x01 graphic

Układ rozwiązałem za pomocą funkcji:

0x01 graphic

- ta funkcja tworzyła odpowiednie macierze - gdzie i- ta kolumna zastępowana jest wektorem b i zwracała wyznacznik macierzy

0x01 graphic

- druga funkcja wykonywała odpowiednie dzielenia i w efekcie znajdowała rozwiązanie.

0x01 graphic

- wynik - rozwiązanie badanego układu równań

  1. Metody dokładne - metoda eliminacji Gaussa

Metoda eliminacji Gaussa składa się z dwóch etapów.

W pierwszym wykonujemy odpowiednie operacja na wierszach macierzy A i wektora b tak, aby przekształcić macierz do macierzy trójkątnej górnej.

W drugim etapie korzystając z odpowiedniego wzoru rekurencyjnego wyznaczamy niewiadome - zaczynając od ostatniej, stąd etap ten nazywamy postępowaniem odwrotnym.

Etap pierwszy:

Aby otrzymać macierz trójkątną musimy kilkakrotnie powtórzyć następujące działanie:

od i-tego wiersza układu odejmujemy wiersz pierwszy pomnożony przez iloraz współczynników - pierwszy współczynnik pierwszego wiersza podzielony przez pierwszy współczynnik i-tego wiersza. Oczywiście analogiczną operacją wykonujemy na wektorze b.

W pierwszej iteracji uzyskamy zera na pierwszej pozycji każdego wiersza (poza pierwszym). Analogicznie eliminujemy niezerowe wartości na kolejnych pozycjach - od i-tego wiersza odejmujemy w kolejnych iteracjach pomnożone przez odpowiedni iloraz kolejne wiersze: 2,3,…,n.

Otrzymujemy macierz trójkątną górną.

Etap drugi:

Ostatnią współrzędną szukanego wektora x otrzymujemy wprost - dzieląc ostatnią współrzędną wektora b przez jedyny wyraz ostatniego wiersza macierzy trójkątnej.

Z tak otrzymanym wynikiem przesuwamy się „wyżej” - obliczamy przedostatnią współrzędną wektora x. Wykorzystujemy wzór rekurencyjny:

0x01 graphic

Dane były:

0x01 graphic

0x01 graphic

Do rozwiązanie układu równań (tego samego co w przypadku metody Cramera) metodą eliminacji Gaussa wykorzystałem funkcje:

n - indeks ostatniej kolumny i wiersza, bo macierz jest kwadratowa

k - mówi który wiersz traktujemy jako bazowy - względem którego liczymy

0x01 graphic

i - to numer wiersza. skoro bazowy jest k-ty to zaczynamy liczyć na k+1

s - to iloczyn prze który będziemy mnożyć każdy wiersz

wykonujemy odpowiednie iteracje na macierzy b i A

j - numer kolumny - liczymy po wszystkich kolumnach od k do n

dopisujemy wektor wyników b do macierzy A

Funkcja Gauss1 tworzy macierz trójkątną górną.

0x01 graphic

Ostatnia kolumna macierzy to wektor b.

Funkcja Gauss2 rozwiązuje macierz trójkątną i zwraca szukany wektor x:

0x01 graphic

- wyznaczamy ostatnią współrzędna szukanego wektora

- realizacja wzoru rekurencyjnego

Otrzymałem wynik:

0x01 graphic

  1. Metody dokładne - metoda rozkładu LU

W metodzie tej poszukujemy macierzy trójkątnych L i U, których iloczyn będzie równy danej macierzy A. Macierze L (trójkątna dolna) i U (trójkątna górna) można wyznaczyć korzystając z algorytmów związanych z metodą eliminacji Gaussa.

Macierz U wyznaczyłem korzystając z funkcji:

0x01 graphic

Funkcja ta tylko nieznacznie różni się od funkcji Gauss1 (różnica polega na opuszczeniu obliczeń związanych z wektorem b).

Macierz L wyznaczyłem korzystając z funkcji:

0x01 graphic

Celem tej funkcji było znalezienie macierzy postaci:

0x01 graphic

gdzie L - to iloraz odpowiednich współczynników początków wierszy macierzy A - otrzymanych w kolejnych iteracjach (L z pierwszej kolumny - współczynniki z pierwszej iteracji, L drugiej kolumny - to współczynniki z drugiej iteracji itd.)

Tak jak poprzednio:

0x01 graphic

0x01 graphic

0x01 graphic

Zatem wykonując obliczenia otrzymałem:

0x01 graphic

oraz

Rzeczywiście:

0x01 graphic

zatem macierze L i U zostały wyznaczone poprawnie.

Kolejnym krokiem metody jest rozwiązanie układów równań:

Ly=b oraz Ux=Y (ponieważ Ax=b oraz LU=A)

Macierz L - jest macierzą trójkątną dolną, zatem układ równań łatwo rozwiązać - począwszy od pierwszego wiersza, a następnie rekurencyjnie obliczając niewiadome z kolejnych wierszy:

0x01 graphic

-do macierzy A dopisujemy dodatkową kolumnę - wektor B

-pierwsza niewiadoma

-wzór rekurencyjny

- zwracam wektor Y

Mając wektor Y - możemy rozwiązać drugi układ. Można do tego wykorzystać funkcję Gauss2 - ponieważ mamy układ z macierzą trójkątną górną.

Musimy jednak do macierzy U dodać dodatkowy wektor - Y (ponieważ macierz takiej postaci jest argumentem mojej funkcji Gauss2)

0x01 graphic

-dodanie do macierzy trójkątnej wektora Y

Otrzymujemy macierz:

0x01 graphic

ponieważ wektor Y był postaci:

0x01 graphic

Podstawiając macierz do funkcji Gauss2 otrzymujemy:

0x01 graphic

Co jest poprawnym rozwiązaniem naszego układu.

Funkcja niekorzystająca z funkcji Gauss2 byłaby postaci:

0x01 graphic

dołączenie wektora B do macierzy trójkątnej A

obliczenie ostatniej współrzędnej szukanego wektora

wzór rekurencyjny - identyczny ze wzorem z funkcji Gauss2

A wynik zgodnie z oczekiwaniami:

0x01 graphic

  1. Metody iteracyjne - macierze L, U, D

W przypadku dwóch rozpatrywanych na ćwiczeniach metod iteracyjnych - metodzie Jacobiego i metodzie Gaussa-Seidla - macierz A układu równań Ax=b musi być taką macierzą, aby można było ją rozłożyć na macierze: diagonalną (D), poddiagonalną (L) oraz naddiagonalną (U).

W ćwiczeniu rozpatrywałem układ równań, w którym:

0x01 graphic

0x01 graphic

Można było zatem łatwo wyznaczyć macierz L, U, D. Wykorzystałem następujące funkcje:

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

Z macierzy L, U, D tworzymy następnie kolejną macierz - będącą punktem wyjścia do dalszych kroków metod:

- dla metody Jacobiego tworzymy macierz:

0x01 graphic

0x01 graphic

- dla metody Gaussa-Seidla macierz:

0x01 graphic

0x01 graphic

  1. Metody iteracyjne - warunki zbieżności

Aby metody iteracyjne mogły zostać zastosowane muszą spełnione być pewne warunki gwarantujące, że dany algorytm doprowadzi nas do rozwiązania.

Warunek zbieżności dla metod jest następujący: promień spektralny macierzy M (lub N) musi być mniejszy od 1 (Promień spektralny to największa co do modułu wartość własna danej macierzy).

Aby sprawdzić czy w przypadku danej macierzy A mogę stosować omawiane metody obliczyłem promienie spektralne wyznaczonych w poprzednim kroku macierzy M i N. W tym celu wykorzystałem następujące funkcje zwracające wektor wartości własnych:

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

Oraz funkcję obliczającą moduł wartości własnych:

0x01 graphic

Oraz funkcję znajdującą największą współrzędną w danym wektorze:

0x01 graphic

Przekazując tej funkcji wektor modułów wartości własnych wyznaczałem promień spektralny macierzy.

Dla metody Jacobiego - i macierzy M(A) - promień spektralny wyniósł:

0x01 graphic

Dla metody Gaussa-Seidla:

0x01 graphic

Zatem w obydwu przypadkach warunki zbieżności były spełnione - można było kontynuować obliczenia.

  1. Metody iteracyjne - metoda Jacobiego i metoda Gaussa-Seidla - kroki iteracyjne

Iterację w obydwu metodach rozpoczyna się przyjmując pewne - dowolne wartości początkowe, które automatycznie stają się pierwszym przybliżeniem szukanego wektora x. Dla obydwu metod przyjąłem jako wartości początkowe wektor o zerowych współrzędnych.

Związek między kolejnymi iteracjami można zapisać - dla metody Jacobiego:

0x01 graphic

Co można zapisać:

0x01 graphic

Natomiast dla metody Gaussa-Seidla:

0x01 graphic

A zapisując dla współczynników macierzy:

0x01 graphic

Wyniki każdej kolejnej iteracji dołączałem do danego wektora startowego - tworząc w ten sposób macierz o coraz większej - równej ilości iteracji - liczbie kolumn.

Napisałem następujące funkcje rozwiązujące układ równań:

Metoda Jacobiego (wyniki kolejnych iteracji zapisane w macierzy Ja):

0x01 graphic

ustalenie wartości początkowych

pętla for - zabezpiecza przed nieskończonymi obliczeniami - możliwymi w razie błędu implementacji

właściwe obliczenia - pozwalające na wyznaczenie kolejnego przybliżenia wyniku - wykorzystując przybliżenie poprzednie

pętlę przerywamy, gdy różnica między kolejnymi przybliżeniami będzie wystarczająco mała

funkcja zwraca wynik ostatniej iteracji

dodatkowa współrzędna zwracanego wektora informuje o ilości wykonanych iteracji

Metoda Gaussa-Seidla (wyniki kolejnych iteracji w macierzy GS):

Funkcja realizująca metodę Gaussa-Seidla różni się jedynie sposobem obliczania kolejnego przybliżenia:

0x01 graphic

wzór rekurencyjny - jedyna różnica między funkcjami realizującymi metody Jacobiego i Gaussa-Seidla

0x01 graphic

Przyjmując

Otrzymałem wyniki:

0x01 graphic

0x01 graphic

Zatem obie metody pozwoliły znaleźć rozwiązanie danego układu.

  1. Wnioski

    1. Metoda Cramera wymaga (n+1)! mnożeń, zatem warto ją stosować tylko przy niedużych macierzach - gdy znalezienie wyznaczników nie wymaga wielu obliczeń. Metoda Eliminacji Gaussa wymaga wykonania

0x01 graphic

0x01 graphic

mnożeń oraz dodawań

Zatem przy większych macierzach stosuje się metodę eliminacji Gaussa. Metoda rozkładu LU wymaga:

0x01 graphic

0x01 graphic

mnożeń oraz dodawań

Jest zatem jeszcze mniej kosztowna od metody eliminacji Gaussa.

    1. Gdy do rozwiązania mamy kilka układów różniących się tylko wektorem b to najkorzystniejsza jest metoda rozkładu LU, ponieważ w takim przypadku wystarczy jednorazowe wyznaczenie macierzy L oraz U. Dzięki temu liczba niezbędnych działań do rozwiązania kolejnych układów będzie jeszcze mniejsza.

    1. Aby stosować metody iteracyjne koniecznie należy sprawdzić warunki zbieżności. Metodę Gaussa-Seidla można stosować jedynie, gdy na diagonalni są elementy niezerowe.

Obie metody są zbieżne, gdy dana macierz A jest silnie diagonalnie dominująca wierszowo lub kolumnowo.

Jeśli macierz A jest symetryczna i dodatnio określona to zbieżna jest metoda Gaussa-Seidla, natomiast metoda Jacobiego nie musi być zbieżna.

    1. Metoda Gaussa-Seidla pozwoliła znaleźć rozwiązanie po znacznie mniejszej liczbie obliczeń niż metoda Jacobiego. Zatem jeśli tylko warunki zbieżności są spełnione warto wybrać metodę Gaussa-Seidla, gdyż jest ona szybciej zbieżna.

19.12.2007

Andrzej Leśko grupa 4



Wyszukiwarka

Podobne podstrony:
Zadania na 2 kolokwium z algebry, Biotechnologia, SEMESTR 1, Algebra liniowa z geometrią analityczną
ZaliczenieKK, semestr I, Algebra liniowa
Wyklad7ALG2001, Informatyka i Ekonometria SGGW, Semestr 1, Algebra Liniowa, materialy od starszych r
Wyklad8ALG2001, Informatyka i Ekonometria SGGW, Semestr 1, Algebra Liniowa, materialy od starszych r
Wyklad2ALG2001a, Informatyka i Ekonometria SGGW, Semestr 1, Algebra Liniowa, materialy od starszych
Wyklad5ALG2001, Informatyka i Ekonometria SGGW, Semestr 1, Algebra Liniowa, materialy od starszych r
ALGEBRA tu szuka kolosa, Informatyka i Ekonometria SGGW, Semestr 1, Algebra Liniowa, materialy od s
Wyklad6ALG2001, Informatyka i Ekonometria SGGW, Semestr 1, Algebra Liniowa, materialy od starszych r
Egzamin z algebry, Informatyka i Ekonometria SGGW, Semestr 1, Algebra Liniowa, materialy od starszyc
egzamin algebra, semestr I, Algebra liniowa
ALGEBRA LINIOWA Z ELEMENTAMI GEOMETRII[ok]
ALGEBRA LINIOWA Z ELEMENTAMI GEOMETRII[ok]
Algebra Roszkowska, ZAGADNIENIA NA EGZAMIN Z AL, Tematy przygotowawcze do egzaminu z Algebry Liniow
,algebra liniowa z geometrią analityczną, działania na macierzach
Elementy algebry liniowej z geometrią analityczną dla informatyków
Elementy algebry liniowej z geometrią analityczną dla informatyków
Algebra liniowa i geometria kolokwia AGH 2012 13
Geometia i Algebra Liniowa

więcej podobnych podstron