grupp: top02-50 namn1: Martin Claesson namn2: ************************************************************ Lab 2 av Martin Claesson 770107-2550 Grupp: top-50 *** Del I *** 1.a: Metoderna konvergerar mot punkten (-2.25,-3.06) BL kräver 9 iterationer. Newton kräver endast en. 1.b: Funktionen är konvex så det är ett optimalt globalt minimum. 1.c: Newton gör en approximation av optimallösningen genom en Taylor-utveckling. I detta fall råkar detta sammanfalla med optimala lösningen. 2.a: Newton: 5 iterationer till punkt (1,1) Newtons modifierade: 13 iterationer till punkt (1,1) BL: 201 interationer till punkt (0.93,0.86) och då uppnås max antal iterationer. 2.b: Funktionen är inte konvex, men punkten (1,1) är ett globalt minimum eftersom när jag väljer metoden "Newtons modifierade" och startar i punkterna (2,3) och (-2,3) söker sig metoden mot lösningen genom "dalen" i grafen från båda hållen. Det innebär att funktionen har högre värden i resten av "dalen". 2.c: Newton är mycket effektiv. 3.a: Newton fungerar inte för att hessianen är noll i (0,0). Med Marquardt går det dock bra och optimal punkt är (3,1). 3.b: Lokalt min: (3,1) Lokalt max: (-3,-1) Sadelpunkter: (3,-1),(-3,1) *** Del 2 *** 1.a: Matlab prompt: >> type objfun function f = objfun(x) f = -( x(1) - 2*x(1)^2 + 2*x(2) - x(2)^2 + x(1)*x(2)); >> type confun function [c,ceq] = confun(x) c=[x(1)^2-x(2); x(2)-2*x(1)]; ceq=[0;0]; >> [x,fval,exitflag,output] = fmincon(@objfun,[0,0],[],[],[],[],[],[],@confun); >> x x = 0.6250 1.2500 1.b: Gradienten blir: [ 1 - 4*x(1) + x(2) ] [ 2 - 2*x(2) + x(1) ] Hessianen blir: [-4 1] [ 1 -2] Hessianen är negativt definit => lokalt maxima Eftersom gradienten inte innehåller några uttryck av andra graden finns det bara en punkt där gradienten är noll. Därmed är punkten ett globalt maxima. 2: >> type objfun2 function f = objfun2(x) f = x(1); >> type confun2 function [c,ceq] = confun2(x) c=[(x(1)-1)^2 + (x(2)+2)^2-16; -x(1)^2-x(2)^2 + 13]; ceq=[]; Löser med fmincon och får följande lösningar med olika startpunkter: (0,0): inget resultat (1,1): x=(3.4,1.2) efter 6 iterationer (-1,-1): x=(-3.0,-2.0) efter 7 iterationer (3.7,0): x=(3.6,0) efter 4 iterationer Det här verkar ju helt knäppt. Vad har jag gjort fel? *** Del III *** 1. Exempel 2 EVP konvergerar mot (0.7,0.7) IVP konvergerar mot (3.2,0.7) Exempel 3 EVP konvergerar mot (4,-3.5) IVP konvergerar mot (4,-3.5) 2. Alla punkterna ligger så att något bivillkor är aktivt och ingen punkt ligger på någon stationär punkt. 3. Exempel 3 borde ha optima vid (4,-3.5) eftersom båda metoderna går mot denna punkt. Exempel 2 jämför jag målfunktionens värde i de två punkterna. Och får att punkten (3.2,0.7) ger målfunktionen ett lägre värde.