Image

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