input geometrie2d;
input courbes;
input graph;
input plusa;

%@ode'système:ed1.ode
% y'= t - exp(y)
% y = $2 
% print t, y
% step $1, $3
%@ode'solution: ed1-1 -4 3 5
%@ode'solution: ed1-2 -3 3 5
%@ode'solution: ed1-3 -2 3 5
%@ode'solution: ed1-4 -1 3 5
%@ode'solution: ed1-5  0 3 5
%@ode'solution: ed1-6  1 3 5
%@ode'solution: ed1-7  2 3 5
%@ode'solution: ed1-8  3 3 5 
%@ode'solution: ed1-9  4 3 5

vardef trajectoire (expr f) =
    save s; gdata(f, s, if i>1:..fi (scantokens s1,scantokens s2))
enddef;

vardef F(expr x,y) = x - exp(y) enddef;

beginfig(1);

    Repere(12,9,5,4.5,1.5,1.5);
    Axes;
    Debut;
	Unites(1);
	Graduations;

	% Tracé du champ de vecteurs
	ahlength := 2;
	ChampVecteurs(F,0.2,0.2,0.4,0.4,0.15,0.5white); 

	trace Representation(ln,0.05,5,50)
	    withpen pencircle scaled 1
	    withcolor (0.8,0.2,0.5);

	for i=1 upto 9:
	    trace trajectoire("ed1-" & decimal i)
		withcolor (0.1,0.6,0.1);
	endfor
	
	Etiquette.rt("$y=\ln x$",1.5,(0.25,-2));
	paLegendeCCO((-1.5,1.75),"$y'=x-e^{y}$");
    Fin;
    
endfig;

vardef F(expr x,y) = -2x*y/(x*x+y*y) enddef;

%@ode'système:ed2.ode
% y' = -2*t*y/(t*t+y*y)
% y  = $2
% print t, y
% step $1, $3

%@ode'eval: 
% for($i=1;$i<=10;$i++) { solution("ed2-$i",-4,-2.25+$i/2,4); }

beginfig(2);

    Repere(12,9,6,4.5,1.5,1.5);
    Axes;
    Debut;
	Unites(1);
	Graduations;


	% Tracé du champ de vecteurs
	ahlength := 2;
	ChampVecteurs(F,0.2,0.2,0.4,0.4,0.15,0.5white); 

	
 	for i=1 upto 10: 
	    trace trajectoire("ed2-" & decimal i) withcolor (0.1,0.6,0.1); 
	endfor

	paLegendeCCO((0,-2.25),"$(x^2+y^2)y'+ 2xy = 0$");
	
    Fin;
    
endfig;

%@ode'système:ed3.ode
% y' = 2*t*y + y*y
% y = $2
% print t, y
% step $1, $3

%@ode'solution: ed3-1 -2 3 1
%@ode'solution: ed3-2 -3 3 2.8

vardef F(expr x,y) = 2x*y + y*y enddef;

beginfig(3);

    Repere(12,9,6,4.5,1.5,1.5);
    Axes;
    Debut;
	Unites(1);
	Graduations;

	trace Droite(origin,(1,-2)) withcolor (0.5,0.2,0.3);
	
	% Tracé du champ de vecteurs
	ahlength := 2;
	ChampVecteurs(F,0.2,0.2,0.4,0.4,0.15,0.5white); 

	for i=1 upto 2:
	    trace trajectoire("ed3-" & decimal i) withcolor (0.1,0.6,0.1);
	endfor
	
	paLegendeCCO((0,-2.25),"$y'=2xy+y^2$");
	
    Fin;
    
endfig;

end