Page 1 sur 1
courbes elliptiques avec Pari
Publié : sam. oct. 16, 2010 1:51 pm
par alain974
Bonjour.
Alors là on s'accroche aux branches!
Si on entre
on constate que g contient une courbe elliptique entre crochets, comme la syntaxe de Pari le demande. Mais si après ça on entre
pour avoir les éléments de torsion du groupe de Mordell-Weil de g, on a un message d'erreur
Error in PARI subsystem
avec un retour "undef".
Idem avec d'autres fonctions de courbes elliptiques comme par exemple
qui devait donner les générateurs du groupe de Mordell-Weil.
Il semble que la syntaxe de g ne soit pas reconnue par Pari...
Re: courbes elliptiques avec Pari
Publié : sam. oct. 16, 2010 2:46 pm
par parisse
C'est peut-etre du au fait qu'en sortie de pari, pour convertir vers xcas, je ne fais pas la différence entre les types t_VEC et t_COL de pari. Mais ca va être difficile à corriger, parce que je n'ai jamais regardé comment fonctionnent ces fonctions elliptiques...
Re: courbes elliptiques avec Pari
Publié : sam. oct. 16, 2010 3:36 pm
par frederic han
NB: en revanche
pari()
pari(E = ellinit([0,0,0,-1,0]))
elltors(E)
fonctionne
Re: courbes elliptiques avec Pari
Publié : sam. oct. 16, 2010 4:31 pm
par parisse
excellent!
bon sinon, semble-t-il un simple ajustement sur le type t_VEC/t_COL marche, après correction du pb, si je fais g:=pari("ellinit",[0,0,0,1,2]); h:=pari("elltors",g); et ça renvoie
[0,0,0,1,2,0,2,8,-1,-48,-1728,-1792,432/7,[-1.0,0.5-1.32287565553*i,0.5+1.32287565553*i],3.49819325675,-1.74909662838+1.14810572874*i,-1.43180151895,0.715900759476-1.36797821866*i,4.01629571831];[4,[4],[[1,2]]]
Re: courbes elliptiques avec Pari
Publié : sam. oct. 16, 2010 5:29 pm
par alain974
parisse a écrit :après correction du pb
dans le code source j'imagine?
Re: courbes elliptiques avec Pari
Publié : sam. oct. 16, 2010 6:56 pm
par parisse
dans mon source perso, je pense faire une mise a jour source/binaires win+linux en début de semaine prochaine.
Re: courbes elliptiques avec Pari
Publié : ven. nov. 05, 2010 7:01 pm
par alain974
Ça commence à devenir intéressant:
Code : Tout sélectionner
a:=element(-8 .. 8,-2,1)
b:=element(-8 .. 8,-1,1)
implicitplot(x^3+a*x+b-y^2)
ec:=pari("ellinit",[0,0,0,round(a),round(b)])
torsion:=pari("elltors",ec)
ordre:=torsion[1]
generateurs:=torsion[3]
couleur(point(generateurs),4)
Avantages:
*On peut piloter a et b avec des curseurs entiers, et voir la courbe elliptique évoluer
*L'affichage de l'ordre du groupe de torsion suit le mouvement, c'est magique!
*On a s'il existe, un générateur du groupe de torsion, dessiné sur la figure!
Étapes suivantes:
*Dessiner tout le groupe de torsion, pour cela il faudra un peu de programmation (boucle)
*Essayer d'avoir aussi un (ou des) générateur(s) du groupe infini
*Calculer le discriminant et rendre la figure invisible si la courbe n'est pas elliptique (bon exercice pour les agrégatifs
)
*Passer au cas modulo p, où la courbe elliptique et son groupe de Mordell-Weil deviennent des nuages de points.
Donc suite au prochain épisode...
Re: courbes elliptiques avec Pari
Publié : sam. févr. 05, 2011 3:05 pm
par alain974
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!