Homeに戻る  一覧に戻る 

Rational Points on Elliptic Curves: u^3+v^3-6uv=2021, y^2=x^3+36414x^2+442865772x+1797149302776


[2022.09.21]u^3+v^3-6uv=2021, y^2=x^3+36414x^2+442865772x+1797149302776の有理点


■Diophantus方程式
     C2021: u3+v3-6uv=2021 ----- (1)
で表される楕円曲線の有理点(u,v)を求める。

■曲線Cが整点(u,v)を持たないことは、(初等的な議論で)簡単に証明できる。
[証明]
u,vを整数とする。
     u3+v3+23-3・2xy=2021+23
より、
     (u+v+2)(u2+v2+4-uv-2u-2v)=2029
である。ここで、(u+v+2)は整数、(u2+v2+4-uv-2u-2v)=(1/2){(x-y)2+(x-2)2+(y-2)2)}は非負整数、2029は素数なので、
     (u+v+2,u2+v2+4-uv-2u-2v)=(1,2029)または(2029,1)
となるが、どちらの組み合わせも整数解(u,v)を持たない。

■以下では、パラメータnを持つ楕円曲線
     Cn: u3+v3-6uv=n ----- (2)
を標準形に変形する。

■双有理変換φ:(u,v)→(x,y)
     x = 6(u+v+2)/(u+v),
     y = 216(u-v)(u+v+2)/{(u+v)2}
[逆有理変換は、ψ:(x,y)→(u,v)
     u = (36x+y)/{6x(x-6)},
     v = (36x-y)/{6x(x-6)}
]
により、曲線Cnは、楕円曲線
     C~n: y2 = 6nx4-108nx3+648(n+2)x2-1296(n+8)x ----- (3)
に写される。

[pari/gpによる計算]
gp > ffn(u,v,n)=u^3+v^3-6*u*v-n
%1 = (u,v,n)->u^3+v^3-6*u*v-n
gp > ffn((36*x+y)/(6*x*(x-6)),(36*x-y)/(6*x*(x-6)),n)
time = 1 ms.
%2 = (-6*n*x^4 + 108*n*x^3 + (-648*n - 1296)*x^2 + (1296*n + 10368)*x + y^2)/(6*x^4 - 108*x^3 + 648*x^2 - 1296*x)
gp > %2*(6*x^4 - 108*x^3 + 648*x^2 - 1296*x)
%3 = -6*n*x^4 + 108*n*x^3 + (-648*n - 1296)*x^2 + (1296*n + 10368)*x + y^2
gp > [factor(-648*n - 1296)]
%4 = [Mat([n + 2, 1])]
(11:52) gp > [factor(1296*n + 10368)]
%5 = [Mat([n + 8, 1])]
gp > factor(1296)
%6 =
[2 4]

[3 4]


両辺に、36(n+8)2/x4を掛けると、
     36(n+8)2y2/x4 = 6・36n(n+8)2-108n・36(n+8)2/x+648(n+2)・36(n+8)2/x2-1296・36(n+8)3/x3
     {6(n+8)y/x2}2 = 216n(n+8)2+108n(n+8){-36(n+8)/x}+18(n+2){-36(n+8)/x}2+{-36(n+8)/x}3
となる。ここで、有理変換φn:(x,y)→(X,Y)
     X = -36(n+8)/x,
     Y = 6(n+8)y/{x2}
[逆有理変換Ψn:(X,Y)→(x,y)は、
     x = -36(n+8)/X,
     y = 216(n+8)Y/{X2}
]
によって、以下の楕円曲線
     En: Y2 = X3+18(n+2)X2+108n(n+8)X+216n(n+8)2 ------------- (4)
に写される。

[pari/gpによる計算]
gp > en(x,y,n)=-6*n*x^4 + 108*n*x^3 + (-648*n - 1296)*x^2 + (1296*n + 10368)*x + y^2
%53 = (x,y,n)->-6*n*x^4+108*n*x^3+(-648*n-1296)*x^2+(1296*n+10368)*x+y^2
gp > en(-36*(n+8)/X,216*(n+8)*Y/X^2,n)
%54 = -10077696/X^4*n^5 + ((-5038848*X - 322486272)/X^4)*n^4 + ((-839808*X^2 - 120932352*X - 3869835264)/X^4)*n^3 + ((-46656*X^3 - 15116544*X^2 - 967458816*X + (46656*Y^2 - 20639121408))/X^4)*n^2 + ((-746496*X^3 - 80621568*X^2 - 2579890176*X + (746496*Y^2 - 41278242816))/X^4)*n + ((-2985984*X^3 - 107495424*X^2 + 2985984*Y^2)/X^4)
gp > %54*X^4
%55 = -10077696*n^5 + (-5038848*X - 322486272)*n^4 + (-839808*X^2 - 120932352*X - 3869835264)*n^3 + (-46656*X^3 - 15116544*X^2 - 967458816*X + (46656*Y^2 - 20639121408))*n^2 + (-746496*X^3 - 80621568*X^2 - 2579890176*X + (746496*Y^2 - 41278242816))*n + (-2985984*X^3 - 107495424*X^2 + 2985984*Y^2)
gp > polcoeff(%55,2,Y)
%56 = 46656*n^2 + 746496*n + 2985984
(15:40) gp > %55/(46656*n^2 + 746496*n + 2985984)
%57 = -216*n^3 + (-108*X - 3456)*n^2 + (-18*X^2 - 864*X - 13824)*n + (-X^3 - 36*X^2 + Y^2)
gp > een(X,Y,n)= -216*n^3 + (-108*X - 3456)*n^2 + (-18*X^2 - 864*X - 13824)*n + (-X^3 - 36*X^2 + Y^2)
%58 = (X,Y,n)->-216*n^3+(-108*X-3456)*n^2+(-18*X^2-864*X-13824)*n+(-X^3-36*X^2+Y^2)
gp > -een(X,0,n)
%59 = 216*n^3 + (108*X + 3456)*n^2 + (18*X^2 + 864*X + 13824)*n + (X^3 + 36*X^2)
gp > polcoeff(%59,3,X)
%60 = 1
gp > polcoeff(%59,2,X)
%61 = 18*n + 36
gp > polcoeff(%59,1,X)
%62 = 108*n^2 + 864*n
gp > polcoeff(%59,0,X)
%63 = 216*n^3 + 3456*n^2 + 13824*n
gp > factor(%63)
%64 =
[    n 1]

[n + 8 2]


よって、楕円曲線Cnを双有理変換φn・φによって、楕円曲線Enに変形することができた。

■以下では、n=2021の場合を考察する。
楕円曲線E2021は、(4)でn=2021とした
     E2021: Y2 = X3+36414X2+442865772X+1797149302776
である。
楕円曲線E2021のねじれ点群E2021(Q)torsは、自明な群{O}である。

[pari/gpによる計算]
gp > -een(X,0,2021)
%101 = X^3 + 36414*X^2 + 442865772*X + 1797149302776
gp > e2021=ellinit([0,36414,0,442865772,1797149302776])
%102 = [0, 36414, 0, 442865772, 1797149302776, 145656, 885731544, 7188597211104, 65635486835985072, -41886720, 1509419764224, -1361017455030986452992, 911544385536000/16881555256169, Vecsmall([1]), [Vecsmall([128, -1])], [0, 0, 0, 0, 0, 0, 0, 0]]
gp > elltors(e2021)
%103 = [1, [], []]
gp > ellglobalred(e2021)
%104 = [36905481, [2, -12138, 0, 4], 6, [3, 2; 43, 1; 47, 1; 2029, 1], [[2, -3, 0, 2], [1, 5, 0, 1], [1, 5, 0, 1], [1, 7, 0, 3]]]
gp > ellanalyticrank(e2021)
time = 217 ms.
%105 = [2, 41.428815560962476326090380093268602202]

■CremonaのmwrankまたはMAGMA Calculator(4-descent)を使って、E2021のMordell-Weil群E2021(Q)を求めると、rank 2で、生成元
     P1=[-10137:89505:1] (height 6.31275184707313)
     P2=[158262:70341372:1] (height 3.93901594134071)
を持つことが分かる。
     E2021(Q) = Z×Z

[mwrankによる計算]
-bash-3.1$ mwrank
Program mwrank: uses 2-descent (via 2-isogeny if possible) to
determine the rank of an elliptic curve E over Q, and list a
set of points which generate E(Q) modulo 2E(Q).
and finally saturate to obtain generating points on the curve.
For more details see the file mwrank.doc.
For details of algorithms see the author's book.

Please acknowledge use of this program in published work,
and send problems to john.cremona@gmail.com.

Version compiled on Sep  8 2018 at 13:52:55 by GCC 5.5.0
using base arithmetic option NTL_ALL (NTL bigints and multiprecision floating point)
Using NTL multiprecision floating point with 15 decimal places.
Enter curve: [0,36414,0,442865772,1797149302776]
Curve [0,36414,0,442865772,1797149302776] :     Working with minimal curve [0,0,1,54540,-27297088] via [u,r,s,t] = [2,-12138,0,4]
Basic pair: I=-2617920, J=47169367632
disc=-2296716955364789639424
2-adic index bound = 2
By Lemma 5.1(a), 2-adic index = 1
2-adic index = 1
One (I,J) pair
Looking for quartics with I = -2617920, J = 47169367632
Looking for Type 3 quartics:
Trying positive a from 1 up to 836 (square a first...)
(1,0,-255600,70341372,-5444498160)      --nontrivial...(x:y:z) = (1 : 1 : 0)
Point = [42600:8792671:1]
        height = 3.93901594134071
Rank of B=im(eps) increases to 1
(1,2,-3000,86504,-924908)       --nontrivial...(x:y:z) = (1 : 1 : 0)
Point = [4002:89501:8]
        height = 6.31275184707313
Rank of B=im(eps) increases to 2
Trying positive a from 1 up to 836 (...then non-square a)
(75,79,-2238,5172,-7112)        --trivial
(675,-663,-2025,3195,-1614)     --trivial
Trying negative a from -1 down to -1057
(-3,0,54,24348,72801)   --trivial
(-27,0,54,8116,8089)    --trivial
(-27,-36,36,8148,10800) --trivial
(-243,-108,36,2716,1200)        --trivial
Finished looking for Type 3 quartics.
Mordell rank contribution from B=im(eps) = 2
Selmer  rank contribution from B=im(eps) = 2
Sha     rank contribution from B=im(eps) = 0
Mordell rank contribution from A=ker(eps) = 0
Selmer  rank contribution from A=ker(eps) = 0
Sha     rank contribution from A=ker(eps) = 0

Used full 2-descent via multiplication-by-2 map
Rank = 2
Rank of S^2(E)  = 2

Searching for points (bound = 8)...done:
  found points of rank 1
  and regulator 6.31275184707313
Processing points found during 2-descent...done:
2-descent increases rank to 2,   now regulator = 23.296900121483
Saturating (bound = 100)...done:
  points were already saturated.
Transferring points from minimal curve [0,0,1,54540,-27297088] back to original curve [0,36414,0,442865772,1797149302776]

Generator 1 is [-10137:89505:1]; height 6.31275184707313
Generator 2 is [158262:70341372:1]; height 3.93901594134071

Regulator = 23.296900121483

The rank and full Mordell-Weil basis have been determined unconditionally.
 (105.797 seconds)

[MAGMA Calculator(4-descent)による計算]
--------(実行するプログラム1)-----------------------
//SetClassGroupBounds("GRH");
E:=EllipticCurve([0, 36414, 0, 442865772, 1797149302776]);
td:=TwoDescent(E:RemoveTorsion);
#td;  // td;
fd:=FourDescent(td[1]:RemoveTorsion);
#fd;  // fd;
for J:=1 to #fd do
  FD:=fd[J];
  pts:=PointsQI(FD,10*10^2);
  F,m:=AssociatedEllipticCurve(FD); F; IsIsomorphic(F,E); Isomorphism(F,E);
  for K:=1 to #pts do
    P:=m(pts[K]); P; printf "height "; Height(P);
    IsPoint(F,P[1]);
  end for; //K
end for;  //J
---------(実行結果1)---------------------------------
3
2
Elliptic Curve defined by y^2 + y = x^3 + 54540*x - 27297088 over Rational Field
true
Elliptic curve isomorphism from: CrvEll: F to CrvEll: E
Taking (x : y : 1) to (4*x - 12138 : 8*y + 4 : 1)
(2806734334559201119062403945331961/5697652895890505162196136099600 :
148422430641657602521619635926977240796121859974291/136001588943537077167614888\
25727992061739544000 : 1)
height 75.7339413542658979493914677891
true (2806734334559201119062403945331961/5697652895890505162196136099600 :
148422430641657602521619635926977240796121859974291/136001588943537077167614888\
25727992061739544000 : 1)
(355571056354035180/1047701471759089 : -186697189062216720325609177/33912228589\
117564474313 : 1)
height 34.2006201609355571294519470775
true (355571056354035180/1047701471759089 :
186663276833627602761134864/33912228589117564474313 : 1)
(13989944112420/52811257249 : 29071529022349409953/12136396594620943 : 1)
height 24.1794264983309350729711488308
true (13989944112420/52811257249 : 29071529022349409953/12136396594620943 : 1)
(178927201194538481481/740312354645683600 :
-35909611437034625219640516379/636975158728852487751416000 : 1)
height 45.6703603664520317799490730490
true (178927201194538481481/740312354645683600 :
35272636278305772731889100379/636975158728852487751416000 : 1)
Elliptic Curve defined by y^2 + y = x^3 + 54540*x - 27297088 over Rational Field
true
Elliptic curve isomorphism from: CrvEll: F to CrvEll: E
Taking (x : y : 1) to (4*x - 12138 : 8*y + 4 : 1)
(42600 : -8792672 : 1)
height 3.93901594134071484543234030811
true (42600 : 8792671 : 1)
(12456531707552409/2632830760000 : 1391770529538506579862077/427203119117600000\
0 : 1)
height 35.4511434720664336088910627730
true (12456531707552409/2632830760000 : 1391770529538506579862077/4272031191176\
000000 : 1)
--------(実行するプログラム2)-----------------------
//SetClassGroupBounds("GRH");
E:=EllipticCurve([0, 36414, 0, 442865772, 1797149302776]);
td:=TwoDescent(E:RemoveTorsion);
#td;  // td;
fd:=FourDescent(td[2]:RemoveTorsion);
#fd;  // fd;
for J:=1 to #fd do
  FD:=fd[J];
  pts:=PointsQI(FD,10*10^2);
  F,m:=AssociatedEllipticCurve(FD); F; IsIsomorphic(F,E); Isomorphism(F,E);
  for K:=1 to #pts do
    P:=m(pts[K]); P; printf "height "; Height(P);
    IsPoint(F,P[1]);
  end for; //K
end for;  //J
---------(実行結果2)---------------------------------
3
2
Elliptic Curve defined by y^2 + y = x^3 + 54540*x - 27297088 over Rational Field
true
Elliptic curve isomorphism from: CrvEll: F to CrvEll: E
Taking (x : y : 1) to (4*x - 12138 : 8*y + 4 : 1)
(23588401115077970605585761/5225798129155139833444 :
114699954427719487049312104270458425179/377771285151400316133095038478872 : 1)
height 56.8147666236581953255032172036
true (23588401115077970605585761/5225798129155139833444 :
114699954427719487049312104270458425179/377771285151400316133095038478872 : 1)
(2001/4 : 89501/8 : 1)
height 6.31275184707313281394480191151
true (2001/4 : 89501/8 : 1)
Elliptic Curve defined by y^2 + y = x^3 + 54540*x - 27297088 over Rational Field
true
Elliptic curve isomorphism from: CrvEll: F to CrvEll: E
Taking (x : y : 1) to (4*x - 12138 : 8*y + 4 : 1)
(17075343162/20802721 : -2266297722022496/94881210481 : 1)
height 17.0582187811336811674337640206
true (17075343162/20802721 : 2266202840812015/94881210481 : 1)
(288697346413302/841107260161 : -4354467509075246043935/771395449331596159 : 1)
height 27.0794124437383032239145622673
true (288697346413302/841107260161 : 4353696113625914447776/771395449331596159 :
1)
(7270832979764864633248178142/4403211468681478748791441 :
-624288807336516052649406123100398568140505/92396243577730087173970056955098007\
61 : 1)
height 57.5390398951141216225113810659
true (7270832979764864633248178142/4403211468681478748791441 :
624279567712158279640688726094703058339744/923962435777300871739700569550980076\
1 : 1)
--------(実行するプログラム3)-----------------------
//SetClassGroupBounds("GRH");
E:=EllipticCurve([0, 36414, 0, 442865772, 1797149302776]);
td:=TwoDescent(E:RemoveTorsion);
#td;  // td;
fd:=FourDescent(td[3]:RemoveTorsion);
#fd;  // fd;
for J:=1 to #fd do
  FD:=fd[J];
  pts:=PointsQI(FD,10*10^2);
  F,m:=AssociatedEllipticCurve(FD); F; IsIsomorphic(F,E); Isomorphism(F,E);
  for K:=1 to #pts do
    P:=m(pts[K]); P; printf "height "; Height(P);
    IsPoint(F,P[1]);
  end for; //K
end for;  //J
---------(実行結果3)---------------------------------
3
2
Elliptic Curve defined by y^2 + y = x^3 + 54540*x - 27297088 over Rational Field
true
Elliptic curve isomorphism from: CrvEll: F to CrvEll: E
Taking (x : y : 1) to (4*x - 12138 : 8*y + 4 : 1)
(19730624303327059643179258/7688088372399871467249 :
-87933745651346731605698923263071995808/674105002722429512150927476325943 : 1)
height 53.2378873180454436285749588266
true (19730624303327059643179258/7688088372399871467249 :
87933071546344009176186772335595669865/674105002722429512150927476325943 : 1)
(36034498/88209 : -208212590368/26198073 : 1)
height 12.7570662040650031734973417813
true (36034498/88209 : 208186392295/26198073 : 1)
(634534084236289/570728877156 : -16176827779460255019133/431166261909534696 : 1)
height 34.2480000721860998804752659995
true (634534084236289/570728877156 : 16176396613198345484437/431166261909534696
: 1)
Elliptic Curve defined by y^2 + y = x^3 + 54540*x - 27297088 over Rational Field
true
Elliptic curve isomorphism from: CrvEll: F to CrvEll: E
Taking (x : y : 1) to (4*x - 12138 : 8*y + 4 : 1)
(70171685242481310386744280006262/7067955488756851933838631801 :
587972082839620374883195471948564335051392287904/594211029500208108947688899943\
499910006451 : 1)
height 68.2696778119523767132961561967
true (70171685242481310386744280006262/7067955488756851933838631801 :
587972082839620374883195471948564335051392287904/594211029500208108947688899943\
499910006451 : 1)
(278062/441 : 148681504/9261 : 1)
height 7.74646937276269214525694265794
true (278062/441 : 148681504/9261 : 1)

■楕円曲線E2021の有理点をいくつか求めると、以下のようになる。

[pari/gpによる計算]
gp > ec(n)=ellinit([0,18*(n+2),0,108*n*(n+8),216*n*(n+8)^2])
%9 = (n)->ellinit([0,18*(n+2),0,108*n*(n+8),216*n*(n+8)^2])
gp > e2021=ec(2021)
%10 = [0, 36414, 0, 442865772, 1797149302776, 145656, 885731544, 7188597211104, 65635486835985072, -41886720, 1509419764224, -1361017455030986452992, 911544385536000/16881555256169, Vecsmall([1]), [Vecsmall([128, -1])], [0, 0, 0, 0, 0, 0, 0, 0]]
gp > P1=[-10137,89505]
%11 = [-10137, 89505]
gp > P2=[158262,70341372]
%12 = [158262, 70341372]
gp > ellheight(e2021,P1)
time = 1 ms.
%13 = 6.3127518470731328139448019115109765112
gp > ellheight(e2021,P2)
time = 1 ms.
%14 = 3.9390159413407148454323403081103352003
gp > pp(m,n)=elladd(e2021,ellpow(e2021,P1,m),ellpow(e2021,P2,n))
%15 = (m,n)->elladd(e2021,ellpow(e2021,P1,m),ellpow(e2021,P2,n))
(18:14) gp > for(m=1,3,for(i=0,m,j=m-i;print("[",i,"]P1+[",j,"]P2=",pp(i,j));if(j>0,print("[",i,"]P1-[",j,"]P2=",pp(i,-j)))))
[0]P1+[1]P2=[158262, 70341372]
[0]P1-[1]P2=[158262, -70341372]
[1]P1+[0]P2=[-10137, 89505]
[0]P1+[2]P2=[3138453142/103041, 290852187983108/33076161]
[0]P1-[2]P2=[3138453142/103041, -290852187983108/33076161]
[1]P1+[1]P2=[-926542850/88209, 1665595930652/26198073]
[1]P1-[1]P2=[-4240610/441, 1189489076/9261]
[2]P1+[0]P2=[-481735936319/43956900, -8836178839899029/291434247000]
[0]P1+[3]P2=[4467206766332409/658207690000, 1391772665554102167862077/534003898897000000]
[0]P1-[3]P2=[4467206766332409/658207690000, -1391772665554102167862077/534003898897000000]
[1]P1+[2]P2=[-9054570538181010/841107260161, 34832654490804641966844/771395449331596159]
[1]P1-[2]P2=[-184202054850/20802721, 18130002251338044/94881210481]
[2]P1+[1]P2=[-11294716238795681562/1047701471759089, -1493441863583377292346976164/33912228589117564474313]
[2]P1-[1]P2=[-585063264038682/52811257249, -232620777765173763396/12136396594620943]
[3]P1+[0]P2=[7730716692156698780999943/1306449532288784958361, -114700143313362062749470170817977664615/47221410643925039516636879809859]

■楕円曲線E2021の有理点を有理変換ψ・ψ2021で写すと、以下のように楕円曲線C2021の有理点を求めることができる。
[pari/gpによる計算]
gp > g1(P)=local(x,y);x=P[1];y=P[2];[(36*x+y)/(6*x*(x-6)),(36*x-y)/(6*x
*(x-6))]
%20 = (P)->local(x,y);x=P[1];y=P[2];[(36*x+y)/(6*x*(x-6)),(36*x-y)/(6*x*(x-6))]
gp > gn(P,n)=local(x,y);x=P[1];y=P[2];[-36*(n+8)/x,216*(n+8)*y/x^2]
%21 = (P,n)->local(x,y);x=P[1];y=P[2];[-36*(n+8)/x,216*(n+8)*y/x^2]
gp > gg(P)=g1(gn(P,2021))
%22 = (P)->g1(gn(P,2021))
gp > for(m=1,3,for(i=0,m,j=m-i;print(gg(pp(i,j)));if(j>0,print(gg(pp(i,-j))))))
[475/7, -488/7]
[-488/7, 475/7]
[16703/1358, -3187/1358]
[17546052688/521234343, -18290835925/521234343]
[-18290835925/521234343, 17546052688/521234343]
[204330661/16172541, -893086/16172541]
[106198/8757, -40363/8757]
[10327276706870791/2124067591098180, 27999634386668849/2124067591098180]
[152225244050772140814653/6750138876465040947800, -157057570516806118710253/6750138876465040947800]
[-157057570516806118710253/6750138876465040947800, 152225244050772140814653/6750138876465040947800]
[579495691331531818/44638143697914487, 102623470604235367/44638143697914487]
[158609028013/12934872853, -89597563238/12934872853]
[4792297063695836375495/1940925113896615346171, 25238081297628497406476/1940925113896615346171]
[3929747983054396/546117078362821, 7114414454840905/546117078362821]
[-12930744052018629266613428338164004013/569532652653384581833767608258856922, 12558176684284051344379942954719921457/569532652653384581833767608258856922]

これらの有理点が楕円曲線C2021上にあることは、以下のように簡単に確認できる。

[pari/gpによる計算]
gp > cc(x,y)=x^3+y^3-6*x*y
%30 = (x,y)->x^3+y^3-6*x*y
gp > cc(16703/1358, -3187/1358)
%31 = 2021
gp > cc(17546052688/521234343, -18290835925/521234343)
%32 = 2021
gp > cc(204330661/16172541, -893086/16172541)
%33 = 2021
gp > cc(106198/8757, -40363/8757)
%34 = 2021
gp > cc(-12930744052018629266613428338164004013/569532652653384581833767608258856922, 12558176684284051344379942954719921457/569532652653384581833767608258856922)
%35 = 2021


[参考文献]


Last Update: 2022.09.22
H.Nakao

Homeに戻る[Homeに戻る]  一覧に戻る[一覧に戻る]