Nombres congruents

Définition

Définition

Un nombre entier \(n\) est dit congruent si c’est l’aire d’un triangle rectangle de côtés \((a,b,c)\) rationnels.

Autrement, dit, \(n\) est congruent si et seulement si il existe \(a,b,c\in\Q\) tels que

\[a^2+b^2=c^2 \text{ et } \frac{ab}2=n\]

Par exemple, le triangle rectangle de côtés \((3,4,5)\) est d’aire \(n=6\), qui est donc un nombre congruent. \(n=5\) est également congruent, via le triangle \((\frac{3}2, \frac{20}3, \frac{41}6)\) (cette fois il est nécessaire de passer par des longueurs rationnelles).

Dans cet exposé, on va essayer de répondre à deux questions :

  • quels sont les nombres congruents ?

  • si un entier \(n\) est congruent, peut-on déterminer un triangle rationnel dont c’est l’aire.

On va voir que l’on peut apporter des réponses très distinctes à ces deux questions, et qui font appel à de très belles théories arithmétiques. Bien que raisonnablement satisfaisantes, ces réponses pour être vraiment complètes nécessiteraient chacune la démonstration d’une des plus grande conjecture de théorie des nombres, la conjecture de Birch et Swinnerton-Dyer.

Premier paramétrage

Comme multiplier les longueurs par \(d\) multiplie l’aire par \(d^2\), il suffit de considérer les nombres congruents sans facteurs carrés.

Triplets pythagoriciens

On s’intéresse d’abord aux rationnels satisfaisant \(a^2+b^2=c^2\).

En posant \(u=\tfrac ac\) et \(v=\tfrac bc\), il s’agit des points rationnels du cercle \(u^2+v^2=1\). En posant \(\tan(θ)=\tfrac uv\) et \(t=\tan(θ/2)\), les formules trigonométriques classiques nous donnent le paramétrage

\[\begin{aligned} u &= \cos(θ) &= \frac{1-t^2}{1+t^2} \\ v &= \sin(θ) &= \frac{2t}{1+t^2} \end{aligned}\]

où dans l’autre sens on retrouve \(t=\frac{1-u}v=\frac{v}{u+1}\).

Proposition

On a une bijection

\[\begin{aligned} \Q^2 &\to & Δ = \set{a,b,c\in\Q, a^2+b^2 = c^2 } \\ (t,c) &\mapsto &(c\frac{1-t^2}{1+t^2}, c\frac{2t}{1+t^2}, c) \end{aligned}\]

d’inverse \((t,c)=(\frac{c-a}{b},c)\).

Par ce paramétrage, les triangles \(a,b,c>0\) correspondent aux points \(t,c\) tels que \(0<t<1\) et \(c>0\).

Un algorithme d’énumération

En écrivant \(t=\frac{l}k\) et en chassant les dénominateurs, on obtient le paramétrage suivant des triangles à côtés entiers

\[\begin{aligned} \N^2 &\to \set{(a,b,c), a^2+b^2=c^2 } \\ k,l &\mapsto (k^2-l^2,2kl,k^2+l^2) \end{aligned}\]

on peut alors tenter de chercher les nombres congruents par énumération des entiers \(k>l\), en regardant l’aire obtenue modulo les facteurs carrés.

findcong(n,B=800) = {
  for(k=1,B,
    for(l=1,k-1,
      A = k*l*(k^2-l^2);
      if(core(A)==n,
        d = sqrtint(A/n);
        return([k^2-l^2,2*k*l,k^2+l^2]/d))
  ));[];
}
findcong(5)
findcong(7)
findcong(13)

Une courbe elliptique

On rajoute à présent la condition d’aire \(ab=2n\).

On obtient \(c^2\frac{(1-t^2)(2t)}{(1+t^2)^2}=2n\), soit en posant \(y=\frac{1+t^2}{c}\) et \(x=-nt\), un point \((x,y)\) sur la courbe

\[E_n : y^2 = x^3 - n^2x\]

Réciproquement, un point \((x,y)\) fournit un triangle, et on aura \(a,b,c>0\) à condition que \(y>0\) et \(x<0\) (sinon il suffit de prendre des valeurs absolues pour avoir un triangle valide).

Proposition

Soit \(n\) un entier. On a une bijection entre les ensembles de rationnels

\[\begin{aligned} \Delta_n=\set{(a,b,c)\gt 0, a^2+b^2=c^2, 2ab=n } &\leftrightarrow &E_n^+=\set{(x,y), y^2=x^3-n^2x, y\gt 0,x\lt 0} \\ (a,b,c) &\mapsto &(\frac{nb}{c-a},\frac{2n^2}{c-a})\\ (\frac{x^2-n^2}y,\frac{2nx}y,\frac{x^2+n^2}y) &\leftarrow &(x,y) \end{aligned}\]
abc2xy(a,b,c)=n=a*b/2;[n*b,2*n^2]/(c-a);

xy2abc(x,y)=issquare(x^2-y^2/x,&n);[x^2-n^2,2*n*x,x^2+n^2]/y;

Or \(E_n(\Q)\) est une courbe elliptique ; si \(n\) est congruent, on dispose d’une loi de groupe sur les triangles correspondants.

Par exemple, on avait obtenu par énumération le triangle d’aire \(n=7\) et de côtés

[a,b,c] = [35/12, 24/5, 337/60]

on a donc un point \(P\) sur la courbe elliptique \(E_{7}(\Q)\)

E = ellinit([-7^2,0])
P = abc2xy(a,b,c)
ellisoncurve(E,P)

Et on peut surtout obtenir d’autres points en utilisant la loi de groupe

P=elladd(E,P,P)

On peut également utiliser Pari/GP pour retrouver des points sur la courbe, quand celle-ci fait partie de la famille de courbes répertoriées par Cremona.

pt(n)=ellgenerators(ellinit([-n^2,0])) \\ y^2=x^3+(-n^2)*x+0
pt(5)
%1 = [[-4, 6]]

et en effet

xy2abc(-4,6)

On se rend compte que les points deviennent vite gigantesques

pt(61)
%1 = [[-10227204/198025, -20556753594/88121125]]

Et après ?

Si la courbe n’est pas dans les tables précalculées, il existe cependant une fonction qui permet d’en déterminer un point rationnel.

ellheegner(ellinit([-157^2,0]))

Théorème

Le triangle de côtés

  • a = 411340519227716149383203 / 21666555693714761309610,

  • b = 6803298487826435051217540 / 411340519227716149383203,

  • c = 224403517704336969924557513090674863160948472041 / 8912332268928859588025535178967163570016480830

est un triangle rectangle d’aire \(n=157\). Et c’est le plus petit.

C’est le contenu de cette fonction ellheegner et un morceau des théories magnifiques qu’il y a derrière que l’on va esquisser à présent.

Rang et nombres congruents

Les points d’une courbe elliptique forment un groupe abélien de type fini :

Théorème de Mordell

En notant \(E_n(\Q)_{\text{tors}}\) les points d’ordre fini, il existe un entier \(r\geq0\), appelé rang, tel que

\[E_n(\Q)\simeq E_n(\Q)_{\text{tors}}\times\Z^r\]

\(E_n(\Q)\) possède toujours au moins quatre points qui sont d’ordre fini : \(\infty\), et les quatre points d’ordre 2 \((-1,0), (0,0), (1,0)\). Aucun de ces points ne fournit de nombre congruent. Il se trouve que la courbe ne peut avoir d’autre points d’ordre fini.

Lemme

\[\#E_n(\Q)_{\text{tors}} = 4\]

On a donc

Théorème

La courbe elliptique \(E_n(\Q)\) possède des points \((x,y)\) avec \(y\neq0\) si et seulement si elle est de rang \(r>0\).

Il reste à déterminer quand cela se produit, et dans ce cas à exhiber des points générateurs.

La magie des fonctions L va rentrer dans le jeu, et permettre de résoudre ce problème de points sur \(\Q\) en passant par les réductions \(E_n(\F_p)\).

Fonction L

Définition

On pose

\[L(E_n,s)=\prod_p (1-a_pp^{-s}+\delta(p)p^{1-2s})^{-1}\]

\(\delta(p)=1\) si \(p\nmid 2n\) et \(0\) sinon, et \(a_p\) est défini par

\[\#E_n(\F_p) = p + 1 - a_p\]

Dans le cas des courbes \(E_n\), ces fonctions L obéissent à l’équation fonctionnelle suivante.

Théorème

Soit \(N=16n^2\) si \(n\) est impair, et \(N=32n^2\) sinon. On pose

\[\Lambda(s) = N^{s/2}(2π)^{-s}\Gamma(s)L(E_n,s)\]

Alors

\[\Lambda(s)=\epsilon\Lambda(2-s)\]

\(\epsilon=1\) si \(n=1,2,3[8]\) et \(\epsilon=-1\) si \(n=5,6,7[8]\).

Une des plus fameuses conjecture de théorie des nombres énonce que le rang d’une courbe elliptique sur \(\Q\) influence très précisément le comportement des réductions modulo \(p\), et que ce lien se lit dans le comportement en \(s=1\) de la fonction \(L\).

Conjecture BSD (Birch et Swinnerton-Dyer)

\(E_n(\Q)\) est de rang égal à l’ordre d’annulation de \(L(E,s)\) en \(s=1\).

Dans le cas des courbes \(E_n\), le cas du rang 0 a été démontré dans les années 1980

Théorème (Coates-Wiles)

Si \(L(E_n,1)\neq0\), alors \(E_n(\Q)\) est fini, donc \(n\) n’est pas un nombre congruent.

Cardinaux modulo p

Proposition

Notons \(\chi=\kronecker{\cdot}{p}\), de sorte que \(\chi(x)=1\) si et seulement si \(x\) est un carré modulo \(p\).

Alors

\[\#E_n(\F_p) = 1 + \sum_{x\in\F_p} 1+\chi(x^3-n^2x) = p + 1 + \sum_{x\in\F_p}\chi(x^3-n^2x)\]

Ainsi \(a_p = -\sum_x\chi(x^3-n^2x)\). On calcule les premières valeurs

card(n,np)=[-sum(x=1,p-1,kronecker(x^3-n^2*x,p)) | p <- primes(np)]
card(3,20)
card(5,20)

On se rend vite compte de deux choses

  • \(a_n(p)=0\) si \(p=3[4]\)

  • quand \(n\) varie, \(a_n(p)\) se contente de changer de signe, ou s’annule si \(p\mid n\).

Et en effet, on a :

Proposition

\[a_n(p)=\sum_x\chi(x^3-n^2x)=\chi(n)\sum_{x\in\F_p^\ast}\chi(x-1/x)\]

et \(a_n(p)=0\) si \(p=2\) ou \(p=3[4]\).

Démonstration

Par multiplicativité, \(\chi(x^3-n^2x)=\chi(nx^2)\chi(x/n-n/x)\), et \(n\) étant inversible \(\sum_x=\sum_{x/n}\).

Enfin, \(a_n(p)=\sum_x\chi(1/x-x)=\chi(-1)a_n(p)\) est nul dès que \(-1\) n’est pas un carré, quand \(p=3[4]\).

On se ramène donc à calculer uniquement les valeurs \(a_1(p)\) pour la courbe \(E_1:y^2=x^3-x\).

Il se trouve que cette courbe est à multiplication complexe par \(\Z[i]\), c’est-à-dire que l’on a un isomorphisme

\[\Z[i] \to \End(E(\Q))\]

sans rentrer dans les détails, une très belle théorie permet de dire que pour tout \(p>2\), les endomorphismes des réductions \(E(\F_p)\) correspondent aussi à des éléments de \(\Z[i]\), en particulier le morphisme de Frobenius qui permet de caractériser les points de \(\F_p\), et qui va correspondre à un élément \(a+ib\in\Z[i]\) tel que \((a+ib)(a-ib)=a^2+b^2=p\).

Théorème (Deuring)

Soit \(p>2\), \(\End(E_1(\overline{\F_p}))=Z[i]\) et il existe \(\pi\in\Z[i]\) tel que \(p=\pi\bar\pi\) et

\[\#E_1(\F_p) = p + 1 - (\pi+\bar\pi)\]

En passant par ce raccourci de la multiplication complexe, on a le résultat suivant, où le critère de choix de \(a\) est spécifique à la courbe \(E_1\) :

Théorème

Soit \(p\equiv 1\bmod 4\). Si l’on écrit \(p=a^2+b^2\) avec \(a\) impair, alors \(a_1(p) = \pm2a\). De plus, le signe de \(a\) est tel que \(a\equiv b+1\bmod4\).

Ainsi, on sait calculer très facilement le coefficient \(a_n(p)\) en résolvant l’équation \(p=a^2+b^2\) et en multipliant par le symbole de Jacobi.

Une q-série

On peut aussi déterminer la forme modulaire correspondant à \(L\), et ici

Lemme

\[\begin{aligned} \sum a_nq^n &= \eta(q^4)^2\eta(q^8)^2 \\ &= q\prod_n (1-q^{4n})^2(1-q^{8n})^2 \\ &= \sum_{2\nmid m}\sum_{2\mid n, m=n+1[4]} mq^{m^2+n^2} \end{aligned}\]

Développer cette forme modulaire permet de calculer beaucoup plus rapidement les coefficients \(a_n\).

Valeur en 1

La valeur de la fonction \(L\) en 1 s’intègre en l’expression suivante :

Proposition

\[L(E,1) = (1+ε) \sum_n \frac{a_n}{n}q^n, q = e^{\frac{2π}{\sqrt N}}\]

Il est clair que \(L(E,1)=0\) dès que \(ε=-1\), c’est-à-dire pour \(n=5,6,7\bmod 8\). On s’attend donc à ce que tous ces entiers soient congruents.

En revanche, si \(\epsilon=1\), il faut faire le calcul et guetter numériquement les annulations

myellL1(e) = {
  my(N=ellglobalred(e)[1]);
  my(a=2*Pi/sqrt(N));
  my(K=ceil(precision(1.)*log(10)/a));
  my(v=ellan(e,K));
  my(q=exp(-a));
  my(s=0);
  forstep(k=K,1,-1,s=s*q+v[k]/k);
  2*q*s;
}
iscong(n) = issquarefree(n)&&(n%8>4||abs(ellL1(ellinit([-n^2,0]),0))<1e-20);

L = select(n->iscong(n),[1..100])

La plupart des nombres correspondent aux classes modulo 8, mais il existe d’autres entiers.

Set(L%8)
select(n->n%8<5,L)

On a donc réussi à obtenir un critère permettant de décider rapidement si un entier donné est congruent, mais on n’a pas de règle systématique.

Le critère de Tunnell

En 1983, utilisant un théorème de Waldspurger qui prévoit que les valeurs \(L(E_n,1)\) se retrouvent dans les coefficients d’une certaine forme modulaire de poids \(3/2\), Tunnell détermine explicitement cette forme et démontre le critère suivant

Théorème (Tunnell)

On pose

\[\begin{aligned} g(q) &= \eta(q^8)\eta(q^{16}) = q\prod_{k\geq1}(1-q^{8k})(1-q^{16k}) \\ θ(q) &= \sum_{k\in\Z}q^{k^2} \end{aligned}\]

et

\[\begin{aligned} \sum_n a_n q^n &= g(q)\Theta(q^2) \\ \sum_n b_n q^n &= g(q)\Theta(q^4) \end{aligned}\]

alors pour tout \(n\)

  • si \(n\) est impair, \(L(E_n,1)=0\) ssi \(a_n=0\).

  • si \(n=2m\) est pair, \(L(E_n,1)=0\) ssi \(b_m=0\).

En particulier, si \(a_n\neq 0\) alors \(n\) n’est pas congruent, et si \(b_n\neq 0\) alors \(2n\) n’est pas congruent. Et la réciproque est vraie sous BSD.

T(d,n) = 1+2*sum(k=1,sqrtint(n\d),q^(d*k^2))
g(n) = q*eta(q^8+O(q^(n+1)))*eta(q^16+O(q^(n+1)));

A(n) = g(n) * T(2,n)

B(n) = g(n) * T(4,n)
cong(n) = {
  AA = A(n); BB = B(n\2);
  v = vector(n,k,if(k%2,polcoeff(AA,k),polcoeff(BB,k/2)));
  \\ remove squares
  for(p=2,sqrtint(n),forstep(k=p^2,n,p^2,v[k]=1));
  Vec(select(x->!x,v,1));
  }
cong(3000)

La situation est désormais la suivante :

  • tout entier \(n\) sans facteur carré qui n’apparaît pas dans ces listes n’est pas congruent.

  • on pense que tout entier \(n\) dans la liste est congruent, d’après la conjecture BSD.

  • ce critère ne donne absolument pas de construction de triangle d’aire \(n\) quand on pense que \(n\) est congruent.

Calculs de points

Il reste désormais à répondre à la seconde question : exhiber un triangle d’aire \(n\) quand \(n\) apparaît dans la liste ci-dessus.

Une très belle technique va permettre d’y arriver quand le rang de la courbe est exactement 1.

Point de Heegner

Théorème de modularité

\(E_1\) est modulaire, c’est-à-dire que

  • \(f(τ)=\sum a_nq^n\) est une forme modulaire nouvelle (normalized newform) de poids 2 pour \(\Gamma_0(32)\)

  • l’application

    \[\phi : τ \mapsto 2iπ\int_{i\infty}^τf(z)dz = \sum_n\frac{a_n}nq^n\]

    définit une paramétrisation modulaire

    \[X_0(32) = \Gamma_0(32)\backslash\H \to^\phi \C/Λ \to^\wp E_1\]

On se place dans le cas où \(n\) est impair.

points de Heegner

Soit \(τ\in X_0(32)\) un point CM pour le discriminant \(n\), (par exemple \(τ=i\frac{\sqrt{2n}}8\) si \(n=5\bmod 8\)). Alors \(\phi(τ)\) appartient à \(E_1(H(n))\), le corps de classe de Hilbert de \(K=\Q(\sqrt{n})\).

Comme on sait expliciter \(\Gal(H(n)/K)=\Cl(K)\) et son action, on peut déterminer en moyennant sur les automorphismes de Galois un point \(\sum_\sigma P^\sigma \in E_1(K)\).

Ainsi, on a un point sur \(E_1(K)\), donc sur \(E_n(\Q)\).

Reconstruction rationnelle

Mais ce point est calculé par une approximation réelle. Il reste à reconnaître les coordonnées rationnelles…

Par exemple pour \(E_{157}\), un calcul à 38 décimales donne le point

P = [419.22806532474230298887443119678153609, 7959.0633833662364857658880430407789399]

En utilisant les fractions continues (fonction bestappr), on sait déterminer des fractions correspondant aux approximations de \(P\), si l’on donne une borne sur le dénominateur.

bestappr(P,10^20)

On peut changer la borne sur le dénominateur autant qu’on veut, dans le cas présent on n’y arrivera jamais : l’approximation est trop faible par rapport à la taille du résultat.

Il faut savoir à quoi s’attendre, avoir une idée de la taille des fractions cherchées ; pour cela, on refait appel à la fonction L :

Gross-Zagier

Si \(E_n\) est de rang 1, la hauteur du point générateur \(P\) est proportionnelle à la valeur \(\sqrt{n}L'(E_n,1)\).

Ainsi, on sait à quelle précision faire les calculs. La fonction ellheegner de Pari/GP automatise tout ce processus.

default(timer, 1)
ellheegner(ellinit([-157^2,0]))

Pour l’entier \(n=2447\), il faut une demi-heure pour déterminer le point

[x,y]={
[350693469184854653527716377000788632990404242854816553018105661841
8840587279849293964559746855920734893438685551897449630051750511026
3845573943345925791575222308091183780551030734982254124197768484316
5100350225/13645475420582990148631664111827720499227532142435909077
5549925120976545834350303794654807284889017894097927130284071187898
8702403402399593806848603481686021401082369725765355290916961440995
3935335430768161,
2067349961237536737356726176424520692020766646283924737500818390397
9722089544446555697255706756665478681738895263131781840980125989682
2422610823804268527843638773667824276518192754449761901587370755704
0412855548413621902483916103904783126495706590656756453214755381193
49599228098340541037210648463396111275831353840/5040608961606801893
4121493559572408132635815306768223473789544002849020205384496375301
4762761088928511592919601929224917585366459829839123453738363429982
3947115175455263533997697471439049024951266305588954634450833770192
9873303246517876878085001989673933742249476468476150379579299967333
786580369880077774159]
}

qui correspond au triangle, suivant, où \(a\) et \(b\) sont des fractions dont les numérateurs et dénominateurs ont plus de 200 chiffres (et \(c\) de l’ordre de 400 chiffres).

xy2abc(x,y)