TEKNILLINEN KORKEAKOULU Systeemianalyysin laboratorio Mat-.39 Optimointioppi Kimmo Berg 8. harjoitus - ratkaisut. a)huomataan ensinnäkin että kummankin jonon raja-arvo r on nolla. Oletetaan lisäksi että jonot ovat ei-negatiivisia. Laskemalla sivun 57 suhde, jonolle r k+ = r k saadaan r k+ r k = r p p k. Kun p =, jono suppenee raja-arvoon. Jos p =, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+ = r k, suhde on r k+ k r k = r p p k k. Kun p =, jono suppenee raja-arvoon 0. Jos p =, jono hajaantuu, sillä r k = r 0 k(k )/ ja suhde r k+ = r 0 k(k ) k(k+)/ k lähestyy ääretöntä. Jono suppenee superlineaarisesti. b) Koska jono suppenee kvadraattisesti, pätee r k+ r lim k r k r = β <, missä r on jonon raja-arvo. Tästä seuraa, että r k+ r r k+ r lim = lim k r k r k r k r r k r = 0.. Olkoon epävarmuusvälin pituus l, kun n askelta menetelmää on suoritettu. Kyseisen epävarmuusvälin suhde alkuperäiseen α = l/(b a ). I: Tasahaulle pätee: n (b a )/l = /α II: Dikotoominen haku: n pitää valita s.e. n N, missä N toteuttaa yhtälön (/) (N/) = l/(b a ) = α, eli N = ln α/ ln. III: Kultaisen leikkauksen menetelmä: n pitää valita s.e. n N, missä N toteuttaa yhtälön (0.68) (N ) = α, eli N = ln α/ ln0.68 +. IV: Fibonaccin menetelmä: n pitää valita s.e. F n (b a )/l = /α ja F n on n:s luku Fibonaccin lukujonossa. Alla olevassa taulukossa on esitetty tarvittavien funktion arvon laskemisten lukumäärä kussakin menetelmässä α I II III IV 0. 9 7 6 6 0.0 99 4 0.00 999 0 6 6 0.00 9999 7 0 3. Jyrkimmän laskun menetelmälle pätee teoreema (Luenberger Linear and Nonlinear Programming p. 0): Olkoon f kahdesti differentioituva funktio, x sen lokaali minimi, ja funktion f Hessen matriisin ominaisarvot x :ssä: pienin a>0 ja suurin A>0. r k
Jos jono {x k } suppenee x :een, niin jono {f(x k )} suppenee f(x ):een lineaarisesti enintään suppenemiskertoimella s = ( A a A+a). Oletetaan yksinkertaisuuden vuoksi että f on kvadraattinen eli f(x) = /x Qx b x. Nyt myös h(x) on kvadraattinen, sillä f(x) = Qx b ja h(x) = x Q x x Qb+ b b. Suppenemiskerroin s riippuu siis Q :n ominaisarvoista (kvadraattisen funktion ), missä ˆr = A a on Hessen matriisi on toisen asteen termin matriisi). Eli s = ( ˆr ˆr+ Q :n konditioluku. Q ominaisarvot ovat Q:n ominaisarvojen neliöt (Q x = QQx = Qλx = λ x, missä λ Q:n ominaisarvo) joten konditioluvullekin pätee ˆr = r, missä r on Q:n konditioluku. Nyt selvästi ˆr = r > r >, joten h(x):n minimointi jyrkimmän laskun menetelmällä konvergoi hitaammin. 4. Määritellään f(x) = f(mx). Kun y = Mx, pätee ja Newton askel muunnokselle f x:ssä on: f(x) = M f(y) f(x) = M f(y)m. x k+ x k = ( f(x)) f(x) = (M f(y)m) (M f(y)) = M f(y) M M f(y) = M f(y) f(y) = M (y k+ y k ) Siis, Newton askeleet f:lle ja f:lle riippuvat lineaarisesta muunnoksesta ja y k+ = Mx k+. 5. Koska matriisi H on positiivisesti definiitti, voidaan mikä tahansa piste y esittää muodossa y = Hx. Näytetään, että myös H on positiivisesti definiitti, kun H on säännöllinen ja positiivisesti definiitti, y H y = (Hx) H Hx = x H H Hx = x H x = x Hx > 0 Nyt saadaan, että d = H f(x) on laskusuunta, sillä f(x) d = f(x) H f(x) < 0, kun f(x) 0 eli kun ei olla lokaalissa ääriarvopisteessä. 6. Ohjeistusta Matlabiin löytyy esim. webbisivulta http://www.mathworks.com/access/helpdesk/help/helpdesk.shtml tai Matlabissa komennossa help funktionnimi. Omat funktiot kirjoitetaan Matlabilla kyseiseen m- tiedostoon, esim. nelio.m: function y=nelio(x,x)
7. - y=x.^+x.^; Erityisesti kertolaskuissa tulee muistaa että laittaa kertolaskun (*) sijasta elementtikohtaisen kertolaskun (.*), kun siis ei halua laskea matriisilaskua. Yleisesti: function [y,...,yn]=funktionnimi(x,...,xt) Funktioita määriteltäessä kannattaa myös tutustua Matlabin inline-funktioihin ja symboliseen toolboxiin, eli esimerkiksi: tai t=inline( x.^ );%määritellään inline funktio t feval(t,3);%evaluoidaan t pisteessä 3 syms s t %määritellään sumboliset muuttujat s ja t t=s.^; subs(t,3);%sijoitetaan symbolisen muuttujan paikalle reaaliluku, tai s=4;eval(t);%evaluoi t:n nyt kun s on saanut arvonsa Optimoinnissa kaikki on kuitenkin toisin. Matlab nimittäin optimoi vain ensimmäisen vektorin suhteen ja loput ovat parametrejä. Lisäksi kohde- ja rajoitusehtofunktioissa tulisi olla samat parametrit, joten kohdefunktio kannattaa kirjoittaa ilman parametreja: function y=nelio(x) y=(x()-5).^+x().^; Kyseiseen funktioon voidaan viitata esim. nelio([ 3]). Rajoitusehdot kirjoitetaan samalla tavalla m-tiedostoon: function [c,ceq]=rajoitus(x)%epäyht.raj. ekaan vektoriin c=[x()+*x()-;-x();-x()]; ceq=[];%ei yhtälörajoituksia Nyt optimointi epäyhtälörajoituksin voitaisiin suorittaa (ensimmäinen epäyhtälörajoitus voitaisiin myös kirjoittaa lineaarisiin epäyhtälörajoitteisiin): fmincon( nelio,[0. 0.],[],[],[],[],[],[], rajoitus ); %myös nelio ->@nelio Fminconin argumentit ovat ) kohdefunktio, ) alkuarvaus, 3) ja 4) rajoitukset muotoa Ax b, missä A ja b ovat 3. ja 4. argumentti, 5) ja 6) rajoitukset Ax = b, 7) ja 8) x x x, 9) epälineaariset rajoitukset g (x) 0, g (x) = 0 ja 0) optimointivalinnat (options). Argumentteja voi syöttää siihen asti kun niitä tarvii siten, että väliin jäävät tyhjät argumentit täytetään hakasuluilla []. 8. a) Fibonaccin algoritmi on tiedostossa minfibo.m ja Newtonin menetelmä tiedostossa minew.m. Alla olevassa kuvassa on esitetty Fibonaccin algoritmin luottamusvälin supistuminen ja Newtonin menetelmän iteraatiopisteitä 0, 0.33, 0.35 ovat kuvassa olevat pallot. Tiedostossa g.m on määritelty funktio g (x) = e x + x ja tiedostoissa dg.m ja ddg.m sen kaksi ensimmäistä derivaattaa. Piirrä g :n kuvaaja: 3
.5 Tehtävä.4.3.. 0.9 0.8 0 0. 0. 0.3 0.4 0.5 0.6 0.7 0.8 0.9 x=-4:0.:4; plot(x,g(x)) Tutki MATLAB-funktiota minew.m ( File/Open M-File... ). Hae funktion f minimi Newtonin algoritmilla ja tulosta iterointipisteet kuvaajaan. ip=minew( g,-4) hold on grid plot(ip,g(ip), * ) Tutki MATLAB-funktioita minfibo.m ja Fibo.m. Kokeile Fibonaccin hakua funktioon f. minfibo( g,-,,0) b) Tarkastellaan yhtälön g(x) = 0 ratkaisemista Newtonin menetelmällä. Osoitetaan seuraava tulos: Jos g on jatkuva, g(x ) = 0, g (x ) 0, niin valittaessa x 0 riittävän läheltä x :ä x k x 0, kun k ja x k+ x < x k x, kun x k x. Tod. Newtonin menetelmä mistä seuraa, että g(x k+ ) g(x k ) + g (x k )(x k+ x k ) = 0 x k+ = x k g(x k )/g (x k ), x k+ x = x k x [g(x k ) g(x )]/g (x k ) = [g(x k ) g(x )+g (x k )(x x k )]/g (x k ). Huom. g(x ) = 0. Taylorin lauseesta: g(x ) = g(x k ) + g (x k )(x x k ) + g (ξ)(x x k ) /, 4
missä ξ on x ja x k välillä. Sijoittamalla tämä yllä saatuun lausekkeeseen saadaan x k+ x = g (ξ)(x x k ) /(g (x k )). Koska g on jatkuva, löytyy sellainen k > 0 että g (ξ) < k kun ξ on x :n ympäristössä. Lisäksi koska g on jatkuva ja g (x ) 0 löytyy k > 0 siten, että g (ξ) > k jossakin x :n ympäristössä. Siis voidaan päätellä, että x k+ x < k (x x k ) /(k ) = x x k k k x x k, () kun x k on riittävän lähellä x :ä. Erityisesti, jos valitaan x 0 s.e. x x 0 < k /k, niin x x k+ < x x k, jolloin siis x x k < k /k. Siten epäyhtälö voidaan kirjoittaa muodossa x x k+ < C k x x k, missä C k = x x k k /(k ) ]0, [ on vähenevä sarja, joten x x k 0. 5