function sol = champty(f,Y0,tmax,pas)
//     Resout l'equation y'(t)=f(t,y).
//     Les conditions initiales sont donnees par
//     le vecteur Y0 qui a autant de colonnes 
//     de trajectoires a calculer.
//     La fonction represente le champ de vecteurs 
//     et les trajectoires. Elle retourne la matrice des
//     trajectoires.  
//
t=0:pas:tmax;
nbtraj = size(Y0,"c");              // nombre de trajectoires
sol = [] ;
for i=1:nbtraj,                     // calcul des trajectoires
   y0 = Y0(i);                      // condition initiale
   s  = ode(y0,0,t,f);              // resolution 
   s = s';
   sol = [sol,s];
end;
ymin = min(sol); ymax = max(sol);   // calcul de l'echelle graphique
                                    // cadre graphique
plotframe([0,ymin,tmax,ymax],[0,1,0,1],[%f,%f],["","t","y"]);
                                    // champ de vecteurs tangents
gt=0:tmax/10:tmax; gy=ymin:(ymax-ymin)/10:ymax;
ct = ones(11,11);
for i=1:11,
  for j=1:11,
    cy(i,j) = f(gt(i),gy(j));
  end;
end;
champ(gt,gy,ct,cy,1,[0,tmax,ymin,ymax],"000");
                                    // trace les trajectoires
plot2d(t'*ones(1,nbtraj),sol,2*ones(1,nbtraj),"000");


function sol = champxy(F,XY0,tmax,pas)
//     Resout le systeme [x',y']=F(x,y).
//     Les conditions initiales sont donnees par
//     la matrice XY0 (2 lignes, autant de colonnes 
//     de trajectoires a calculer).
//     La fonction represente le champ de vecteurs 
//     et les trajectoires. Elle retourne la derniere
//     trajectoire.  
//
t=0:pas:tmax;
nbtraj = size(XY0,"c");             // nombre de trajectoires
solx = []; soly=[];
for i=1:nbtraj,                     // calcul des trajectoires
   xy0 = XY0(:,i);                  // condition initiale
   sol = ode(xy0,0,t,F);            // resolution 
   sol = sol';
   solx = [solx,sol(:,1)];          // abscisses
   soly = [soly,sol(:,2)];          // ordonnees
end;
xmin = min(solx); xmax = max(solx); // calcul de l'echelle graphique
ymin = min(soly); ymax = max(soly);
                                    // cadre graphique
plotframe([xmin,ymin,xmax,ymax],[0,1,0,1],[%f,%f],["","x","y"]);
                                    // affichage des conditions initiales
plot2d(XY0(1,:),XY0(2,:),-3,"000");
                                    // champ de vecteurs tangents
gx=xmin:(xmax-xmin)/10:xmax; gy=ymin:(ymax-ymin)/10:ymax; 
fchamp(F,1,gx,gy,1,[xmin,ymin,xmax,ymax],"000");
                                    // trace les trajectoires
plot2d(solx,soly,2*ones(1,nbtraj),"000");



