Optimización sin Restricciones: método de Newton
En éste video explico la programación y presento un teorema de convergencia del método. Caso ideal. Modelo cuadrático. Interpretación geométrica. Algoritmo de Newton básico en varias variables. La dirección de Newton es de descenso. Problemas que pueden surgir al resolver el sistema lineal. Programación del método en MATLAB. Ejemplo práctico. Teorema de convergencia. Diferencias entre el Método 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
© Profesor Favián Arenas. 2023. Diseñado por HTML Codex