Sie sind auf Seite 1von 16

Desarrollo: Tarea # 5

Nombre: Benjamin Andres Huerfano Zapata - COD.: 201511264

Ejercicio 1:
Considere (1 , 2 ) = 12 + 22 + 1 2 1 2
a) Comenzando en el punto 0 = [1 0] calcule resultante de 2 pasos de
Steepest Decent (bsqueda de lnea exacta).
b) Comenzando en el punto 0 = [2 ] calcule el resultante de un paso
del mtodo de newton.
c) Si el punto inicial es tal que ||0 || = 10, calcule el numero de
iteraciones de Steepest Decent que grantiza 0.001 (Ayuda:
La desigualdad de Rayleigh establece que para > 0 y cualquier vector
, 2 2 2 ).
Desarrollo:
a)

21 + 2 1
1
]
(0 ) = [ ]
22 + 1 1
0
= arg min ( ( ))

(1 , 2 ) = [

Derivamos e igualamos a 0 para encontrar el mnimo de la funcin con


respecto a .

1
1
1
( ( )) (( )) = 0 = ([ ] [ ]) ( [ ])
0
0
0

1
1
1
([
]) ( [ ]) = [1 2 ] ([ ]) = 1 2 = 0
0
0
0
1
=
2
El siguiente paso est dado por +1 = + (( ))
1
1 1
1
+1 = [ ] + [ ] = [2]
0
2 0
0
Ahora segunda iteracin:
0
(+1 ) = [ 1]

1
1
0
0
0
1
1
1
1 0
([2] [ 1]) ( [ 1]) = ([ 2 ]) [1] = [ ] [1] =
1

2
4
2
2 2
0
2
2
2

2
1
=
2

+2
b) 0 = [2 ]

1
1
1 0
= [2] + [1] = [2]
1
2
0
2
4

2 + 2 1
4.97
(1 , 2 ) = [ 1
] (0 ) = [
]
22 + 1 1
6.69
2 1
2 (1 , 2 ) = [
] = ( )
1 2
1.0808
2 1 1 4.97
= ( )1 (0 ) = [
] [
]=[
]
6.69
2.8082
1 2
1
1.0808
+1 = + = [2 ] + [
] = [3]
1
2.8082
3
c)
||0 || = 10
Debemos garantizar:
0.001
Sacamos los valores propios de 2 (1 , 2 ) =
2 1
=[
]
1 2
2 1
0
2
1
[
][
]=[
]
1 2
0
1
2
Y obtenemos 1 = 3 2 = 1
Usando la desigualdad Rayleigh 2 2 2

0 2 0 2 30 2
1 2 2 3 2
Kantorovich nos ayuda para:

=
=3

1 2
+1 2 (
) 2
+1
Suponiendo +1 = y = 0 ahora sabemos tambin que por cada
1

usando iteracin el orden de (+1) es multiplicado por dos tendramos = 2




( ) 0

Usando lo obtenido por medio de la desigualdad Rayleigh y Kantorovich


1 2
1
1 2 2 ( ) 0 2
30 2
2
2
12

2

30 2
2

Reemplazamos los valores indicados en el ejercicio


12
0.0012
3 102
2
0.0012
12

3 102 2
0.001
1
2 log (
) 2 log
2
3 10
28.1603 2
14.0801
Por tanto se debe de llegar en este nmero de iteraciones, pero como no podemos
partir una iteracin, suponemos la cota superior sea .

Ejercicio 2:
Considere el problema de optimizacin sin restricciones:
.
(1 , 2 ) = 1 (412 + 222 + 41 2 + 22 + 1)
a) Cuando estudiamos en clase la convergencia de Steepest Descent, vimos
que una de las motivaciones para hacer el anlisis del caso cuadrtico es
que en una vecindad de un mnimo local de la funcin, sta se puede
aproximar bien por una funcin cuadrtica. Utilice un aproximacin
cuadrtica para calcular la tasa de convergencia de Steepest Descent para
1
puntos cercanos al mnimo local localizado en 1 = , 2 = 1.
2

b) Calcule el punto resultante de ejecutar una iteracin de Steepest Descent


(con bsqueda de lnea exacta) a partir del punto inicial [1 , 2 ] = [0 0]
evalu la funcin en el unto resultante.
c) Calcule el punto resultante de ejecutar una iteracin del mtodo de Newton
3

a partir del punto inicial [1 , 2 ] = [0 4] evalu la funcin en el unto


resultante. Explique.
Desarrollo:
a) Teniendo en cuenta que =
2 (1 , 2 ) = [

1 (412

2
22 + 41 2 + 161 +
2 1 (21 + 22 + 3)
13.18
2 ( ) = [

102 + 9)
6.59
]
6.59

6.59
Hallamos los valores propios:
13.18 6.59
0
13.18
[
][
]=[
6.59 6.59
0
6.59
Donde 1 = 17.2656 2 = 2.5190

=
= 6.8541

La tasa de convergencia seria


1
= 0.7453
+1

1 (41 + 42 + 6)
]
4 1

6.59
]
6.59

b) [1 , 2 ] = [0 0]
Aplicamos el mtodo de gradiente descendente
1 (412 + 222 + 41 2 + 81 + 62 + 1)
(1 , 2 ) = [
]
1 (42 + 41 + 2)
= arg min ( ( ))

1
([1 , 2 ]) = [ ]
2

Derivamos e igualamos a 0 para encontrar el mnimo de la funcin con


respecto a .


0
1
1
( ( )) (( )) = 0 = ([ ] [ ]) ( [ ])
0
2
2

(20 2

20 + 1) 1
[
] [ ] = (44 20 2 5)
0
(12 + 2)
Por tanto contamos con dos valores posibles de alpha:
1 = 0.1202
2 = 2.0797
El siguiente paso est dado por:
+1 = + 1 (( )) o +1 = + 2 (( ))
0.1202
+1 = [
] 1
0.2404
2.0797
+1 = [
] 2
4.1595
Evaluamos los valores en al funcin y escogemos el paso que menor valor
alcance.
(+1 1 ) = 0.716
(+1 1 ) = 9.895
Que en comparacin de ( ) = 1
El valor que tiene menor valor seria 1 = 0.1202

c) [1 , 2 ] = [0

4]

Procedemos con el mtodo de newton:


1 (412 + 222 + 41 2 + 81 + 62 + 1)
2.375
] ([1 , 2 ]) = [
]
1 (4
1

2 + 41 + 2)
1 (412 + 222 + 41 2 + 161 + 102 + 9) 1 (41 + 42 + 6)
2 (1 , 2 ) [
]
2 1 (21 + 22 + 3)
4 1
2.625 3
( ) = [
]
3
4

2.625 3 1 2.375
= ( )1 ( ) = [
] [
] = [4. 33]
3
4
1
3

4.
33
3

+1 = + = [0 ] + [4. 33] = [ 15]

3
4
4
(+1 ) = 2418.2236
( ) = 0.625
Lo cual nos indica que el mtodo de newton para este caso no encuentra un paso
adecuado para la primera iteracin, donde la funcin evaluada en el punto hallado
(+1 ) es grande en comparacin con el punto ( ).
(1 , 2 ) = [

Ejercicio 3:
Considere la funcin cuadrtica en R.
1
(1 , 2 , 3 ) = 1212 + 422 + 32
2
a) Implemente en MATLAB el algoritmo de descenso de gradiente con paso
constante mostrado en el algoritmo 1 para minimizar la funcin .
b) Explore las propiedades de convergencia de este algoritmo. Para esto:
I.
Corra el algoritmo para valores de = 0.02, 0.04, 0.06, 0.12, 0.2 y 0.3
para varios puntos iniciales en cada caso.
II. Grafique como funcin del nmero de iteraciones para varios
casos ilustrados.
III. Determine experimentalmente el mximo valor de para lograr
convergencia al mnimo.
IV. Determine experimentalmente la tasa de convergencia (en el peor
caso) del algoritmo.
V. Explique la razn terica de sus hallazgos.
Desarrollo:
a) Se implement el siguiente algoritmo para el desarrollo de las pruebas
clc;
clear all;
%----------- Gradiente Descendente - punto 3-----------%
Xk=[1;1;1];
syms x1 x2 x3;
VAR=[x1 x2 x3];
fx=16*x1^2+4*x2^2+1/2*x3^2;
gradiente=gradient(fx);
k=1;
a=0.01; %Valores del paso entre iteracin deseado.
Q=[24 0 0;
0 8 0;
0 0 1];
%4 = limite de convergencia con valor de [0,0,x] con 0.25*x3^2
%1 = limite de convergencia con valor de [0,0,x] con x3^2
%2 = limite de convergencia con valor de [0,0,x]
%0.25 = limite de convergencia con valor de [0,x,x]
%0.0625 = limite de convergencia con valor de [x,x,x]
while(true)
gk=double(subs(gradiente,VAR,Xk'));
if (norm(gk)<0.001)
fprintf ('Finalizo en %d iteraciones\n',k);
break;
else
k=k+1;
end
Xaux=Xk;
Xk=Xk-a*gk;
fprintf ('k=%d Xk=[%.4f,%.4f,%.4f] f=%.15f\n',k,Xk(1),Xk(2),Xk(3)
,double(subs(fx,VAR,Xk')));

Norm(k)=Xk'*Q*Xk;
end
tk=1:1:k;
plot(tk,Norm);
hold on;
grid on;

b)
I.

Se realiza la lo dispuesto por el numeral obteniendo de este modo


los datos ilustrado por la tabla:
#
Ultima en
( , , )

converger

[1 1 1]
0.02
343
3
[1 1 0.001]
0.02
53
[200 2000 0.0001]
0.02
97
2
[1 1041 1000 0.00001]
0.02
108
1
[1 1 1]
0.04
171
3
[1 1 0.001]
0.04
25
[200 2000 0.0001]
0.04
45
2
[1 1026 1000 0.00001]
0.04
43
[1 1 1]
0.06
113
3
[1 1 0.001]
0.06
15
[200 2000 0.0001]
0.06
27
2
[1 1026 1000 0.00001]
0.06
129
1
[1 1 1]
0.12

[0
1 0.001]
0.12
4
3
[0 2000 0.0001]
0.12
7
[0 1000 0.00001]
0.12
6
2
[0
1
1]
0.2
32
3
[0 1 0.001]
0.2
19
2
[0 2000 0.0001]
0.2
34
3
[0 1000 0.00001]
0.2
33
2
[0 1 1]
0.3

[0 0 0.001]
0.3
2
[0 0 0.0001]
0.3
1
3
[0 0 0.00001]
0.3
1
[0 0 1]
2

II.

Ahora graficamos como funcin del nmero de iteraciones:

La grafica representa al punto 0 = [1 2 4] para diferentes valores de =


0.02, 0.04 0.06 , donde e puede apreciar en la primeras grafica como el valor de
limita el paso por tanto converge de forma lenta debido a su pequeo valor, por tanto
al intentar reducir la variable 3 tendera demorarse ms tiempo, al aumentar el paso
se observa una notoria mejora en el nmero de iteraciones usadas para converger
el valor pero el valor alcanzado por la funcin es ms alto en comparacin con
nuestro ltimo grfico, lo que indica que le valor del punto tiene un magnitud
pequea, por otra parte aunque la magnitud del 3 grafico es ms grande la
converga ocurre en un nmero menor de iteraciones.

El 2 grafico muestra el cambio de la magnitud de lo puntos con respecto a


1
para distintos valores de = 0.12, 0.2 0.3, debido a la limitante de < 12 , por
tanto el punto de evaluacin inicial es ahora 0 = [0 2 4] para permitir que el
algoritmo converja al punto mnimo. Se identifica que con = 0.12 la norma es
pequea pero converge lentamente debido a la reduccin de 3 , en = 0.2 la
magnitud del vector es ms grande pero converge con mayor eficacia y = 0.24
debido a la cercana con el lmite del segundo coeficiente de la ecuacin empieza a
haber un convergencia mucho ms lenta.

El 3 grafico muestra el cambio de la magnitud de lo puntos con respecto a


para distintos valores de , debido a la limitante del segundo coeficiente de la
1
ecuacin base el cual es donde < 4 , el evaluacin inicial es ahora 0 = [0 0 4]
para permitir que el algoritmo converja al punto mnimo.
III.

A travs de los valores ilustrados y realizando mltiples cambios en el


tamao de y de la funcin a minimizar, donde se identifico los
siguiente lmites para la convergencia del algoritmo:
( , , )

[ ]
0.833
0.25
[0 ]
2
[0 0 ]
, ,

Posterior a ello se realiz el cambio de los coeficientes de la funcin


dando como resultado distintos valores, pero con una relacin
proporcional con respecto a dicho coeficiente ():

(Donde es de la forma 12 + 22 + 32 | , , )
Por tanto para una convergencia del algoritmo aplicado a la funcin

(1 , 2 , 3 ) desde cualquier punto es 0 > < , pero dicho rango se

puede ampliar si tomamos nicamente valores en las variables 1 = 0


a0><

una vez en este limite la variable 2 converge con mayor

lentitud al igual que en el anterior caso, y nuestro rango mximo seria


0 > < , para puntos con 1 = 2 = 0 y 3 .
IV.

Teniendo en cuenta la ecuacin


+1 2
2

Escogemos un valor para que produzca un bajo nivel de convergencia


= 0.08333
+1 2
= 0.9998
2
Despus de un total de 42108 iteraciones para el punto 0 = [1 2 4],
Permitiendo que el cambio entre punto y punto sea de 0.02%.
Pero segn el ejercicio con los disponibles el peor caso se presenta con
0.02, dando un total de 412 iteraciones
+1 2
= 0.9604
2
Permitiendo que el cambio entre punto y punto sea de 3.96% por
iteracin.

V.

La tasa de convergencia segn la literatura est dada por:


1
=
+1

Donde
=

= 24

Por tanto

1
= 0.92
+1

Ejercicio 4:
1

Considere la minimizacin de la funcin () = 2 con


53
13
=[
19
43

13
53
43
19

19
43
53
13

43
19
]
13
53

a) Use el mtodo de direcciones conjugadas para hallar el mnimo de esta


funcin a partir del punto inicial 0 = [23 11 13 17], obtenga las
direcciones conjugadas a partir de la base cannica.
b) Use el mtodo de gradientes conjugados para hallar el mnimo de esta
funcin a partir del punto inicial 0 = [23 11 13 17].
Desarrollo:
a) Se desarroll un algoritmo con el fin de calcular rpidamente los valores
para cada uno de los pasos:
clc;
clear all;
syms x1 x2 x3 x4;
X=[x1;x2;x3;x4];
Q=[53 13 19 43;
13 53 43 19;
19 43 53 13;
43 19 13 53];
fx=1/2*(X.'*Q*X);
gradiente=gradient(fx);
Xk=[23;11;13;17];
Xk1=Xk;
uk=eye(4);
dk=ones(4);
dk(:,1)=uk(:,1);
for k=1:4
gk=double(subs(gradiente,X.',Xk.'));
ak=-((gk.'*dk(:,k))/(dk(:,k).'*Q*dk(:,k)));
Xk1=Xk+ak*dk(:,k);
sumadk=0;
if (k ~= 4)
for j=1:k
sumadk=sumadk-(uk(:,k+1).'*(Q*dk(:,j)))/(dk(:,j).'*(Q*dk(:,j)))*dk(:,j);
end
dk(:,k+1)=uk(:,k+1)+sumadk;
end
Xk=Xk1
end

Donde nuestras direcciones conjugadas son la base cannica ():

2340
1764
( ) = [
]
1820
2268
= arg min ( ( )) = 44.1509

21.1509
11
+1 = + = [
]
13
17
,
=
= 0.2453
,
0.2453
1
1
+1 = + = [
]
0

1
2
3
4

Una vez realizado esto el algoritmo actualiza el valor de y repite el


proceso.

([ , , , ])
+

[2340 1764 1820 2268] 44.15


[21.1 11 13 17]
[1 0 0 0 ]
[0 1190 981.1 369.5] 23.89 [15.2 12.8 13 17]
[0.24 1 0 0]
[0 0 65.16 167.56]
[ 0.16 0.76 1 0]
3.90 [14.6 9.8 9.09 17]
[0 0 0 202.41]
[0 0 0 0]
[0.86 0.58 0.53 1]
17
Donde se identifica la convergencia al punto mnimo.
b) De igual forma que ene anterior se realiza un cdigo en MATLAB para el
mtodo de Gradiente Conjugado.
clc;
clear all;
syms x1 x2 x3 x4;
X=[x1;x2;x3;x4];
Q=[53 13 19 43;
13 53 43 19;
19 43 53 13;
43 19 13 53];
fx=1/2*(X.'*Q*X);
gradiente=gradient(fx);
Xk=[23;11;13;17];
Xk1=Xk;
gk=double(subs(gradiente,X.',Xk.'));
dk=double(-gk);
for k=0:3
gk=double(subs(gradiente,X.',Xk.'));
ak=(-((gk.'*dk)/(dk.'*Q*dk)));
Xk1=Xk+ak*dk
gk1=double(subs(gradiente,X.',Xk1.'));
bk=((gk1.'*gk1)/(gk.'*gk));
dk1=(-gk1+bk*dk);
Xk=Xk1;
dk=dk1;
end


1
2
3
4

2340
1764
( ) = [
]
1820
2268
,
=
= 0.0079
,
4.5731
2.8910
+1 = + = [
]
1.3320
0.8599
142.5052
167.3914
(+1 ) = [
]
119.2031
78.8210
+1 , +1
=
= 0.0040
,
151.9443
160.2758
+1 = +1 + = [
]
111.8617
87.9696
Una vez realizado esto el algoritmo actualiza el valor de y repite el proceso un
total de 4 iteraciones.

[ 4.5731 2.8910 1.3320 0.8599] 0.0079


0.004 [151.9 160.2 111.8 87.9]
[ 2.1319 0.3160 0.4652 2.2733] 0.0161 0.0271
[24.0 16.5 18.9 26.3]
[0.6472 0.7050 0.7057 0.6465] 0.0616 0.0162
[ 2.64 2.88 2.88 2.64]
[0 0 0 0]
[0 0 0 0]
0.2445
0

Ejercicio 5:
Minimice la funcin del punto anterior usando el mtodo de Quasi Newton con
actualizacin DFP, partiendo del punto 0 = [23 11 13 17].
Desarrollo:
Se desarrolla el algoritmo que nos ayudara a realizar los clculos del mtodo de
Quasi Newton.
clc;
clear all;
syms x1 x2 x3 x4 alp;
X=[x1;x2;x3;x4];
Q=[53 13 19 43;
13 53 43 19;
19 43 53 13;
43 19 13 53];
fx=1/2*(X.'*Q*X);
gradiente=gradient(fx);
Xk=[23;11;13;17];
Sk=eye(4);
for k=0:3
gk=double(subs(gradiente,X.',Xk.'));
dk=-Sk*gk;
a=double(solve(subs(gradiente,X.',(Xk+alp*dk).').'*dk))
Xk1=Xk+a*dk;
gk1=double(subs(gradiente,X.',Xk1.'));
pk=Xk1-Xk;
qk=gk1-gk;
Sk=Sk+((pk*pk.')/(pk.'*qk))-(((Sk*qk)*(qk.'*Sk))/(qk.'*Sk*qk));
Xk=Xk1
end

1
0
= [
0
0

0 0
0 0
]
1 0
0 1
2340
1764
= ( ) = [
]
1820
2268
2340
1764
= = [
]
1820
2268
= arg min ( + ) = 0.0079

+1

0
1
0
0

4.5731
2.8910
= + = [
]
1.3320
0.8599

142.5052
167.3914
(+1 ) = [
]
119.2031
78.8210
18.4269
13.8910
= +1 = [
]
14.3320
17.8599
2197
1931
= (+1 ) ( ) = [
]
1939
2189
0.7203 0.2461 0.2471 0.2787
( )( )
0.2461 0.7834 0.2174 0.2452
= +
=[
]

0.2471 0.2174 0.7818 0.2462




0.2787 0.2452 0.2462 0.7223
Finalmente al cabo de 4 iteraciones se identifica que = 1 por tanto nuestro
algoritmo converge al punto mnimo de la funcin.

Das könnte Ihnen auch gefallen