Rozwiązywanie zadań optymalizacji 101
nej metryki BFGS. Obie te funkcje współpracują z algorytmem minimalizacji kierunkowej, opartym na interpolacji wielomianowej drugiego lub trzeciego stopnia. Możliwe są tu następujące opcje korzystania z tych funkcji:
x = fminu('fun',x0)
x = fminu('funx0,options)
x = fminu('fun',x0,options,'grad')
x = fminu('fun',x0,options,'grad',pl,p2,...)
[options,x] = fminu('funx0)
Plik funkcyjny o nazwie fun.m powinien zawierać opis problemu optymalizacyjnego /(x) i zwracać wartość funkcji w aktualnym punkcie x.
Plik gradientu o nazwie grad.m powinien zawierać poszczególne składowe wektora gradientu df = grad(x) zwracane przez funkcję jako zmienna wyjściowa df.
Wektor x0 określa warunki startowe.
Parametry p 1, p2, ... mogą służyć do modyfikacji funkcji, przy czym w takim przypadku zarówno funkcja celu, jak i gradient powinny zawierać te parametry w linii wywołania
f = fun(x,pl,p2,.,.)
oraz
df = grad(x,pl,p2,...)
Wektor options może pojawiać się zarówno wśród parametrów wejściowych, jak i wyjściowych.
Zadanie optymalizacji nieliniowej z ograniczeniami jest sformułowane następująco
(9.9)
min /(x),
przy ograniczeniach
(9.10)
(9.11)
Zadanie to może być rozwiązane za pomocą funkcji constr x = constr(‘fun’,xO,options,vlb,vub,’grad’,pl,p2,...)
lub
Linia definiująca plik fun.m powinna mieć postać function [f,g] = fun(x)