Optimizacion sin Restricciones: metodo de Newton
En este video explico la programacion y presento un teorema de convergencia del metodo. Caso ideal. Modelo cuadratico. Interpretacion geometrica. Algoritmo de Newton basico en varias variables. La direccion de Newton es de descenso. Problemas que pueden surgir al resolver el sistema lineal. Programacion del metodo en MATLAB. Ejemplo practico. Teorema de convergencia. Diferencias entre el Metodo de Newton para minimizar y sistemas de ecuaciones
Archivo f.m
function Y = F(x) % autor: Favian Arenas % fecha: 2021-09-06 Y(1)=cos(x(1))-x(2); Y(2)=(x(1)-2)^2+x(2)^2-1; Y=transpose(Y); end
Archivo gradf.m
function g = gradf(x) % autor: Favian Arenas g = [-400*x(1)*(x(2)-x(1)^2)-2*(1-x(1)); 200*(x(2)-x(1)^2)]; end
Archivo Hessf.m
function H = Hessf(x) % autor: Favian Arenas H=[-400*(x(2)-3*x(1)^2)+2,-400*x(1); -400*x(1), 200]; end
Archivo b_lineal.m
function l=b_lineal(x,d,Fx,Gx) l=1; alfa=10^(-1); beta=0.1; c=1; while ((f(x+l*d)>Fx+alfa*l*transpose(Gx)*d) || ( transpose(gradf(x+l*d))*d > beta*transpose(Gx)*d ))&& c < 100 l=0.5*l; c=c+1; end end
Archivo metodo_newton.m
clc x = [-1;-1]; Fx = f(x); Gx = gradf(x); Hx = Hessf(x); l = 1; k = 0; tipo = "N"; while norm(Gx,"inf")>=10^(-3) && k<=200 fprintf("%1.0f & (%1.3f,%1.3f) & %1.3f & %1.3f & %1.5f & %s \n",k,x(1),x(2),l,norm(Gx),Fx,tipo) H = mejora(Hx); if rcond(H)<10^(-6) d = -Gx; tipo = "G"; else d = -H\Gx; % Ax=b x=A\b tipo = "N"; end l = b_lineal(x,d,Fx,Gx); x = x+l*d; Fx = f(x); Gx = gradf(x); k = k+1; end
Archivo mejora.m