Image

Optimización sin Restricciones: método del gradiente

En éste video explico la programación y demuestro la razón de convergencia del método. Breve, muy breve historia. Iteración básica del método. ¿Por que se le llama dirección de máximo descenso? Caso ideal y ejemplo. Búsqueda lineal exacta. Resultados gráficos. ¿Por qué es lento el método? Programación del método en Matlab. Razón de convergencia


f_co.m

function z = f_cu(x,A,b,c)
z=0.5*(transpose(x)*A*x)-transpose(b)*x+c;
end
        

grad_cu.m
function z = grad_cu(x,A,b,c)
z=A*x-b;
end
        

lambda_cu.m
function z = lambda_cu(g,A)
z=(transpose(g)*g)/(transpose(g)*A*g);
end

met_grad.m
A=[4 2;2 3];
b=[1;-1];
c=1;
x=[3;-2];
f=f_cu(x,A,b,c);
g=grad_cu(x,A,b,c);
l=lambda_cu(g,A);
k=0;
while norm(g)>=10^(-3) && k<=100
  fprintf("%1.0f \t (%1.3f,%1.3f) \t %1.3f \t %1.3f \t  %1.5f \n",k,x(1),x(2),l,norm(g),f)
  x=x-l*g;
  f=f_cu(x,A,b,c);
  g=grad_cu(x,A,b,c);
  l=lambda_cu(g,A);
  k=k+1;
end

© Profesor Favián Arenas. 2023. Diseñado por HTML Codex