% uza6.m
% fd, 28  janvier 2006, 08 juillet 2026 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear ; format long 

fprintf  ('\n') 
fprintf  ('uza6 \n')  
fprintf  ('opmisation avec deux contraintes inegalites \n') 
fprintf  ('gradient projete a pas optimal \n  ') ;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



a=.5 ; b=-0.5 ; al0=2; be0=1 ;

hold off
format long
% dessiner le convexe .
xx1=0 ; yy1 = 0 ;  xx2=4 ; yy2 = 0 ; 
xx4=0 ; yy4 = 2 ; 
plot  ([xx1,xx2], [yy1,yy2], 'r;;', [xx1,xx4], [yy1,yy4], 'r;;')
axis ( [ -1.6 , 2.6 , -2.1, 2.1], 'square' );
title ('convexe des contraintes : un quadrant') ;
print('06a-gradient-projete-cas-de-deux-inegalites.jpg', '-djpg','-S891,630'); 
pause (.5) 
hold on 

dr=.1; rr=.1 ; 

nbellip = 10
for j=1:nbellip  
al=rr*al0 ; be=rr*be0 ; 
dth=ellips (a,b,al,be);
rr=rr+dr;
end;
title ('resau d ellipses d isovaleurs de la fonction a minimiser') ;
print('06b-gradient-projete-cas-de-deux-inegalites.jpg', '-djpg','-S891,630'); 
pause (.5) 


x0=-1.5; y0=-2. ;
p=1;q=1;
plot (x0,y0 ,'b*;;')
     [xx,yy]=proj2(x0,y0); 
     plot (xx,yy ,'b*;;', [x0 xx], [y0 yy], 'r;;') ;
title ('initialisation de l algorithme de gradient projete') ;
print('06c-gradient-projete-cas-de-deux-inegalites.jpg', '-djpg','-S891,630'); 
pause (.5) 

nitgradient = 20 
%%     rho=.8 ; 
for j=1:nitgradient ; 
     gx=(xx-a)/al0**2 ; gy=(yy-b)/be0**2;
rho = ( gx**2 + gy**2) / ( (gx/al0)**2 +  (gy/be0)**2 )   
     x=xx-rho*gx; 
     y=yy-rho*gy; 
     plot ([x xx], [y yy], 'b;;') ; 
     [xx,yy]=proj2(x,y) ; 
     plot (xx,yy ,'b*;;', [x xx], [y yy], 'r;;') ;
title ('algorithme de gradient projete') ; 
pause (.2) 
end
print('06d-gradient-projete-cas-de-deux-inegalites.jpg', '-djpg','-S891,630'); 
pause (.5)


     xmin=a ; ymin=0 ; 
plot (xmin, ymin ,'r*;;')   
axis ( [ 0 , 1 , -.5 , .5 ] , 'square' );
title ('zoom autour de l etat final atteint par l algorithme') ;
print('06e-gradient-projete-cas-de-deux-inegalites.jpg', '-djpg','-S891,630'); 
pause (.5) 

eps=.1 ;  pause   (.5)
axis ( [ xmin - eps  , xmin + eps  ,  ymin - eps  , ymin + eps ] );
title ('second zoom autour de l etat final atteint par l algorithme') ;
print('06f-gradient-projete-cas-de-deux-inegalites.jpg', '-djpg','-S891,630'); 


hold off

