{VERSION 6 0 "IBM INTEL LINUX" "6.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 2 1 2 0 0 0 1 }{CSTYLE "_cstyle17" -1 222 "Courier" 1 12 255 0 0 1 2 1 2 2 1 2 0 0 0 1 }{CSTYLE "_cstyle18" -1 223 "Courier" 1 12 255 0 0 1 2 1 2 2 1 2 0 0 0 1 }{CSTYLE "" -1 256 "" 0 1 0 0 0 0 1 2 0 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Heading 1" -1 3 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }1 1 0 0 8 4 2 0 2 0 2 2 -1 1 }{PSTYLE "Title" -1 18 1 {CSTYLE "" -1 -1 "Ti mes" 1 18 0 0 0 1 2 1 1 2 2 2 0 0 0 1 }3 1 0 0 12 12 2 0 2 0 2 2 -1 1 }{PSTYLE "_pstyle21" -1 220 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 0 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "_pstyle22" -1 221 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 2 2 2 1 0 0 1 }1 0 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "_pstyle26" -1 225 1 {CSTYLE "" -1 -1 " " 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 }0 0 0 -1 -1 -1 2 0 2 0 2 2 -1 1 }} {SECT 0 {EXCHG {PARA 18 "" 0 "" {TEXT -1 45 "OPA 2005 TP3\nAutour du g roupe de Mordell-Weil" }}{PARA 18 "" 0 "" {TEXT 256 19 "Proc\351dures \+ fournies" }}}{EXCHG {PARA 220 "> " 0 "" {MPLTEXT 1 222 8 "restart;" }} }{SECT 1 {PARA 3 "" 0 "" {TEXT -1 19 "Proc\351dures fournies" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "deltaE:=E-> 4*E[1]^3+27*E[2] ^2:" }}}{EXCHG {PARA 221 "> " 0 "" {MPLTEXT 1 223 133 "appart:=proc(E, P);\n if P=Origine then RETURN(true);fi;\n if P[2]^2=P[1]^3+E[1]*P[1]+ E[2] then RETURN(true) else RETURN(false);fi;\nend:" }}}{EXCHG {PARA 221 "> " 0 "" {MPLTEXT 1 223 154 "somme1:=proc(E,P,Q) local alpha,x3,y 3;\n alpha:=(Q[2]-P[2])/(Q[1]-P[1]);\n x3:=alpha^2-P[1]-Q[1]; \n \+ y3:=-P[2]+alpha*(P[1]-x3);\n RETURN([x3,y3]);end:" }}}{EXCHG {PARA 221 "> " 0 "" {MPLTEXT 1 223 150 "somme2:=proc(E,P) local alpha,x3,y3; \n alpha:=(3*P[1]^2+E[1])/(2*P[2]);\n x3:=alpha^2-2*P[1]; \n y3: =-P[2]+alpha*(P[1]-x3);\n RETURN([x3,y3]);end:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 472 "somme:=proc(E,P,Q) local alpha, x3,y3;\n if \+ deltaE(E)=0 then error \"ceci n'est pas une courbe elliptique\" else\n if appart(E,P) and appart(E,Q) then\n if P<>Origine and Q<>Orig ine then\n if P[1]<>Q[1] then RETURN(somme1(E,P,Q))\n elif P [2]=Q[2] and Q[2]<> 0 then RETURN(somme2(E,P))\n else RETURN(Or igine);\n fi; \n elif P=Origine then RETURN(Q);\n else RETU RN(P);\n fi;\n else error \"les points doivent etre sur la courb e !\";\n fi;\n fi;\nend:" }}}{EXCHG {PARA 220 "> " 0 "" {MPLTEXT 1 222 217 "nbpointsmodp:=proc(E,p) local N, i, fx, x;\n N:=1;\n for i f rom 0 to p-1 do \n fx:=subs(x=i,x^3+E[1]*x+E[2]) mod p;\n if fx=0 t hen N:=N+1;\n elif numtheory[quadres](fx,p)=1 then\n N:=N+2;\n f i;\n od;\nRETURN(N);\nend:" }}}{EXCHG {PARA 221 "> " 0 "" {MPLTEXT 1 223 153 "appartmodp:=proc(E,P,p);\n if P=Origine then RETURN(true);fi; \n if P[2]^2 mod p = P[1]^3+E[1]*P[1]+E[2] mod p then RETURN(true) els e RETURN(false);fi;\nend:" }}}{EXCHG {PARA 221 "> " 0 "" {MPLTEXT 1 223 178 "somme1modp:=proc(E,P,Q,p) local alpha,x3,y3;\n alpha:=(Q[2] -P[2])/(Q[1]-P[1]) mod p;\n x3:=alpha^2-P[1]-Q[1] mod p; \n y3:=-P [2]+alpha*(P[1]-x3) mod p;\n RETURN([x3,y3]);end:" }}}{EXCHG {PARA 221 "> " 0 "" {MPLTEXT 1 223 174 "somme2modp:=proc(E,P,p) local alpha, x3,y3;\n alpha:=(3*P[1]^2+E[1])/(2*P[2]) mod p;\n x3:=alpha^2-2*P[ 1] mod p; \n y3:=-P[2]+alpha*(P[1]-x3) mod p;\n RETURN([x3,y3]);en d:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 521 "sommemodp:=proc(E,P, Q,p) local alpha, x3,y3;\n if 2*deltaE(E) mod p = 0 then error \"ce n' est pas une courbe elliptique modulo %1\",p\n else\n if appartmodp(E, P,p) and appartmodp(E,Q,p) then\n if P<>Origine and Q<>Origine then \n if P[1]<>Q[1] then RETURN(somme1modp(E,P,Q,p))\n elif P[2 ]=Q[2] and Q[2]<> 0 then RETURN(somme2modp(E,P,p))\n else RETU RN(Origine);\n fi; \n elif P=Origine then RETURN(Q)\n el se RETURN(P);\n fi;\n else error \"les points doivent etre sur la \+ courbe !\";\n fi;\n fi;\nend:" }}}{EXCHG {PARA 220 "> " 0 "" {MPLTEXT 1 222 283 "ordremodp:=proc(E,P,p) local n,Q;\nif 2*deltaE(E) \+ mod p = 0 then error \"ce n'est pas une courbe elliptique modulo %1\", p\nelse\n if not(appartmodp(E,P,p)) then RETURN(FAIL) else\n n:=1; Q:=P;\n while Q<>Origine do\n n:=n+1; Q:=sommemodp(E,Q,P,p); od ;\n RETURN(n);\n fi;\nfi;\nend:" }}}{EXCHG {PARA 220 "> " 0 "" {MPLTEXT 1 222 441 "pointsmodp:=proc(E,p) local N, L, i, fx, x, y, o; \nif 2*deltaE(E) mod p = 0 then error \"ce n'est pas une courbe ellipt ique modulo %1\",p\nelse \nL:=[[Origine,1]];N:=1;\n for i from 0 to p- 1 do \n fx:=subs(x=i,x^3+E[1]*x+E[2]) mod p;\n if fx=0 then L:=[op( L),[[i,0],2]]; N:=N+1\n else y:=numtheory[msqrt](fx,p);\n if y<> FAIL then o:=ordremodp(E,[i,y],p); L:=[op(L),[[i,y],o],[[i,-y],o]]; N :=N+2;\n fi;\n fi;\n od;\nRETURN([N,L]);\nfi;\nend:" }}}{EXCHG {PARA 220 "> " 0 "" {MPLTEXT 1 222 168 "candidatsy:=proc(E) local L,r, i,d;\n L:=ifactors(4*E[1]^3+27*E[2]^2); r:=1;\n for d in L[2] do r:= r*d[1]^iquo(d[2],2);od;\n RETURN([0,op(numtheory[divisors](r))]);\nen d:" }}}{EXCHG {PARA 220 "> " 0 "" {MPLTEXT 1 222 158 "trouverx:=proc(E ,y) local x,sol,L,d;\nsol:=\{solve(y^2=x^3+E[1]*x+E[2],x)\};\nL:=[]; f or d in sol do if type(d,integer) then L:=[op(L),d]; fi; od;\nRETURN(L );\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 369 "transf:=proc(f ) local F,a,b,c; # f sera present\351 sous la forme : y^2+ay+bxy= poly nome en x de degr\351 3\n F:=-lhs(f)+rhs(f);\n a:=coeff(F,y) ;\n if a< >0 then\n F:=expand(subs(y=y+a/2,F)) \n fi;\n b:=coeff(coeff(F,x),y) ; \n if b<>0 then\n F:=expand(subs(y=y+b*x/2,F)) \n fi;\n c:=coeff(F,x^2 );\n if c<>0 then\n F:=expand(subs(x=x-c/3,F))\n fi;\n RETURN(y^2=sort (algsubs(y^2=0,F)));\nend:" }}}}{PARA 225 "" 0 "" {TEXT -1 0 "" }}} {MARK "2 0 0" 19 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }