Wojciech Bińka 14462 grupa ID04P03
Laboratorium algebry liniowej Ćwiczenia nr 6 – Minimalizacja funkcji dwóch zmiennych.
Na ćwiczeniach zajmowaliśmy się minimalizacją funkcji, w tym celu wykorzystaliśmy algorytm naiwny który polegał na robieniu małych kroków w kierunku największego spadku do momentu gdy już nie dało się zejść niżej. Drugi algorytm DFP (Davidon, Fletcher, Powell ) polegał na wykorzystaniu informacji o kształcie funkcji z poprzedniego kroku.
Żeby lepiej zobaczyć jak wygląda działanie tych algorytmów będziemy potrzebować wykresów poziomicowych minimalizowanych funkcji. Do stworzenia takich wykresów będzie potrzebna funkcja która z pomocą funkcji countour2d, narysuje poziomice. Kolejna funkcja której będziemy potrzebować będzie przechowywać wzory minimalizowanych funkcji i ich gradienty.
Algorytm naiwny.
function [x0,f0,iter]=naiwna(x0,maxiter,krok)
x0 – [x1,x2] punkt starowy.
Maxiter – Ilośc iteracji jaką może wykonać funkcja.
Krok – Długość kroku.
Iter – ilośc iteracji.
f0 – wartość funkcji w punkcie.
Tak długo puki norma gradientu będzie większa niż 0.001 i nie przekroczona zostanie maksymalna liczba iteracji, funkcja będzie:
Obliczać wartość funkcji w punkcie i jej gradientu.
Oblicza normę gradientu
Wykonuje krok w kierunku ujemnego gradientu
Z pomocą xsegs rysuje krok na wykresie.
Wadą tej funkcji jest możliwość zatrzymania się na minimum lokalnym, brak możliwości określenia kształtu funkcji przez co nawet w prostych przypadkach ilość iteracji będzie uzależniona od wielkości kroku.
Drugi algorytm dfp nie potrzebuje wielkości kroków do działania. Ilość iteracji potrzebnych do znalezienia rozwiązania jest znacznie mniejsza (porównanie w pliku .xlsx)