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


Metody publiczne

 ~SecantDivision (void)
 Destruktor.
virtual std::auto_ptr< MethodClone () const
 Tworzy kopię metody.
virtual const wxString & Name () const
 Zwraca nazwę metody.
virtual MethodIdType Id () const
 Zwraca ID metody.
virtual bool CanHandle (const ProblemBase *pProblem) const
 Sprawdza, czy dany problem może być rozwiązany tą metodą.
virtual bool CanAssist (const ProblemBase *pProblem) const
 Sprawdza, czy metoda może wspomóc rozwiązanie danego zadania.

Statyczne metody publiczne

static MethodIdType ClassId ()
 Zwraca ID metody.

Metody chronione

 SecantDivision (void)
 Konstruktor domyślny.
 SecantDivision (const SecantDivision &from)
 Konstruktor kopiujący.
virtual wxString & rName ()

Przyjaciele

class SectionLineSearchPanel< SecantDivision >


Dokumentacja konstruktora i destruktora

SecantDivision::SecantDivision const SecantDivision from  )  [protected]
 

Konstruktor kopiujący.

Parametry:
from Obiekt, którego wartość jest kopiowana.


Dokumentacja funkcji składowych

bool SecantDivision::CanAssist const ProblemBase pProblem  )  const [virtual]
 

Sprawdza, czy metoda może wspomóc rozwiązanie danego zadania.

Dokładniej rzecz biorąc sprawdzane jest, czy metoda może być wykorzystana przez metodę optymalizacji wielu zmiennych do optymalizacji w kierunku przy rozwiązywaniu danego zadania optymalizacji.

Reimplementowana z SectionLineSearch.


Dokumentacja dla tej klasy została wygenerowana z plików:
Wygenerowano Fri Sep 29 21:04:54 2006 dla EduOptim2 programem  doxygen 1.4.6