Modelowanie i symulacja WYKŁAD 3
Układy równań liniowych Układ równań
Układy równań liniowych Zapis macierzowy:
Układy równań liniowych
Układy równań liniowych Zapis macierzowy: macierz o rozmiarach m x n (m równań/wierszy, n zmiennych/kolumn) wektor kolumnowy zmiennych o rozmiarach n x 1 (n wierszy/zmiennych) wektor kolumnowy wyrazów wolnych o rozmiarach m x 1 (m wierszy/wyrazów wolnych)
Układy równań liniowych Tylko układy, które mają tyle niezależnych równań ile zmiennych dają jednoznaczne rozwiązanie, Niekoniecznie jest to tożsame z m=n – niektóre równania mogą być liniowo zależne Zamiast m liczy się tzw. rząd macierzy r, mówiący o liczbie liniowo niezależnych równań
Układy równań liniowych To wydaje się układ 3 równań: ...ale w rzeczywistości to 2 równania – trzecie równanie to cztery razy pierwsze – równania są liniowo zależne
Układy równań liniowych Jeśli r < n to układ jest niedookreślony, ma nieskończenie wiele rozwiązań zależnych od (n - r) parametrów Jeśli r=n to istnieje jedno unikalne rozwiązanie Jeśli m>n, to albo część równań jest linowo zależnych (dzięki czemu r<=n) albo układ jest nadokreślony – sprzeczny.
Układy równań liniowych Własciwości układu równań liniowych (np. istnienie rozwiązań, wrażliwość rozwiązania na fluktuacje wektora b) są określone właściwościami macierzy A (np. jej rzędem, jej spektrum) Równanie: jakie potrzebne x, żeby uzyskać b? wejście (x) wyjście (b) proces (A)
Układy równań liniowych Rozwiązanie układu równań można przeprowadzić za pomocą operacji macierzowych Rozwiązanie układu:
Rozwiązanie układu równań liniowych Rozwiązanie układu obejmuje wyznaczenie odwrotności macierzy A, z czego wynika, że musi to być macierz kwadratowa o pełnym rzędzie O dużej klasie algorytmów rozwiązujących układy równań liniowych można myśleć jako o algorytmach znajdujących odwrotność macierzy A Klasyczny algorytm to algorytm eliminacji Gaussa-Jordana
Algorytm Gaussa-Jordana Jordan – kartograf i geodeta. Zastosował metodę w wyznaczaniu błędów pomiarów kartograficzno-geodezyjnych Karl Friedriech Gauss (1777-1855) Wilhelm Jordan (1842 to 1899)
Algorytm Gaussa-Jordana Algorytm dąży do tego, aby skonstruować równanie Ux=d, przy czym U to macierz trójkątna górna:
Algorytm Gaussa-Jordana Na podstawie tej postaci łatwo wyznaczyć rozwiązania w procesie wstecznego podstawiania: z ostatniego równania wprost można wyznaczyć xn , znając xn z równania przedostatniego można wyznaczyć xn-1 ,itd.
Algorytm Gaussa Jordana
Algorytm Gaussa Jordana
Algorytm Gaussa Jordana
Algorytm Gaussa Jordana
Algorytm Gaussa-Jordana Doprowadzenie do postaci trójkątnej górnej rezlizuje się w pierwszej fazie algorytmu poprzez ciąg operacji polegających na dodawaniu (odejmowania) do jednego równania wielokrotności drugiego Bezpośrednim celem każdej takiej operacji jest wyzerować współczynnik przy kolejnej zmiennej W zapisie macierzowym operacja na równaniu polega na jednoczesnym poddawaniu tym samym przekształceniom wierszowym i macierzy A i wektora b
Algorytm Gaussa-Jordana Np. pierwsza operacja – odjąć od drugiego wiersza pierwszy pomnożony przez : Powtórzyć to samo, dla wierszy 3 do n, zapewniając, że w każdym wierszu pierwszy współczynnik zostanie wyzerowany W drugim kroku zacząć od trzeciego równania i odjąć drugie pomnożone przez: . Kontynuować dla wierszy 4 do n Powtarzać krok algorytmu polegający na wyzerowaniu (p-1)-tego współczynnika w równaniach p do n aż osiągnięta zostanie macierz trójkątna górna (p ma się zmieniać od 2 do n)
Algorytm Gaussa-Jordana for p := 2 to n do for k := p to n do begin m := a(k,p-1)/a(p-1,p-1) b(k) := b(k)-b(k-1)*m; for l := 1 to n do if (l < p) then a(k,l) := 0 else a(k,l) := a(k,l) – a(k-1,l)*m; end;
Algorytm Gaussa - Jordana Dodatkowy element algorytmu – w każdym kroku algorytmu równania są dzielone przez wartość Dobrze jest, aby było jak największe Dlatego algorytm nie jest realizowany zgodnie z sekwencją równań, ale w każdym kroku do odejmowania wybierane jest równanie z jak największym Zabieg ten nazywany jest piwotem
Zastosowanie Sieć elektryczna:
Zastosowanie Pierwsze prawo Kirchhoffa: suma prądów w węźle jest równa 0
Zastosowanie Prawo Ohma: prąd w gałęzi jest proporcjonalny do różnicy napięć na końcach tej gałęzi i odwrotnie proporcjonalny do rezystancji gałęzi
Zastosowanie
Zastosowanie
Zastosowanie
Zastosowanie
Zastosowanie
Podsumowanie Algorytmy rozwiązywania układów równań liniowych: Zawsze udzielają ostatecznej odpowiedzi (rozwiązanie, brak rozwiązania, nieskończenie wiele rozwiązań) Odpowiedź zostaje wyznaczona w ściśle określonej ilości iteracji Rozwiązanie jest dokładne w tym sensie, że dokładność nie jest ograniczona przez algorytm a tylko przez dokładność arytmetyki maszyny obliczeniowej
Problemy nieliniowe Rozwiązywanie równań nieliniowych o postaci: gdzie f(x) jest funkcją nieliniową Obejmuje to oczywiście przypadek każdego równania:
Problemy nieliniowe Szczególnym przypadkiem są wszelkiego rodzaju problemy optymalizacyjne – poszukiwanie ekstremum (maksimum albo minimum) funkcji kosztu lub zysku: gdzie f’(x) to pierwsza pochodna funkcji f(x)
Rozwinięcie w szereg Taylora Jeżeli znamy wartość funkcji i wszystkich jej pochodnych w pewnym punkcie, można wyznaczyć na tej podstawie wartość w innym punkcie:
Rozwinięcie w szereg Taylora Przy obcięciu do wyrazu rzędu k reszta rozwinięcia może być oszacowana jako składnik rzędu (O - funkcja Landaua):
Rozwinięcie w szereg Taylora Często jest stosowane nawet rozwinięcie obcięte pierwszego rzędu: Jest to tym lepsze przybliżenie prawdziwej wartości, im mniejsza jest wartość Δx Do takiego przybliżenia nawiązuje algorytm Newtona-Raphsona
Algorytm Newtona-Raphsona Raphson współpracował z Newtonem, w charakterze jego sekretarza(?), redaktora jego dzieł? Metodę rozwiązywania równań nieliniowych ogłosił książkowo w 1891, podczas gdy analogiczna metoda Newtona została opublikowana w książce z 1736, choć napisanej w 1871 roku. Newton znał książkę Raphsona i wyrażał się o niej pochlebnie. Trudno więc ustalić, kto był autorem pomysłu. Metoda zwana jest więc pod nazwą Newtona-Raphsona. Isaac Newton (1643-1727) Joseph Raphson (1648-1715)
Algorytm Newtona-Raphsona
Algorytm Newtona-Raphsona Algorytm zaczyna z pewnego punkty x0, będącego pierwszym oszacowaniem prawdziwego rozwiązania x* W punkcie x0 na podstawie znajomości pochodnej funkcji f(x0) rozwiązywane jest równanie liniowe:
Algorytm Newtona-Raphsona Rozwiązanie tego równania: wyznacza kolejne oszacowanie rozwiązania x*:
Algorytm Newtona-Raphsona Ten sam sposób postępowania jest stosowany w kolejnych iteracjach: Kolejne wartości xi są coraz lepszymi oszacowaniami x*
Przykład
Algorytm Newtona-Raphsona Zamiast wyprowadzenia bazującego na rozwinięciu Taylora można zastosować intuicję geometryczną: Wartość pochodnej funkcji w punkcie to nachylenie stycznej do wykresu funkcji w tym punkcie
Algorytm Newtona-Raphsona Problem nieliniowy jest zastąpiony serią problemów liniowych Każdy problem liniowy jest lokalnym przybliżeniem Taylora pierwszego rzędu dla problemu nieliniowego
Algorytm Newtona-Raphsona W każdej iteracji jest wyznaczane kolejne przybliżenie rozwiązania Proces iteracyjny jest kończony kiedy względny błąd procentowy: spadnie poniżej ustalonej wartości (dokładności algorytmu) Może być również zastosowane ograniczenie na maksymalną ilość iteracji algorytmu
Algorytm Newtona-Raphsona System rozwiązujący równanie: zgodnie z algorytmem Newtona-Raphsona nie zna „globalnie” funkcji f(x), natomiast musi mieć możliwość zapytać o wartość f(x), f’(x) w arbitralnym punkcie x Kolejne pytania o wartość funkcji zwiększają wiedzę systemu rozwiązującego o funkcji. Początkowa hipoteza dotycząca rozwiązania x0 z każdą iteracją ulega zmianie, dzięki uwzględnieniu nowych informacji o funkcji f(x)
Przykład zastosowania Wyznaczanie odwrotności liczby Normalnie, żeby wyznaczyć odwrotność liczby a należy podzielić 1 przez liczbę a Możliwe jest też rozwiązania nieliniowego; jeśli x jest odwrotnością a, to spełnione jest:
Przykład zastosowania
Przykład zastosowania
Przykład – iteracja 1
Przykład – iteracja 2
Przykład – iteracja 3
Pułapki – wybór punktu startowego
Pułapki – wybór punktu startowego
Pułapki – oscylacje dookoła ekstremum
Ekstrema – dzielenie przez zero
Pułapki – jedno z wielu rozwiązań
Przykład aplikacji Superkomputery, takie jak Cray pozbawione są jednostki dzielenia liczb Zamiast dzielenia przez liczbę, realizowane jest mnożenie przez jej odwrotność: Odwrotność liczby jest znajdowana przez algorytm Newtona-Raphsona (jak we wcześniejszym przykładzie)
Przykład aplikacji Każda iteracja wymaga dwóch mnożeń i jednego odejmowania Wyznaczenie odwrotności przy podwójnej precyzji wymaga ok. sześciu iteracji Jeżeli punkt startowy jest wybrany odpowiednio (z tabeli) – ilość iteracji zmniejsza się o połowę Często stosowany jest sprzętowy akumulator mnożąco-odejmujący