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)
Poszukiwanie inkrementacyjne
Bisekcja
Bisekcja
Metoda Brenta
Metoda Brenta
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