Dokumentacja klasy SecantDivision

#include <SecantDivision.h>

Diagram dziedziczenia dla SecantDivision

SectionLineSearch LineSearch Method Observable Lista wszystkich składowych.

Opis szczegółowy

Metoda siecznych.

Metoda siecznych jest podobna do metod Bolzano i Newtona-Raphsona. Tak samo jak w metodzie Bolzano wykluczamy część przedziału i używamy do tego cely pochodnej, ale tym razem interesuje nas jej wartość. Każde kolejne przybliżenie punktu stacjonarnego wyliczamy ze wzoru:

\[ x_{k+1} = x_k - f'(x_k) \frac{x_k-x_{k-1}}{f'(x_k)-f'(x_{k-1})} \]

Jak można zauważyć drugi czynnik iloczynu jest odwrotnością numerycznego przybliżenia drugiej pochodnej funkcji celu, a więc wzór w zasadzie przybliża metodę Newtona-Rowsona.

Algorytm metody:

Oznaczenia:
$ a $ - lewy kraniec przedziału poszukiwań w danej iteracji
$ b $ - prawy kraniec przedziału poszukiwań w danej iteracji
$ x_m $ - bieżące przybliżenie punktu stacjonarnego

Dane potrzebne do obliczeń:
$ f(x) $ - minimalizowana funkcja jednej zmiennej
$ a^0 $ - lewy kraniec początkowego przedziału poszukiwań
$ b^0 $ - prawy kraniec początkowego przedziału poszukiwań
$ \varepsilon $ - wymagana dokładność rozwiązania

Krok 1:
Obliczyć $ f'(a^0) $ i $ f'(b^0) $.

Krok 2:
Jeśli $ f'(a^0)>0 $, a $ f'(b^0)<0 $, zakończyć działanie algorytmu stwierdzając, że punkt stacjonarny nie znajduje się w przedziale początkowym.

Krok 3:
Obliczyć:

\[ x=b-f'(b) \frac{b-a}{f'(b)-f'(a)} \]

Obliczyć pochodną w punkcie $ x $

Krok 4a:
Jeśli $ f'(x)<0 $, to podstawić $ a=x $ i przejść do kroku 5.
W przeciwnym wypadku przejść do kroku 4b.

Krok 4b:
Jeśli $ f'(x)>0 $, to podstawić $ b=x $.
Przejść do kroku 5.

Krok 5:
Jeśli $ |f'(x)|>\varepsilon $, przejść do kroku 3.
W przeciwnym wypadku zakończyć algorytm. Wynikiem jest ostatni punkt $ x $.

Algorytm zaimplementowano na podstawie:
Ostanin. A: Metody i algorytmy optymalizacji, Wydawnictwo Politechniki Białostockiej, Białystok, 2003

Zobacz również:
SectionLineSearch

Niniejszy dokument został półautomatycznie wycięty z dokumentacji kodu źródłowego programu Eduoptim 2. Pełna dokumentacja dostępna jest wraz ze źródłami bądź osobno w dziale pliki.
Hierarchia klas w programie nie odpowiada klasyfikacji metod optymalizacji.