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