22.11.2014 Views

Minimalizace kvadratické funkce s kvadratickými ... - FEI VŠB

Minimalizace kvadratické funkce s kvadratickými ... - FEI VŠB

Minimalizace kvadratické funkce s kvadratickými ... - FEI VŠB

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

36<br />

function [reseni] = minimum(A,b,c,bod0,e)<br />

% function [reseni] = minimum(A,b,c,bod0,e)<br />

%<br />

% reseni ... reseni<br />

%<br />

% A ... matice soustavy (2x2, pozitivne definitni , symetricka)<br />

% b ... vektor pravych stran<br />

% c ... kvadrat polomeru kruznice<br />

% bod0 ... pocatecni aproximace<br />

% e ... pozadovana presnost<br />

%<br />

xn=bod0; % pocatecni aproximace nemusi lezet na kruznici<br />

it = 0; % pocet iteraci<br />

r = b − A∗xn; % vektor spadu pocatecni aproximace<br />

zkracovac=1; % koeficient zkraceni vektoru mimo kruznici<br />

while (norm(r,2)>=e) % presnost reseni lze urcit podle delky gradientu (je iteracne zkracovan)<br />

it = it +1;<br />

if (je z mnoziny(xn,c) == 0) % pokud predesla iterace nelezi v mnozine<br />

xn=na kruznici(xn,sqrt(c)) ; % projekce na kruznici<br />

stare z=vrat z(xn,A,b); % hodnota <strong>funkce</strong> pro stary bod<br />

r=(b−A∗xn)∗zkracovac; % zkraceni vektoru spadu<br />

nove z=vrat z(na kruznici(xn+r,sqrt(c)) ,A,b); % hodnota <strong>funkce</strong> pro novy bod<br />

while (nove z > stare z) && (je z mnoziny(xn+r∗zkracovac,c) == 0)<br />

zkracovac=zkracovac/2;<br />

nove z=vrat z(na kruznici(xn+r∗zkracovac,sqrt(c)),A,b);<br />

end;<br />

xn=xn+r∗zkracovac;<br />

else % pokud predesla iterace lezi v mnozine<br />

end;<br />

end;<br />

r = b − A∗xn;<br />

alfa = (norm(r,2)ˆ2)/(dot(A∗r,r)) ;<br />

xn = xn + alfa∗r;<br />

reseni=[xn(1) xn(2) vrat z (xn,A,b) it ]<br />

Výpis 10: Algoritmus modifikované metody největšího spádu s projekcí na množinu s<br />

nerovnostní vazbou

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!