% gradproj2.m         origina : gradproj1.m
% fd, 07 juillet 2026.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear ; format long 
 
fprintf  ('\n') ;
fprintf  ('gradproj2 \n')  
fprintf  ('opmisation sous contraintes egalites  \n') 
fprintf  ('gradient projete a pas constant \n') ; 
fprintf  ('projection sur le quadrant positif \n') ;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fprintf  ('fonction cout quadratique \n') ;
fprintf  ('les isovaleurs forment une famille d ellipses   \n') ;

a=0 , b=0 , al0=2 , be0=1 

hold off
% dth =ellips1 (a,b,sqrt(2*jmin)*al0,sqrt(2*jmin)*be0 , 30 );
dth=ellips (a,b,al0,be0);

title ('une ellipse d isovaleurs de la fonction cout') ;
print('05a-ellipse.jpg', '-djpg','-S891,630'); 
axis ( [ -3.1, 3.1, -3.1, 3.1, ] , 'square' );
pause (.5) 
hold on 

dr=.1; rr=.1 ; 
for j=1:20;
al=rr*al0 ; be=rr*be0 ; 
dth=ellips (a,b,al,be);
rr=rr+dr;
end;
title ('ellipses d isovaleurs de la fonction cout') ;
axis ( [ -3.1, 3.1, -3.1, 3.1, ] , 'square' );
print('05b-isovaleurs-fonction-cout.jpg', '-djpg','-S891,630'); 
pause (.5)

  xmin = -3 ; xmax = 3 ;
ymin = xmin ; ymax = xmax ; 
  
plot ([0,xmax],[0.,0.],'k;;' , [0.,0.],[0,ymax],'k'  )
axis ( [ -3.1, 3.1, -3.1, 3.1, ] , 'square' );
title ('ellipse d isovaleurs de la fonction cout et convexe des contraintes') ;
print('05c-contrainte-affine.jpg', '-djpg','-S891,630'); 
pause (.5)


fprintf  ('point initial de l algorithme du gradient   \n') ;

x0=-2.5 ,  y0=2
  
%     x0=-4; y0=-2;
%      x0=.7  ; y0=.3;
plot (x0,y0 ,'*k;;')
%%%  axis ( [ a-(al0 +.5) , a+(al0+.5) , b-(be0+.5) , b+(be0+.5)] , 'square' );
axis ( [ -3.1, 3.1, -3.1, 3.1, ] , 'square' );
title ('point initial de l algorithme du gradient projete') ;
print('05d-point-initial.jpg', '-djpg','-S891,630'); 
pause   (.5)

[xx,yy]=proj2(x0,y0) ;
plot (xx,yy ,'*r;;', [x0 xx], [y0 yy], 'r;;') ;
axis ( [ -3.1, 3.1, -3.1, 3.1, ] , 'square' );
title ('projection sur la droite des contraintes') ;
print('05e-projection.jpg', '-djpg','-S891,630'); 
pause   (.5) 

     rho=.5 ; 
     for j=1:30 ; 
     gx=(xx-a)/al0**2 ; gy=(yy-b)/be0**2;
%        jj= .5 * ( ((xx-a)/al0)**2 + ((yy-b)/be0)**2 )
%    scal = gx * q - gy * p 
     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;;') ; 
axis ( [ -3.1, 3.1, -3.1, 3.1, ] , 'square' );
end 
title ('algorithme du gradient projete') ;
print('05f-gradient-projete-contrainte-affine.jpg', '-djpg','-S891,630'); 


hold off

fprintf ('fin de l algorithme \n') 
x=x ,  y=y

  

