Homeに戻る  一覧に戻る 

Rational Points on Elliptic Curves: 3y^2=2x^4-2x^2+3, y^2=x^3-228x+848


[2003.03.29]3y2 = 2x4-2x2+3, y2 = x3-228x+848の有理点


■参考文献[1]1.(Q)にある楕円曲線
     E1: 3(Y2-1) = 2X2(X2-1) ------ (1)
つまり、
     E1: 3Y2 = 2X4-2X2+3 ------ (2)
の有理点を求める。

■楕円曲線E1をWeierstrass標準形に変形する。
E1は、双有理変換(X,Y)→(X,Y/3)[逆変換は(X,Y)→(X,3Y)]によって、楕円曲線
     E2: Y2 = 6X4-6X2+9 ------ (3)
に写される。

楕円曲線E2は、有理変換(X,Y)→(U,V)
     U = 6(Y+3)/X2 ------ (4)
     V = {36(Y+3-X2)/X3 ------- (5)
[逆変換は、
     X = 6(U-6)/V ---------- (6)
     Y = {6U(U-6)2-3V2}/V2 -------- (7)
である。]
によって、楕円曲線
     E3: V2 = U3-6U2-216U+1296 ------ (8)
に写される。
最後に、E3は、有理変換[1,2,0,0]つまり(U,V)→(U-2,V)によって、[1]1.(W)に記述された楕円曲線
     E4: V2 = U3-228U+848 ------ (9)
に写される。

以上の有理変換を合成すると、E1からE4への有理変換ψ:(X,Y)→(U,V)は、
     U = {18(Y+1)-2X2}/X2 ------ (10)
     V = {108(Y+1)-36X2)}/X3 ------ (11)
であり、逆変換ψ-1:(U,V)→(X,Y)は、
     X = {6(U-4)}/V ------ (12)
     Y = {2U3-12U2+64-V2}/{V2} ------ (13)
であることが分かる。
gp> read("c2.gp")
time = 29 ms.
gp> ff([x,y])
time = 35 ms.
%1 = [(-2*x^2 + (18*y + 18))/x^2, (-36*x^2 + (108*y + 108))/x^3]
gp> gg([u,v])
time = 34 ms.
%2 = [6/v*u - 24/v, 2/v^2*u^3 - 12/v^2*u^2 + ((-v^2 + 64)/v^2)]

■楕円曲線E4のj-不変量,判別式 Δ,Conductor Nを求める。
pari/GPで計算すると、
     j = 219488/75 = {25・193}/{3・52}
     Δ = 447897600 = 213・37・52
     N = 5760
である。

[pari/gpによる計算]
gp> e4=ellinit([0,0,0,-228,848])
time = 223 ms.
%1 = [0, 0, 0, -228, 848, 0, -456, 3392, -51984, 10944, -732672, 447897600, 219488/75, [12.69693845669906858918370444, 4.000000000000000000000000000, -16.69693845669906858918370444]~, 0.7678481042683420701399427878, 0.6313565954278645981885612580*I, -1.843851957724223527685587394, -5.607516283698252646881502462*I, 0.4847859649166004363014281205]
gp> e4.j
time = 2 ms.
%2 = 219488/75
gp> e4.disc
time = 1 ms.
%3 = 447897600
gp> ellglobalred(e4)
time = 20 ms.
%4 = [5760, [1, 0, 0, 0], 32]
gp> factor(e4.disc)
time = 3 ms.
%5 = 
[2 13]

[3 7]

[5 2]

gp> factor(219488/75)
time = 3 ms.
%3 = 
[2 5]

[3 -1]

[5 -2]

[19 3]


■楕円曲線E4のねじれ点群は、Z/2Zである。
E4のねじれ点群は、位数2の点T(4,0)で生成される。よって、
     E4(Q)tors = {(4,0), O}
である。
[pari/gpによる計算]
gp> elltors(e4,1)
time = 157 ms.
%6 = [2, [2], [[4, 0]]]

■楕円曲線E4のMordell-Weil群のrankは、2であることが分かる。
Cremonaのmwrank3によって、このようにMordell-Weil群の生成元P1(2,-20),P2(16,36)が見つかる。よって、
     E4(Q) = Z2×Z/2Z
である。

■楕円曲線Eの全ての整点を、[4]の方法によって求める。
u=1,v=0とする。
以下の形式
     C: y2 = f(x) ----- (3)
     f(x) = x^3-228x+848 = (x-4)(x2+4x-212) -------- (4)
を得る。
3次方程式 f(x) = 0の最大の実数根をγとする。 ------ (*)

任意のP ∈ E(Q)に対して、有理整数m1,m2,m0(m0=0,1)が存在して、
     P = m1P1+m2P2+m0T ------ (5)
となる。
f(x)=x3-228x+848=0の根は、3個の実数(1個は有理数4、2個は無理数-2±6*sqrt{6})であり、
     γ = -2+6*sqrt(6) ≒ 12.69693845669906858918370444,
     γ' = -4,
     γ''= -2-6*sqrt(6) ≒ -16.69693845669906858918370444
である。

(X,Y)がEの整点であるとする。
f(X) > 0 iff (X > γ または γ'' < X < γ')

γ'' < X < γ'なる整点(X,Y)は、以下の11個である。
     (-16,±20),(-14,±36),(-11,±45),(-2,±36),(2,±20),(4,0) ------ (**)

よって、X > γの範囲で、Eの整点(X,Y)を求める。
gp> read("c12.gp");
time = 4 ms.
gp> f(x)=x^3-228*x+848
%2 = (x)->x^3-228*x+848
gp> poldisc(f(x))
%3 = 27993600
gp> rr=polroots(f(x))
time = 8 ms.
%4 = [-16.696938456699068589183704448235348352 + 0.E-38*I, 4.0000000000000000000000000000000000000 + 0.E-38*I, 12.696938456699068589183704448235348352 + 0.E-38*I]~
gp> factor(f(x))
%5 =
[          x - 4 1]

[x^2 + 4*x - 212 1]

gp> for(x=-16,4,y2=x^3-228*x+848;y=floor(sqrt(y2));if(y^2==y2,print([x,y])))
[-16, 20]
[-14, 36]
[-11, 45]
[-2, 36]
[2, 20]
[4, 0]

■不等式1
P ∈ E(Q)が(5)で表現されるとすると、
     h^(P) >= c1max{|m1|,|m2|} ------- (7)
である。

[pari/gpによる計算]
gp> p0=[0];p1=[2,-20];p2=[16,36];
gp> e4=ellinit([0,0,0,-228,848])
%8 = [0, 0, 0, -228, 848, 0, -456, 3392, -51984, 10944, -732672, 447897600, 219488/75, Vecsmall([1]), [Vecsmall([128, 1])], [0, 0, 0, 0, 0, 0, 0, 0]]
gp> H=HH2(e4,p1,p2)
time = 1 ms.
%9 =
[0.82369608215591756689374285609096707919 -0.53258990783252537187625879287564570845]

[-0.53258990783252537187625879287564570845 0.45320430510156682873420413447871175399]

gp> dd=matdet(H-x*matid(2))
%10 = x^2 - 1.2769003872574843956279469905696788332*x + 0.089650600603297850988202090886240517372
gp> ww=polroots(dd)
%11 = [0.074563636650052951911440280161142831133 + 0.E-38*I, 1.2023367506074314437165067104085360021 + 0.E-38*I]~
gp> c1=min(real(ww[1]),real(ww[2]))
%12 = 0.074563636650052951911440280161142831133

■不等式2
     c2 = 2*max{|γ|,|γ'|,|γ''|}
とする。任意のx >= c2に対して、
     |∫x(dt/sqrt{f(t)})| <= 4*sqrt(2)|x|-1/2 --------- (8)
となる。

[pari/gpによる計算]
gp> c2=2*max3(real(rr[1]),real(rr[2]),real(rr[3]))
%13 = 25.393876913398137178367408896470696704

■不等式3
u=1,v=0とする。
X0を正の有理整数で、X0 > vとする。
このとき、任意のP ∈ E(Q), X(P) >= X0に対して、
     x(P) > 0,
     h^(P)-(1/2)*log x(P) <= c3 ------ (9)
となる。

[pari/gpによる計算]
gp> c0=log(1)
%14 = 0.E-38
gp> c3=cc3(c0,e4)
%15 = 3.7417102502455555795343437193495793728

■不等式1,2,3より、
     |φ(P)|=|(1/ω)∫x(P)(dt/sqrt{f(t)})| <= (4*sqrt(2)/ω)|x(P)|-1 <= (4*sqrt(2)/ω)exp(c3-c1M2) ----------- (10)
を得る。

■主不等式
P ∈ E0(R) iff x(P) >= γ iff X(P) >= u2γ+v なので、不等式2,3を満たすために、
     X0 = floor(max{c2,u2γ+v,v})+1
とする。

     M2 < c3c1-1+c1-1log(4*sqrt(2))+c4c1-1(log M+c7)(log log M+c8)r+2 ------- (11)
となる。

[pai/gpによる計算]
gp> X0=floor(max(c2,real(rr[3])))+1
%16 = 26
gp> he=log(2^5*19^3)
%17 = 12.299052840299047927113242902954443452
gp> om=omega_pe(-228,848)
time = 1 ms.
%18 = [1.5356962085366841402798855755876022547, 1.2627131908557291963771225160907907250*I]
gp> om1=om[1];om2=om[2];
gp> A0=AA(e4,p0,he,om)
%20 = 12.299052840299047927113242902954443452
gp> A1=AA(e4,p1,he,om)
time = 1 ms.
%21 = 12.299052840299047927113242902954443452
gp> A2=AA(e4,p2,he,om)
time = 2 ms.
%22 = 12.299052840299047927113242902954443452
gp> eb=eeb2(e4,p1,p2,A0,A1,A2,om)
time = 1 ms.
%23 = 2.8157523452992563105744761875447617735
gp> c4=cc4(2,eb,A0*A1*A2)
%24 = 46766241097598.928381504077384319231860
gp> c5=cc5(eb)
%25 = 1.0352294888670146966336191862463604072
gp> c6=cc6(c5,he)
%26 = 13.334282329166062623746862089200803859
gp> c7=cc7(c6,2,2)
%27 = 14.767451690285953242581326332117156995
gp> c8=cc8(c6,2,2)
%28 = 13.851188911676480163676861206556294783
gp> g(m)=m^2-(c3/c1+log(4*sqrt(2))/c1+(c4/c1)*(log(m)+c7)*(log(log(m))+c8)^4)
%29 = (m)->m^2-(c3/c1+log(4*sqrt(2))/c1+(c4/c1)*(log(m)+c7)*(log(log(m))+c8)^4)
gp> gdash(m)=2*m-(c4/c1)*((1/m)*(log(log(m))+c8)^4+(log(m)+c7)*4*(log(log(m))+c8)^3*(1/log(m))*(1/m))
%30 = (m)->2*m-(c4/c1)*((1/m)*(log(log(m))+c8)^4+(log(m)+c7)*4*(log(log(m))+c8)^3*(1/log(m))*(1/m))
gp> nn(x)=x-g(x)/gdash(x)
%31 = (x)->x-g(x)/gdash(x)
gp> x=10^100;for(i=1,350,x=nn(x);print(x))
5.0000000000000000000000000000000000000 E99
2.5000000000000000000000000000000000000 E99
1.2500000000000000000000000000000000000 E99
6.2500000000000000000000000000000000000 E98
3.1250000000000000000000000000000000000 E98
.......
1257353734851.3285101575656259667399544
629588001492.71585462302660612272508700
316573219211.05856672074177563382188923
161746115246.54203210653988496472179984
87498674617.001648452165030378485799833
55780807963.425806205699529458531919754
46598215490.631441124919511419427745154
45665911557.223347804929804176674817143
45656061165.761223746108212261730925998
45656060065.385950213360596218841204954
45656060065.385936481871632408052002104
45656060065.385936481871632408049863791
45656060065.385936481871632408049863791
.......
45656060065.385936481871632408049863791
45656060065.385936481871632408049863791
45656060065.385936481871632408049863791
45656060065.385936481871632408049863791
time = 11 ms.
主不等式(11)より、
     M < 45656060065.385936481871632408049863791
であることが分かる。
しかし、ここで求めたMの上限は大き過ぎるので、LLL-algorithmによって、上限を下げる。

■不等式(10),(11)を単純に、
     |φ(P)| < K1exp(-K2M2), M < K3 ------- (12)
と書くことができる。
ここで、
     K1 = (4*sqrt(2)/ω)*exp(c3),
     K2 = c1,
     K3 = 45656060065.385936481871632408049863791
である。

[pari/gpによる計算]
gp> K3=45656060065.385936481871632408049863791
%33 = 45656060065.385936481871632408049863791
gp> K1=(4*sqrt(2)/2*real(om1))*exp(c3)
%34 = 183.17003150103172806985372828711593245
gp> K2=c1
%35 = 0.074563636650052951911440280161142831133
gp> KK0(2,2,K3)
time = -5 ms.
%36 = 89516303952841333234657772102356360.468
gp> log(%36)/log(10)
%37 = 34.951902142264446054571886258707008415
K0=1040とする。 A = [1,  0,  0 ; 0,  1,  0 ; [K0*φ(P1)]  [K0*φ(P2)]  K0] にLLL-algorithmを適用して、reduced basis {b1,b2,b3}を求めると、
     b1 = [ 9455484806205, -10281073528287, 543160714474]t
となる。このとき、
     ||b1|| >= 2(2/2)*2*K3*sqrt(2^2+2) = 4*sqrt(6)*K3 ----- (16)
ならば、
     M2 <= K2-1(log(K0K1) - log(2-2*2^(-2)*||b1||2-2*K32)-2*K3) ------ (17)
が成立する。

[pari/gpによる計算]
gp> default(realprecision,120)
gp> K0=10^40
%39 = 10000000000000000000000000000000000000000
gp> a1=floor(K0*phi(e4,p1,K0)+1/2)
time = 1 ms.
%40 = 7306668762816703969024278685983542657660
gp> a2=floor(K0*phi(e4,p2,K0)+1/2)
%41 = 7248241383596277686439891627829700412098
gp> aaa=[1,0,0;0,1,0;a1,a2,K0]
%42 =
[1 0 0]

[0 1 0]

[7306668762816703969024278685983542657660 7248241383596277686439891627829700412098 10000000000000000000000000000000000000000]

gp> bbb=qflll(aaa,1)
%43 =
[  9455484806205  -1698544723265 -23940253452056]

[-10281073528287 -10728938771458 -14175379479473]

[   543160714474   9017664167708  27767007424335]

gp> b1n=nr(bbb)
%44 = 13978615431299.5253653338506582283851404984634744997341242331215956952643202182797792119427893455069042823217683044145471
gp> b1n-2^(2/2)*2*K3*sqrt(2^2+2)
%45 = 13531279227995.30325742745842031298434108765247520462561774
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(2^(-2)*b1n^2*2^(-2)-2*K3^2)-2*K3))
%46 = 918.11797296836744529797678091970567062
gp> sqrt(M2)
%47 = 30.3004615966220462675487130120341811833

よって、
     M <= 30
が得られた。
次に、K3=30, K0=1010とする。 A=[1,  0,  0 ; 0,  1,  0 ; [K0*φ(P1)]  [K0*φ(P2)]  K0] として、再度、LLL-algorithmを適用する。
[pari/gpによる計算]
gp> K3=30
%48 = 30
gp> KK0(2,2,K3)
%49 = 25396309.6531759905221094412865506819519029434794483558915901565372579571934774421951652626024289099545991888255175359128
gp> K0=10^10
%50 = 10000000000
gp> a1=floor(K0*phi(e4,p1,K0)+1/2)
%51 = 7306668763
gp> a2=floor(K0*phi(e4,p2,K0)+1/2)
%52 = 7248241384
gp> aaa=[1,0,0;0,1,0;a1,a2,K0]
%53 =
[         1          0           0]

[         0          1           0]

[7306668763 7248241384 10000000000]

gp> bbb=qflll(aaa,1)
%54 =
[-1921 -1697  104]

[  790 -1090 -487]

[  831  2030  277]

gp> b1n=nr(bbb)
%55 = 2237.16382949483607996308643473217131293752702273247316971187304578966067243178419461810506565375525801299477275023445305
gp> b1n-2^(2/2)*2*K3*sqrt(2^2+2)
%56 = 1943.22506036085470817941234576746434590161332505367275429994993771954542713690639143332193368119842983476342060304075035
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(2^(-2)*b1n^2*2^(-2)-2*K3^2)-2*K3))
%57 = 295.402833993889276508609854763848499237
gp> sqrt(M2)
%58 = 17.1872869875931633757753698923991576963

よって、
     M <= 17
が得られた。

さらに、K3=17, K0=108, A=[1,  0,  0 ; 0,  1,  0 ; [K0*φ(P1)]  [K0*φ(P2)]  K0]として、再度、LLL-algorithmを適用する。
[pari/gpによる計算]
gp> K3=17
%60 = 17
gp> KK0(2,2,K3)
%61 = 4621187.75281680153463421055706753705295182078942702861094009033583512384042795087054988648761974942988688202591732051629
gp> K0=10^8
%62 = 100000000
gp> a1=floor(K0*phi(e4,p1,K0)+1/2)
%63 = 73066688
gp> a2=floor(K0*phi(e4,p2,K0)+1/2)
time = 1 ms.
%64 = 72482414
gp> aaa=[1,0,0;0,1,0;a1,a2,K0]
%65 =
[       1        0         0]

[       0        1         0]

[73066688 72482414 100000000]

gp> bbb=qflll(aaa,1)
%66 =
[192  -88 -193]

[-68 -419  178]

[-91  368   12]

gp> b1n=nr(bbb)
%67 = 223.089668070935100398661697617102969259407677238605997814338154500639950007257446362629865084371472447504308193770689204
gp> b1n-2^(2/2)*2*K3*sqrt(2^2+2)
%68 = 56.5243655616789897212463805371023546057232485539524290809150599275746443401600245579194236332559364798398753103609243440
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(2^(-2)*b1n^2*2^(-2)-2*K3^2)-2*K3))
%69 = 279.471671537909209483475657779072668418
gp> sqrt(M2)
%70 = 16.7174062443283709741548059218894367438

よって、
     M <= 16
が得られた。

■最後に、|m1|,|m2| <= 16, m0=0,1について、P=m1P1+m2P2+m0Tが整点かどうかを確認する。

[pari/gpによる計算]
gp> check2(16,e4,p1,p2)
[534256, 390502764]
[53, -371]
[52, 360]
[13, -9]
[196, -2736]
[-14, 36]
[-2, -36]
[2, 20]
[16, -36]
[16, 36]
[2, -20]
[-2, 36]
[-14, -36]
[196, 2736]
[13, 9]
[52, -360]
[53, 371]
[534256, -390502764]
There are 18 integral points.
time = 53 ms.

gp> check2(16,ec,p1,p2)
[534256, 390502764]
[53, -371]
[52, 360]
[13, -9]
[196, -2736]
[-14, 36]
[-2, -36]
[2, 20]
[16, -36]
[16, 36]
[2, -20]
[-2, 36]
[-14, -36]
[196, 2736]
[13, 9]
[52, -360]
[53, 371]
[534256, -390502764]
There are 18 integral points.
time = 1,027 ms.
gp> check2t(16,e4,p1,p2,[4,0])
[814, -23220]
[-16, -20]
[754, 20700]
[14, 20]
[34, -180]
[94, 900]
[-11, -45]
[4, 0]
[-11, 45]
[94, -900]
[34, 180]
[14, -20]
[754, -20700]
[-16, 20]
[814, 23220]
There are 15 integral points.
time = 42 ms.

(**)で求めたE4の11個の整点は、全て上記に含まれる。
よって、楕円曲線E4の整点は、
     (-16,±20), (-14,±36), (-11,±45), (-2,±36), (2,±20), (4,0), (13,±9), (14,±20), (16,±36), (34,±180),
     (52,±360), (53,±371), (94,±900), (196,±2736), (754,±20700), (814,±23220), (534256,±390502764)
の33個に限る。

■楕円曲線E4の整点または有理点を有理変換ψ-1で写すことにより、楕円曲線E1の有理点を求める。
ψ-1(U,V)=(X,Y) ならば ψ-1(U,-V)=(-X,Y)である。
gp> read("c2.gp")
time = 34 ms.
gp> gg([u,v])
time = 43 ms.
%1 = [6/v*u - 24/v, 2/v^2*u^3 - 12/v^2*u^2 + ((-v^2 + 64)/v^2)]
gp> gg([-16,20])
time = 12 ms.
%2 = [-6, -29]
gp> gg([-14,36])
time = 10 ms.
%3 = [-3, -7]
gp> gg([-11,45])
time = 18 ms.
%4 = [-2, -3]
gp> gg([-2,36])
time = 8 ms.
%5 = [-1, -1]
gp> gg([2,20])
time = 15 ms.
%6 = [-3/5, -23/25]
gp> gg([4,0])
time = 2 ms.
%7 = [0]
gp> gg([13,9])
time = 4 ms.
%8 = [6, 29]
gp> gg([14,20])
time = 2 ms.
%9 = [3, 7]
gp> gg([16,36])
time = 1 ms.
%10 = [2, 3]
gp> gg([34,180])
time = 0 ms.
%11 = [1, 1]
gp> gg([52,360])
time = 0 ms.
%12 = [4/5, 23/25]
gp> gg([53,371])
time = 1 ms.
%13 = [42/53, 2581/2809]
gp> gg([94,900])
time = 4 ms.
%14 = [3/5, 23/25]
gp> gg([196,2736])
time = 1 ms.
%15 = [8/19, 343/361]
gp> gg([754,20700])
time = 6 ms.
%16 = [5/23, 521/529]
gp> gg([814,23220])
time = 5 ms.
%17 = [9/43, 1823/1849]
gp> gg([534256,390502764])
time = 3 ms.
%18 = [422/51409, 2642825923/2642885281]
E4の整点に対応するE1の有理点は、
     (±6,±29), (±3,±7), (±2,-1), (±1,±1), (±3/5,±23/25), (±2,3), (±4/5,23/25),
     (±42/53,2581/2809), (±8/19,343/361), (±5/23,521/529), (±9/43,1823/1849), (±422/51409,2642825923/2642885281), O
である。

[2021.03.17追記]
"c1-c8,楕円対数の計算プログラム(pari/gp)"の関数eeb1(),eeb2(),eeb3()の誤りを修正し、計算結果を見直し、訂正した。


[参考文献]


Last Update: 2021.03.18
H.Nakao

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