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

22.11.2014 Views

20 Algoritmus v matlabu: function [x, it ,ex] = sd(A,b,x0,e) % function [x, it ,ex] = sd(A,b,x0,e) % % funkce minimalizuje kvadratickou vazbu metodou nejvetsiho % spadu % % x ... reseni % it ... pocet iteraci % ex ... chyby v iteracich % % A ... matice soustavy % b ... vektor pravych stran % x0 ... pocatecni aproximace % e ... pozadovana presnost n = max(size(A)); it = 0; x = x0; r = b − A∗x; Ar = A∗r; alfa = r ’∗ r /( r ’∗Ar); xn = x + alfa∗r; ex( it +1) = norm(xn−x,2); while (ex( it +1)>=e) & (norm(r)>0) it = it +1; x = xn; r = r − alfa∗Ar; Ar = A∗r; alfa = r ’∗ r /( r ’∗Ar); xn = x + alfa∗r; end ex( it +1) = norm(xn − x,2); x = xn; Výpis 1: Algoritmus obecné metody největšího spádu 4.3.3 Příklady použití metody největšiho spádu F (x) = 1 (Ax, x) − (b, x) (11) 2

21 Příklad 4.2 Minimalizujte kvadratickou funkci (1), pokud V matlabu zavoláme funkci (6) >> A = [2 −1; −1 2] A = 2 −1 −1 2 >> b = [1; 1] b = 1 1 >> e = 0.00001 e = 1.0000e−005 A = >> nejvetsi spad(A,b,[−1;−2],e) ans = 1.0000 1.0000 [ 2 −1 −1 2 ] [ 1 , b = 1 Výpis 2: MNS: Rěšení 1. příkladu V našem případě bylo potřebných 16 iterací. Příklad 4.3 Minimalizujte kvadratickou funkci (1), pokud V matlabu zavoláme funkci (6) A = [ 2 1 1 2 >> A = [2 1; 1 2];b = [−2; 2];e = 0.00001; >> nejvetsi spad(A,b,[−1;−2],e) ans = −2.0000 ] [ −2 , b = 2 ] ]

20<br />

Algoritmus v matlabu:<br />

function [x, it ,ex] = sd(A,b,x0,e)<br />

% function [x, it ,ex] = sd(A,b,x0,e)<br />

%<br />

% <strong>funkce</strong> minimalizuje kvadratickou vazbu metodou nejvetsiho<br />

% spadu<br />

%<br />

% x ... reseni<br />

% it ... pocet iteraci<br />

% ex ... chyby v iteracich<br />

%<br />

% A ... matice soustavy<br />

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

% x0 ... pocatecni aproximace<br />

% e ... pozadovana presnost<br />

n = max(size(A));<br />

it = 0;<br />

x = x0;<br />

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

Ar = A∗r;<br />

alfa = r ’∗ r /( r ’∗Ar);<br />

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

ex( it +1) = norm(xn−x,2);<br />

while (ex( it +1)>=e) & (norm(r)>0)<br />

it = it +1;<br />

x = xn;<br />

r = r − alfa∗Ar;<br />

Ar = A∗r;<br />

alfa = r ’∗ r /( r ’∗Ar);<br />

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

end<br />

ex( it +1) = norm(xn − x,2);<br />

x = xn;<br />

Výpis 1: Algoritmus obecné metody největšího spádu<br />

4.3.3 Příklady použití metody největšiho spádu<br />

F (x) = 1 (Ax, x) − (b, x) (11)<br />

2

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

Saved successfully!

Ooh no, something went wrong!