17.04.2014 Views

Matlab Hogyan - Hidrodinamikai Rendszerek Tanszék

Matlab Hogyan - Hidrodinamikai Rendszerek Tanszék

Matlab Hogyan - Hidrodinamikai Rendszerek Tanszék

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.

4. FEJEZET. NEMLINEÁRIS FELADATOK 17<br />

fminbnd.eps<br />

4.1. ábra. Az f(x) = (x − 1) 2 sin(10x) függvény és a két megtalált minimumhely.<br />

<strong>Matlab</strong> függvény a fminbnd(fun,x1,x2), mely a fun függvény x1 és x2 közötti egyik, lokális minimumhelyét<br />

próbálja megkeresni. Példaként keressük meg a<br />

f(x) = (x − 1) 2 sin(10x)<br />

függvény minimumát az 0 ≤ x ≤ 2 intervallumon! A kapcsolódó példaprogram (fminbnd demo.m) két<br />

iterációt indít, egyet a 0 ≤ x ≤ 2 intervallumon, másikat a 1 ≤ x ≤ 2-en. Mint az a 4.1 ábrán látszik,<br />

két különböző minimumhelyet talált meg az eljárás, ami erősen óvatósságra int a könnyelmű használattal<br />

kapcsolatban. A függvényhívás bal oldalán elegendő egy érték is (tehát pl. x1 az [x1,y1] helyett), ekkor<br />

csak minimumhely koordinátáját adja meg az eljárás. Az optimset paranccsal különböző opciókat állíthatunk<br />

be, itt az összes iterációs lépésről lekérdeztük az információt. Hasonlóan beállítható a tolerancia (TolX), a<br />

maximális iterációk száma (MaxIter) és a függvény kiértékeléseinek maximális száma (MaxFunEvals). A<br />

grafikával kapcsolatban a részleteket a 6. fejezet tartalmazza.<br />

function fmin1D_demo<br />

fmin1D demo.m<br />

[x1,y1] = fminbnd(@fv,0,2);<br />

[x2,y2] = fminbnd(@fv,1,2,optimset(’Display’,’iter’));<br />

fplot(@fv,[0,2]), hold on<br />

plot(x1,y1,’rx’,’Markersize’,15), hold on<br />

plot(x2,y2,’r+’,’Markersize’,15), hold off<br />

xlabel(’x’), ylabel(’y’), grid on<br />

function y=fv(x)<br />

y=(x-1)^2*sin(10*x);<br />

A program kimenete:<br />

>> fmin1D_demo

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

Saved successfully!

Ooh no, something went wrong!