Homeに戻る  一覧に戻る 

Rational Points on Elliptic Curve: y^2=2x^4-1


[2002.04.28]y^2=2x^4-1の有理点


■1643年にFermatが友人M.Mersenneに手紙で尋ねた問題[4]
    "直角三角形の斜辺cが平方数で、他の2辺の和a+bが平方数である最小の直角三角形を求めよ。"
について、考察する。

直角三角形の3辺の長さa,b,cは正整数で、互いに素として良い。
条件より、ある正整数d,eに対して、
    c2 = a2+b2 ------- (1)
    c = d2 ---------- (2)
    a+b = e2 -------- (3)
となる。
(1),(3)より、
    ab = (e4-d4)/2 -------- (4)
であるので、正整数a,bは、2次方程式
    t2-e2t+(e4-d4)/2 = 0 -------- (5)
の2根である。よって、その判別式e4-4*(e4-d4)/2 = 2d4-e4は平方数である。
すなわち、ある正整数uに対して、
    2d4-e4 = u2 -------- (6)
となる。ここで、x = d/e, y = u/e2とすると、x,yは有理数であり、
    2x4-1 = y2
となるので、楕円曲線
    E1: y2 = 2x4-1
の有理点を求めれば良い。

■楕円曲線E1をWeierstrassの標準形に変換する。
この変換は、A.W.Knapp [4]によって、良く知られている。楕円曲線E1は、有理変換φ:(x,y)→(X,Y)
    X=2(y+2x2-1)/(x-1)2
    Y=4((2x-1)y+2x3-1)/(x-1)3
によって、楕円曲線E2
    E2: Y2 = X3+8X
に写される。
また、楕円曲線E2をE1に写す有理変換ψ:(X,Y)→(x,y)は、
    x=(Y-2X-8)/(Y-4X+8)
    y=(Y2-24X2+48Y-16X-64)/(Y-4X+8)2
である。

最初に、φとψが互いに逆変換となっていることを示す。
(x,y)をE1上の有理点とする。
    (ψ o φ)(x,y) = ψ(φ(x,y)) = ψ((y-2*x-8)/(y-4*x+8),(y2-24*x2+48*y-16*x-64)/(y-4*x+8)2
       = (x,(-2*x4 + 2*y*x2 - 8*y*x + (5*y + 1))/(2*x2 - 8*x + (-y + 5)))
ここで、-2x4+1 = - y2なので、
       = (x,(-y2 + 2*y*x2 - 8*y*x + 5*y)/(2*x2 - 8*x + (-y + 5))) = (x,y)
となる。
同様に、(X,Y)をE2上の有理点とする。
    (φ o ψ)(X,Y) = φ(ψ(X,Y)) = φ(2*(Y+2*X2-1)/(X-1)2,4*((2*X-1)*Y+2*X3-1)/(X-1)3)
       = ((-16*X2 + 56*X + Y2)/(X2 - 16*X + 64),
             (24*X3 - 24*Y*X2 + (184*Y + 192)*X + (Y3 - 24*Y2 - 512*Y))/(X3 - 24*X2 + 192*X - 512))
ここで、Y2=X3+8Xなので、
       = ((-16*X2 + 64*X + X3)/(X2 - 16*X + 64),
             (Y*X3 - 24*Y*X2 + 192*Y*X - 512*Y)/(X3 - 24*X2 + 192*X - 512))
       = (X,Y)
となる。

次に、有理変換φ,ψにより、楕円曲線E1とE2は互いに写し合うことを示す。
(x,y)をE1上の有理点とする。(u,v) = φ(x,y)とすると、
    u3+8u-v2 = (32*x6 - 128*x5 + (-16*y + 80)*x4 + (-16*y2 - 16)*x2 + (64*y2 + 64)*x + (8*y3 - 40*y2 + 8*y - 40))/(x6 - 6*x5 + 15*x4 - 20*x3 + 15*x2 - 6*x + 1)
である。右辺の分子F,分母Gは因数分解できて、
    F = 8*(2*x2-8*x-y+5)*(2*x4-y2-1) = 0
    G = (x-1)6
となる。
よって、(u,v)は楕円曲線E2: Y2=X3+8X上にある。
同様に、(u,v)を楕円曲線E2上の有理点とする。(x,y) = ψ(u,v)とすると、
    2x4-1-y2 = (-6400*u4 + (1536*v + 14336)*u3 - 51200*u2 + (6400*v2 + 12288*v + 114688)*u + (-1536*v3 - 14336*v2))/(2048*u4 + (-2048*v - 16384)*u3 + (768*v2 + 12288*v + 49152)*u2 + (-128*v3 - 3072*v2 - 24576*v - 65536)*u + (8*v4 + 256*v3 + 3072*v2 + 16384*v + 32768))
である。右辺の分子K,分母Lは因数分解できて、
    K = -256*(25*u-6*v-56)*(u3+8*u-v2) = 0
    L = 8*(4*u-v-8)4
となる。
よって、(x,y)は楕円曲線E1: y2=2x4-1上にある。
以上から、楕円曲線E1の有理点を求めるには、楕円曲線E2の有理点を求めれば良い。

■pari/GPで楕円曲線E2のねじれ点群を調べる。
? e=ellinit([0,0,0,8,0])
%1 = [0, 0, 0, 8, 0, 0, 16, 0, -64, -384, 0, -32768, 1728, [0.E-28, 0.E-28 - 2.828427124746190097603377448*I, 0.E-28 + 2.828427124746190097603377448*I]~, 2.204878797993165545558898750, -1.102439398996582772779449375 + 1.102439398996582772779449375*I, -1.424836891918596616341748384 + 1.61959768 E-29*I, 0.7124184459592983081708741924 - 2.137255337877894924512622577*I, 2.430745256919893258306942271]
? elltors(e)
%2 = [2, [2], [[0, 0]]]
よって、
    tors(E2(Q))= { (0,0), O }
である。楕円曲線E2上の点(0,0)は、位数2のねじれ点であり、E2のねじれ点群tors(E2(Q))は、Z/2Zに同型である。

■mwrankで楕円曲線E2の有理点群のrankと生成元を調べる。
このように、楕円曲線E2の有理点群のrankは1で、生成元は(1,-3)であることが分かる。

■pari/GPで楕円曲線E2の有理点をいくつか計算する。
? read("y2e2x4m1.gp");
? for(i=1,10,print(pp1(i)))
[1, -3]
[49/36, 791/216]
[57121/169, -13652397/2197]
[63473089/90098064, -2092306550111/855210823488]
[7563913566049/4194611205625, 38696701784980337907/8590878344960421875]
[10644429254749503409/125998250039631684, -34747761984000857034902486569/44724631402004254577410248]
[12276850837205230615846081/26376077633244407694260209, -264911631900944804843289442201737930723/135461324785543767063788123103718175927]
[3710327303892830603933267543025409/1577706009278875005318653442586176, 353501064436928880249966373674668207595571343213951/62667031016032031207423081316204939202955367335424]
[6468404554627476812933591478998447159680321/172431763717153764753695689153001710527121, -16497827063045551133615577804969396207361298768828609477483854557/71602124036835859404038852427474499007603925909531551850821831]
[6979819975282876783853910776135993292750648165850801/25124625976420738967297767238945155614464058339802500, -5965564178885551878175797861388023204747103236183654604096300384638368710483799/3982441526750122890041797958568713513513595401768390077108360971008879785125000]
? for(i=1,10,print(pp2(i)))
[8, 24]
[288/49, -5424/343]
[1352/57121, 5940792/13651919]
[720784512/63473089, 19942436323488/505690100063]
[33556889645000/7563913566049, -230534811861651054600/20802706232421224593]
[1007986000317053472/10644429254749503409, 30243906846065512893712552848/34728303626558310808809241577]
[211008621065955261554081672/12276850837205230615846081, 3106366053398361375554849629269277672872/43016044113644550364817554137915359521]
[12621648074231000042549227540689408/3710327303892830603933267543025409, -1844113476265319549632439405759896843692026589587136/226005148885820369847107467803863109061595151959423]
[1379454109737230118029565513224013684216968/6468404554627476812933591478998447159680321, 21548983167308719540318592061989608477817281589788331370094191144/16451131026937343795570612287023345463940000143435350937119129119]
[200997007811365911738382137911561244915712466718420000/6979819975282876783853910776135993292750648165850801, 90545985770158486634407015348303282851728651135470605727450973225711433333584400/583131271713284226034308959204796335160767034518702631164299281126789735483799]

■pari/GPで楕円曲線E1の有理点をいくつか計算する。
? for(i=1,10,print(r1(i)))
[-13, -239]
[-1525/1343, 2750257/1803649]
[2165017/2372159, 3503833734241/5627138321281]
[-42422452969/9788425919, -2543305831910011724639/95813281971750994561]
[-7658246457672229/5705771236038721, 76285433470805578504147559981041/32555825398006834032059811315841]
[15512114571284835412957/17999572487701067948161, 104093353210157165397930031823738667393894481/323984609740005211871964051960752674583281921]
[-452005526897888844293504165425/173658539553825212149513251457, -287358434598304508285325528722589002702645705742873386094143/30157288359967475713221407230777843038318880129244112622849]
[-126314830357375266295717376544111167953/75727152767742719949099952561135816319, 21823524993202203117598843430945898516918043105969513349188339015638198841921/5734601666309043890386732776421960774971557625617519704560837731990506709761]
[368440923990671763222767414151367493861848396861/437825148963391521638828389137484882137402791039, 10490030759815246364541558199105568478135690471464205832989654297640586333761965119883872967121/191690861064815976015053708007018970085526454846236721795700656741431549385814671781307098699521]
[-15742426038757364555884302501358215419700469803339022502341/8441199892660353551254463457379879192713080201213827757759, -343156430496364425935539322977026990588500411321369808718993218975807788349540689995513397108665135709992732459781519/71253855627849164315498053614560346985431231975806915539827024659627640845146923414778474383466056369106241584702081]

■pari/GPで条件を満たす直角三角形をいくつか計算する。
? for(i=1,10,print(abc(i)))
[]
[]
[4565486027761, 1061652293520, 4687298610289]
[]
[]
[214038981475081188634947041892245670988588201, 109945628264924023237017010068507003594693720, 240625698472667313160415295005368384723483849]
[]
[]
[101090445912315611189797633103062269281831072658850463814345155519536067859788318450595485833321, 90600415152500364825256074903956700803695382187386257981355501221895481526026353330711612866200, 135748714471099967645098303815413145183510604468779231285462871341558087008619938117875754653321]
[]
よって、最小解[a,b,c]は、[4565486027761, 1061652293520, 4687298610289]である。
2番目の解は、[214038981475081188634947041892245670988588201, 109945628264924023237017010068507003594693720, 240625698472667313160415295005368384723483849]である。

■楕円曲線E1: y2=2x4-1の有理点を求める問題は、約1年前(2001年2月頃)に取り組んで、約1週間ほどで解決できた問題である。
その結果をまとめて、@niftyのFSCIフォーラムの数学の電子会議室で報告(2001.02.25)したが、1件のコメントが付いたのみで無視された。内容が電子会議室に相応しくなかったかもしれないと反省して、代わりに楕円曲線に関するWebページを公開することになった。

[Y^2=X^3+8Xのrankの計算結果]
bash-2.05$ 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 search for further 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@nottingham.ac.uk.

Version compiled on Apr 17 2002 at 20:36:44 by GCC egcs-2.91.66 19990314 (egcs-1.1.2 release)
using base arithmetic option LiDIA (LiDIA bigints and multiprecision floating point)
Using LiDIA multiprecision floating point with 15 decimal places.
Enter curve: [0,0,0,8,0]

Curve [0,0,0,8,0] :  1 points of order 2:
[0 : 0 : 1]
Using 2-isogenous curve [0,0,0,-2,0]
-------------------------------------------------------
First step, determining Selmer group
-------------------------------------------------------
-------------------------------------------------------
Rank <= 1
-------------------------------------------------------
Second step, determining E(Q)/phi(E'(Q)) and E'(Q)/phi'(E(Q))
-------------------------------------------------------
1. E(Q)/phi(E'(Q))
-------------------------------------------------------
This component of the rank is 0
-------------------------------------------------------
2. E'(Q)/phi'(E(Q))
-------------------------------------------------------
First stage (no second descent yet)...
(-1,0,0,0,32):  (x:y:z) = (2:4:1)
        Curve E'        Point [-4 : -8 : 1], height = 0.608709031976981
 Curve E         Point [1 : -3 : 1], height = 1.21741806395396
After first descent, this component of the rank = 2

-------------------------------------------------------
Summary of results:
-------------------------------------------------------
       rank(E) = 1
     #E(Q)/2E(Q) = 4

Information on III(E/Q):
 #III(E/Q)[phi']    = 1
  #III(E/Q)[2]       = 1

Information on III(E'/Q):
 #phi'(III(E/Q)[2]) = 1
  #III(E'/Q)[phi]    = 1
  #III(E'/Q)[2]      = 1

-------------------------------------------------------

List of points on E = [0,0,0,8,0]:

I.  Points on E mod phi(E')
--none (modulo 2-torsion).


II. Points on phi(E') mod 2E
Point [1 : -3 : 1], height = 1.21741806395396
-------------------------------------------------------
Computing full set of 2 coset representatives for
2E(Q) in E(Q) (modulo torsion), and sorting into height order....done.

Rank = 1
After descent, rank of points found is 1

Generator 1 is [1 : -3 : 1]; height 1.21741806395396

The rank has been determined unconditionally.
The basis given is for a subgroup of full rank of the Mordell-Weil group
 (modulo torsion), possibly of index greater than 1.
Regulator (of this subgroup) = 1.21741806395396

 (0.14 seconds)


[参考文献]


Last Update: 2020.04.15
H.Nakao

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