% Ce script met en oeuvre la methode du gradient optimal. 
% 
% Cas quadratique elliptique et cas general. 
%
%
clear all; close all;
global numex
global a b c p
numex=... CHOISIR ...;    % (1 2 3 4 5 ou 6)
quadratique = 'NON'; %('OUI' ou 'NON')
a=4; b=4; c=10; p=10; 
%
% Initialisation des variables u0, epsil, nitermax, niter utilisees ci-dessous :
%
........................ COMPLETER ....................
%
difference = 1; % Servira pour le test d''arret. 
uk=u0           % uk contiendra les iteres successifs 
tslesuk = u0;   % stockera l''ensemble des iteres successifs
if (quadratique=='OUI') 
  %
   ........................ COMPLETER ....................
  %
elseif (quadratique=='NON') 
  %
  nbevalinfmin = 0;
  while((difference > epsil) & (niter < nitermax))
   niter = niter+1; 
   wk = GJ(uk) ; 
   myfunction = @(x)J(uk - x * wk);
   [alphak, fval, exitflag, output] = fminbnd(myfunction,0, ... CHOISIR ...);
   nbevalinfmin = nbevalinfmin + output.iterations;
   ........................ COMPLETER ....................
  end
  nbevalinfmin,niter
  tslesuk
  %
else 
 error('Specifiez par OUI ou NON le caractere quadratique de la fonctionnelle.') 
end
xmin = min(min(tslesuk(1,:)),-3.3);
xmax = max(tslesuk(1,:));
xdiff = xmax-xmin;
ymin = min(tslesuk(2,:));
ymax = max(tslesuk(2,:));
ydiff = ymax-ymin;
%xdiff = max(xdiff,ydiff); ydiff = xdiff;
xmin = xmin - 0.5*xdiff; xmax = xmax + 0.5*xdiff;
ymin = ymin - 0.5*ydiff; ymax = ymax + 0.5*ydiff;

figure(1)

visiso(xmin, xmax, ymin, ymax);
visiter(uk,tslesuk,niter,nitermax);

%axis equal

