Documentos de Académico
Documentos de Profesional
Documentos de Cultura
f(x+td)
1. En varias oportunidades hemos usado en clase que si φ(t) = f (x + td) con f una función en n variables,
x, d ∈ Rn entonces
φ0 (t) = ∇f (x + td)t d.
Este resultado es consecuencia directa de aplicar la regla de la cadena. En esta pregunta se pide que
lo demuestre para confirmar que se entiende.
2. Sea f (x) = 21 xt Qx + bt x con x, b ∈ Rn y Q ∈ Rn×n semipositivo definida. Es decir, que f es una
función cuadrática convexa en n variables. Usando la forma de ∇f (x) y ∇2 f (x) que encontraron en la
primera tarea, demostrar uue dado xk ∈ Rn y dk una dirección de descenso de f en xk entonces
−(Qxk +b)t dk
a) αk∗ = arg mı́nα>0 f (xk + αdk ) = dtk Qdk
Observe que αk resuelve la búsqueda lineal exacta.
b) ∇f (xk + αk∗ dk )t dk = 0
3. Considere los problemas mı́n f (x) = 3x21 + 2x1 x2 + x22 y mı́n f (x) = 1/2(x1 − x2 )2 + 1/2(1 − x1 )2 .
Determine si los problemas tienen solución y cuáles serı́a usando condiciones de optimalidad.
Aplique una iteración del método de Cauchy (que también es llamado método de mayor descenso
o del gradiente con búsqueda lineal exacta) partiendo de x0 = (1, 1)t para el primero. Es decir,
∇f (x0 )
calcule x1 = x0 + α0∗ d0 con d0 = − ||∇f ∗
(x0 )|| y α0 satisfaciendo búsqueda lineal exacta.
Elija η = 0,1 y β = 0,5. Vea si α0∗ satisace las condiciones de Armijo y Goldstein para la misma
función y datos de la parte anterior.
4. Haga una implementación del método del mayor descenso para resolver los problemas anteriores. Usted
debe hacer un código para la función, el gradiente y el hessiano (funciones funquad(x), gradquad(x) y
hessquad(x)).
Puede usar el código que está a continuación en Matlab y correrlo en Matlab mismo o usarlo como
modelo para otro lenguaje de su preferencia.
x=input(’enter the initial column vector x ’);
xsol=input(’enter the solution xsol ’);
obj=funquad(x);
g=gradquad(x);
h=hessquad(x);
k=0;
while norm(g) > 1e − 6
d = -g;
a=-g’*d/(d’*h*d);
newobj=funquad(x + a*d);
fprintf(’ %5.0f %12.5e %12.5e ’,k,norm(x-xsol),norm(g))
x = x + a*d;
obj=newobj;
g=gradquad(x);
k = k + 1;
end
x, k
1
5. Ahora modifique su código para incluir una implementación del Método del Gradiente (o Mayor Des-
censo) con búsqueda lineal inexacta, esto es:
xk+1 = xk − λk ∇f (xk )
donde λk satisface la condición de Armijo (usando ’backtracking’ con η = 10−4 y ρk = ρ = 0,5). Puede
usar el código en Matlab que se da a continuación. Intente resolver el problema a continuación y el de
la pregunta anterior.
2
6. Corra ambos códigos y obtenga la tabla con los resultados obtenidos para todas las funciones y distintos
iterados iniciales, donde se refleje: iteración k , ||xk − x∗ ||2 , ||∇f (xk )||2 para las 10 últimas iteraciones.
En base a los resultados obtenidos escriba conclusiones acerca de la convergencia global del método y
la rapidez de convergencia.