 restart(1);maple_mode(1);cas_setup(0,0,0,1,0,1e-10,10,[1,50,0,25],0,0,0); #radians,pas de cmplx, pas de  Sqrt
/* --------------------------------------------Exercice---courbes param\'etr\'ees---------------------------------*/
 XT:=t*(t^2-1)^2;YT:=t^2+1;
 eq:=resultant(XT-x,YT-y,t);
/*  On remarque que si YT est reel, alors t^2 aussi, donc si XT est aussi reel,£ XT/(t^2-1) aussi donc t  aussi. donc si (XT,YT) est une solution reelle de£ l'equation cartesienne trouvee, alors elle elle provient d'un parametre reel.*/
purge(x,y,u,t);
 dessin1:=plotparam(XT+I*YT,t=-2..2):
 dessin2:=implicitplot(eq=0,x=-5..5,y=-5..5,xstep=0.01,ystep=0.01):
/* Pour la fraction rationnelle  trigonom\'etrique, on exprime x et y en fonction£d'un fraction rationnelle en u=tan(t/2), puis on elimine u avec le resultant.*/
 F1:=normal(halftan((cos(t)+1)/(sin(t)+2)));#on exprime tout avec tan(t/2)
 F1u:=subst(F1,tan(t/2)=u);
 F2:=normal(halftan((sin(t)^3)/(sin(t)-3)));
 F2u:=subst(F2,tan(t/2)=u);
 eq:=resultant(denom(F1u)*x-numer(F1u),denom(F2u)*y-numer(F2u),u);
 dessinpara:=plotparam([F1,F2],t=-2*Pi..2*Pi):
 dessinimpli:=implicitplot(eq,x=0..2,y=-1..1,ystep=0.01):#on ajuste un peu pour que  implicitplot s'en sorte.
/* ----------------------------------------Exercice---Intersections et projection--------------------------------------*/
purge(x,y);
 C1:=x*y-4;C2:=y^2-(x-3)*(x^2-16);
 d1:=implicitplot(C1,x=-7..7,y=-8..8,color=red+line_width_2):
 d2:=implicitplot(C2,x=-7..7,y=-8..8,color=blue+line_width_2,xstep=0.01,ystep=0.01):
 eqx:=resultant(C1,C2,y); #On elimine y
/* Astuce: pour ne pas passer en flottants via le menu deroulant, on lui donne une£extention de corps sous forme d'un flottant.*/
evalf(factor(eqx,1.1),10); # on obtient 5 points reels.
/* c'est de degre 5 car le centre de projection (0,1,0) est solution.*/
/*   on parametre la droite passant par les points [1,1] et [0,y] grace au vecteur£  directeur (-1,y-1): */
 M:=[1,1]+t*[-1,y-1]; 
 P1:=unapply(C1,x,y)(op(M));
 P2:=unapply(C2,x,y)(op(M));
/*  On cherche l'equation de la projection de l'intersection depuis (1,1)  sur£ Oy. Cette   equation est encore de degre 5. Pourtant (1,1) n'est pas£ solution. Mais on a   pris toutes les droites passant par (1,1) sauf (x=1) (ie£ x=z en projectif)  mais le point (0,1,0) est solution de C1 inter C2, et il£ est sur cette droite. On a donc perdu  la ou les solutions qui sont sur la£ droite retir\'ee. */
 resultant(P1,P2,t);
 resultant(subs(y=-2*x+1,C1),subs(y=-2*x+1,C2),x); #il n'est pas nul
 gcd((subs(y=-2*x+1,C1),subs(y=-2*x+1,C2),x)); #autre methode le pgcd est   constant.
/* On a donc verifie que la droite d'equation y=-2x+1 (ie la parallele a y=-2x£passant par (1,1) ne rencontrait pas C1 inter C2 meme sur un corps£algebriquement clos.)*/
/*  NB: A=(1,1) n'est pas sur la droite y=-2x. Bt=(t,-2t)  eq param de la droite£ (ABt): x=1+l(t-1),y:=1+l(-2t-1)*/
 C1t:=subs(x=1+l*(t-1),y=1+l*(-2*t-1),C1);
 C2t:=subs(x=1+l*(t-1),y=1+l*(-2*t-1),C2);
/*  la projection est donn\'ee par les points de coordonn\'ee (t,-2t) o\`u t racine£ de. De plus, on a verifie que la parallele a la droite y=-2x passant par (1,1)£ ne contenait aucune solutions de C1 inter C2, ca ne pose donc pas de problemes£ de l'avoir retiree.*/
 p2:=resultant(C1t,C2t,l);
/*  car le point (1,-2) est l'intersection de y=-2x avec la droite passant par (1,1)£et le point a l'infini de Oy. Mais le point a l'infini de Oy  etait bien dans£C1 inter C2. */
 sol:=solve(approx(p2),t);#pour basculer en flottants on fait approx.
 pi1:=seq(point(sol[i]-2*I*sol[i],color=black+point_width_3),i=1..6): #les points sur la droite y=-2x
 di1:=seq((droite(1+I,pi1[i],color=green)),i=1..6): # les 6 droites:
purge(x,y);
 C1:=(x-2)^2+y^2-4;
 C2:=y^2-(x-3)*(x^2-16);
 d1:=implicitplot(C1,x=-1..5,y=-3..3,color=red):
 d2:=implicitplot(C2,x=-5..8,y=-8..8,color=blue):
 (d1,d2);
 eqx:=resultant(C1,C2,y); #On elimine y
 evalf(factor(eqx,1.1),10); # on obtient 5 points reels.
 factor(eqx); #On voit qu'il faut introduire le discriminant.
 factor(eqx,sqrt(13));
 eqred:=gcd(eqx,diff(eqx,x));
 rac:=[solve(approx(eqred),x)];
/* On constate qu'il y a un point qui ne semble pas correspondre a une projection£d'un point d'instersection. Nous allons l'interpr\'eter maintenant.*/
 (d1,d2,seq(point(i,color=black+point_width_3),i=rac)):
 solx:=[solve(eqred,x)];
 soly:=seq(gcd(subs(x=solx[i],C1),subs(x=solx[i],C2)),i=1..3);
/*  les ordonn\'ees des points d'abscisse solx[i] sont:*/
L2:=seq(cSolve(soly[i],y),i=1..3): sort([L2],(u,v)-> real(u+I*u*0.3)<real(v+I*v*0.3));
/*  On constate que pour solx[3] les ordonn\'ees des points de C1 inter£  C2 ayant cette abscisse sont complexes conjuguees bien que solx[3]£ soit reel ce qui explique pourquoi le dessin ne nous donnait que 4 points.*/
/* ----------------------------------------Exercice---Intersections de quadriques--------------------------------------*/
purge(u);
 S1:=x^2+1/4*y^2+1/9*z^2-1;
S2:=x^2+y^2+z^2-u;
projy:=resultant(S1,S2,y);
factor(projy);#c'est une conique double a cause de la symetrie en y.
coni:=factors(projy)[2][1,1];
/* Pour retrouver les coniques degeneree, on cree la forme quadratique associee en£homog\'en\'eisant son \'equation, puis on trouve la matrice de la forme quadratique£avec les d\'eriv\'ees partielles. on regarde ensuite son son determinant.*/
q:=normal(x[3]^2*unapply(coni,x,y)(x[1]/x[3],x[2]/x[3]));
Mq:=matrix(3,3,(i,j)->diff(q,x[i],x[j]));#le determinant est bien nul pour u=4.
purge(u);
DS1:=implicitplot(S1,x,y,z,color=13+rempli):
 purge(t);
u:=3;
 M:=[5,5,10]+t*[x-5,y-5,0-10];#la droite passant par [5,5,10] et [x,y,0]
proj2:=resultant(unapply(S1,x,y,z)(op(M)),unapply(S2,x,y,z)(op(M)),t);
/* La projection pour u=3 depuis (5,5,10) a brise la sym\'etrie que l'on avait en£projetant selon Oz sur les solutions du systeme. On n'a donc plus le carr\'e£d'une conique. D'autre part, bien que l'on voie 2 nappes r\'eelles, elles ne£ressemblent pas du tout a des coniques ni a des droites, l'equation de degre 4£est donc irreductible sur les complexes.*/
 implicitplot(proj2,x=-2..2,y=-2..2,xstep=0.01):
/* on cherche une quadrique degeneree contenant S3 inter S4 */
 
 S3:=7*x^2+4*x*y+4*x*z+5*y^2+12*y*z+6*z^2+1;
 S4:=-x^2-2*x*y-2*x*z-4*y^2-6*y*z-3*z^2-2;
 S3h:=normal(x[4]^2*unapply(S3,x,y,z)(x[1]/x[4],x[2]/x[4],x[3]/x[4]));
 S4h:=normal(x[4]^2*unapply(S4,x,y,z)(x[1]/x[4],x[2]/x[4],x[3]/x[4]));
 MS3:=matrix(4,4,(i,j)->diff(S3h,x[i],x[j]));
 MS4:=matrix(4,4,(i,j)->diff(S4h,x[i],x[j]));
 factor(det(l1*MS3+l2*MS4));#les solutions sont (l1,l2) =(1,-1),(2,1),(1,2),(2,19)
/* Donc les 4 noyaux suivants donnent 4 points de l'espace projectif de dimension£3 tels que S3 inter S4 soit sur un cone de degre 2 de sommet ce point. cette£intersection se projette donc en une conique double depuis ces points. Il y en£a 3 a l'infini et le point (0,0).£ On trouve donc les 3 projections selon les vecteurs (0,1,-1),(0,0,-1),(3,0,-1)£ et la projection centrale de centre (0,0,0). Essayons d'eliminer z avec la£ projections selon (0,1,-1). */
 ker(MS3-MS4);ker(2*MS3+MS4);ker(MS3+2*MS4);ker(2*MS3+19*MS4);
 M:=[x,y,0]+t*[0,1,-1];
 proj3:=resultant(unapply(S3,x,y,z)(op(M)),unapply(S4,x,y,z)(op(M)),t);
factor(proj3);#c'est bien une conique double.
/* -----------------------------------------------Exercice-----------------------------------*/
 G:=t^2*(x^2+y^2-1)+t*(x*y+y^2-x^2)+(x^2+2*y^2-1);
dG:=diff(G,t);
eq:=resultant(G,dG,t);
 factor(eq); 
/* c'est divisible par le coefficient de t^2 dans G! En effet, on a calcule un£resultant entre un polyn\^ome de degre 2 et un autre de degre 1. Mais en un point£ou x^2+y^2=1, le degre de ces polynomes chute de 1, et l'on aurait donc du£prendre pour un tel point une formule de resultant pour degre inferieur. On a£donc rajoute des solution a notre probleme. l'equation de l'enveloppe est donc:*/
eqenv:=normal(eq/(coeff(G,t^2)));
Gt:=unapply(G,t);
dGt:=unapply(diff(G,t),t);
envel:=implicitplot(eqenv,x=-7..7,y=-7..7,xstep=0.01,ystep=0.01,affichage=blue+line_width_3):
