Se solicita con suma urgencia dadores del metodo del gradiente en matlab de la materia analisis numerico o bien el tp de optimizacion de castro de este año.
Si alguno lo tiene que lo suba porque estoy al horno!!!
Aca te mado la codificacion que use el año pasado para hacer el TP, espero que te sirva
Funciones utilizadas:
Parametrización:
function param=parametrizacion (t, x, y,derparcx, derparcy)
param=2*(1-(x+derparcx*t))^2 + 200* ((y+derparcy*t)-(x+derparcx*t)^2)^2;
end
Derivadas parciales:
function derx = vx( x,y )
derx=4*(1-x)+800*x*(y-x^2);
end
function dery = vy( x,y )
dery=-(400*(y-x^2));
end
Función a Minimizar:
function z = funcion( x,y )
z=2*(1-x)^2 + 200*(y-x^2)^2;
end
Codificacion
format long;
clear;
clc;
it=0;
x=-1;
y=1;
it=0; b=6; c=0; t=0; d=0;
r2= (sqrt (5.0) - 1.0)/2.0;
r1= 1.0 - r2;
derparcx=vx(x,y);
derparcy=vy(x,y);
p=parametrizacion(t,x,y,derparcx,derparcy);
display(derparcx);
display(derparcy);
error2d=10^6;
N=sqrt(derparcx^2 + derparcy^2);
tol1d=10^(-7);
tol2d=10^(-6);
while (error2d > tol2d)
t=0;
b=6;
derparcx=derparcx/N;
derparcy=derparcy/N;
derparcx=vx(x,y);
derparcy=vy(x,y);
it=it + 1;
error1d=10^6;
c=t + r1 * (b-t);
d=t + r2 * (b-t);
fc= parametrizacion (c, x, y, derparcx, derparcy);
fd= parametrizacion (d, x, y, derparcx, derparcy);
while (error1d > tol1d)
c=t + r1 * (b-t);
d=t + r2 * (b-t);
fc= parametrizacion (c, x, y, derparcx, derparcy);
fd= parametrizacion (d, x, y, derparcx, derparcy);
if (fc <= fd)
b=d;
d=c;
c=t + r1 * (b-t);
fd=fc;
fc=parametrizacion (c, x, y, derparcx, derparcy);
end;
if (fc>fd)
t=c;
c=d;
d=t + r2 * (b-t);
fc=fd;
fd=parametrizacion (d, x, y, derparcx, derparcy);
end;
tmin= (c+d) /2;
error1d= abs (d-c);
error1d = sqrt(((d-c)*derparcx)^2+((d-c)*derparcy)^2);
end;
dx=tmin * derparcx;
dy=tmin * derparcy;
error2d=sqrt (dx^2 + dy^2);
x=x+dx;
y=y+dy;
end;
display(it);
Capo me darias una mano con este quilombito que tengo? estoy cursando con castro ya aprobe los parciales pero me faltan los tp 2, 3 y 4 para poder firmala. Con cualquiera de ellos que me puedas ayudar me viene barbaro. Te lo recontra agredecería!!