#include <NewtonRaphson.h>
Diagram dziedziczenia dla NewtonRaphson
Metoda Newtona-Raphsona jest oparta na kwadratowym modelu funkcji - rozwinięciu funkcji celu w szereg Taylora drugiego rzędu. Dla funkcji jednej zmiennej takie rozwinięcie (z pominięciem reszty Lagrange'a) ma postać:
Chcąc znaleźć ekstremum powyższej funkcji, należy (z warunku koniecznego na istnienie ekstremum) wyzerować jej pochodną, która jest następująca:
Stąd bierze się wzór na kolejne punkty w metodzie Newtona-Raphsona:
W powyższy sposób metoda znajduje minimum funkcji kwadratowej w zaledwie jednej iteracji. Minimalizacja funkcji wyższego rzędu niż kwadratowa (czyli wyższego rzędu niż zastosowany model) może zająć więcej iteracji.
Należy zauważyć, że powyższa metoda pozwala znaleźć ekstremum, niekoniecznie minimum. Z tego powodu w implementacji algorytmu dodano sprawdzanie znaku drugiej pochodnej - jeżeli jest ona ujemna, metoda kończy działanie.
Ponadto, taka metoda wyznaczania kolejnych punktów wymaga oczywiście, aby funkcja celu była podwójnie różniczkowalna.
Warunek stopu metody jest oparty na szacowanej odległości do ekstremum:
Algorytm metody:
Oznaczenia:
- punkt w k-tej iteracji
Dane potrzebne do obliczeń:
- minimalizowana funkcja jednej zmiennej
- punkt początkowy
- wymagana dokładność rozwiązania
Krok wstępny:
Podstaw:
Krok 1:
Oblicz .
Przejdź do kroku 2.
Krok 2:
Sprawdź warunek stopu.
Jeśli jest on spełniony, to STOP. Wynikiem jest .
W przeciwnym wypadku przejdź do kroku 3.
Krok 3:
Sprawdź wartość drugiej pochodnej w punkcie :
jeśli , to przejdź do kroku 4.
W przeciwnym wypadku STOP - druga pochodna równa zeru, optymalizacji nie można kontynuować.
Krok 4:
Podstaw .
Wyznacz kolejny punkt:
Przejdź do kroku~1.
Algorytm zaimplementowano na podstawie:
Ostanin. A: Metody i algorytmy optymalizacji, Wydawnictwo Politechniki Białostockiej, Białystok, 2003