Voilà où j'en suis arrivé:
Donc comme programme, la fonction
mordell qui accepte les coefficients a et b de la courbe elliptique en entrée, ainsi qu'un paramètre
t, qui est la description donnée par
Pari du groupe de torsion, et renvoie le nuage de points représentant ce groupe (fini):
Code : Tout sélectionner
mordell(a,b,t):={
local n,p,q,s,c,x,y,xp,yp,xq,yq,res;
res:=NULL;
n:=t[0];
xp:=t[2][0][0];
yp:=t[2][0][1];
p:=point(xp,yp);
res:=res,affichage(p,3,square_point);
if (n>1) {
s:=(3*xp^2+a)/(2*yp);
x:=s*s-2*xp;
y:=-yp+s*(xp-x);
q:=point(x,y);
res:=res,affichage(q,3,square_point);
}
for(k:=0;k<=n;k++){
s:=(y-yp)/(x-xp);
c:=(yp*x-y*xp)/(xp-x);
xq:=x;
yq:=y;
x:=s*s-xp-xq;
y:=c-s*(s*s-xp-xq);
q:=point(x,y);
res:=res,affichage(q,3,square_point);
}
return res;
};
Après, on crée les curseurs a et b:
Code : Tout sélectionner
a:=element((-20) .. 20,0.0,1.0)
b:=element((-20) .. 20,1.0,1.0)
Au passage, on dessine la courbe elliptique:
On fournit la courbe elliptique à Pari:
on récupère le groupe de torsion:
Enfin, on dessine le groupe de torsion avec la fonction compilée:
Après, il n'y a plus qu'à manipuler les curseurs, et, osons le dire, c'est beau!