Homeに戻る  一覧に戻る 

Rational Points and Integral Points on Elliptic Curve: y^2=x^3-6x-14


[2003.03.06]y^2=x^3-6x-14の有理点と整点


■楕円曲線
     E: Y2=X3-6X-14 ------ (1)
の有理点を求める。

■楕円曲線Eの判別式 Δ,j-不変量 j,conductor Nは、それぞれ、
     Δ = -70848 = -26・33・41
     j = -13824/41 = -29・33/41
     N = 23616
である。
[pari/gpによる計算]
gp> read("c12.gp");
time = 2 ms.
gp> e=ellinit([0,0,0,-6,-14])
%2 = [0, 0, 0, -6, -14, 0, -12, -56, -36, 288, 12096, -70848, -13824/41, Vecsmall([1]), [Vecsmall([128, -1])], [0, 0, 0, 0, 0, 0, 0, 0]]
gp> e.j
%3 = -13824/41
gp> e.disc
%4 = -70848
gp> ellglobalred(e)
time = 1 ms.
%5 = [23616, [1, 0, 0, 0], 2, [2, 6; 3, 2; 41, 1], [[6, 2, 0, 1], [2, 3, 0, 2], [1, 5, 0, 1]]]

■楕円曲線Eは、自明なねじれ点群を持つ。
つまり、Eのねじれ点群は、
     E(Q)tors = {O}
である。
[pari/gpによる計算]
gp> elltors(e)
%6 = [1, [], []]

■楕円曲線Eの有理点群のrankは、1であることが分かる。
Cremonaのmwrank3によって、このように有理点群の生成元P1(5,9)が見つかる。よって、
     E(Q) = Z
である。

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

任意のP ∈ E(Q)に対して、有理整数m1が存在して、
     P = m1P1 ------ (5)
となる。
f(x)=x3-6x-14=0の根は、1個の実数(いずれも無理数)と2個の虚数であり、
     γ ≒ 3.217358500054529409197230196,
     γ' ≒ -1.608679250027264704598615098+1.327985989536353688135780828*sqrt(-1),
     γ''≒ -1.608679250027264704598615098-1.327985989536353688135780828*sqrt(-1),
である。

(X,Y)がEの整点であるとする。
f(x) > 0 iff x > γ

よって、x > γの範囲で、Eの整点(X,Y)を求める。
gp> f(x)=x^3-6*x-14
%7 = (x)->x^3-6*x-14
gp> poldisc(f(x))
%8 = -4428
gp> rr=polroots(f(x))
time = 5 ms.
%9 = [3.2173585000545294091972301968145691397 + 0.E-38*I, -1.6086792500272647045986150984072845699 - 1.3279859895363536881357808281969514094*I, -1.6086792500272647045986150984072845699 + 1.3279859895363536881357808281969514094*I]~
gp> factor(f(x))
%10 =
[x^3 - 6*x - 14 1]


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

[pari/gpによる計算]
gp> p0=[0];p1=[5,9];
gp> H=[ellbil(e,p1,p1)/2]
time = 2 ms.
%12 = [0.68118134076698435113641140965084785766]
gp> dd=H[1]-x
%13 = -x + 0.68118134076698435113641140965084785766
gp> ww=polroots(dd)
%14 = [0.68118134076698435113641140965084785766 + 0.E-38*I]~
gp> c1=real(ww[1])
%15 = 0.68118134076698435113641140965084785766

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

[pari/gpによる計算]
gp> c2=2*max3(abs(rr[1]),abs(rr[2]),abs(rr[3]))
%16 = 6.4347170001090588183944603936291382795

■不等式3
u=1/2,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)
%17 = 0.E-38
gp> c3=cc3(c0,e)
%18 = 2.8323137103139591371777788310130718465

■不等式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[1])))+1
%19 = 7
gp> factor(13824)
%20 =
[2 9]

[3 3]

gp> he=log(2^9*3^6)
%21 = 12.829998357048165933126560514658743341
gp> om=omega_pe(-6,-14)
time = 1 ms.
%22 = [1.4105571309497034006863447791356339383 + 3.0466466723097118848150140931400240387*I, 1.4105571309497034006863447791356339383 - 3.0466466723097118848150140931400240387*I]
gp> om1=om[1];om2=om[2];
gp> A0=AA(e,p0,he,om)
%24 = 12.829998357048165933126560514658743341
gp> A1=AA(e,p1,he,om)
%25 = 12.829998357048165933126560514658743341
gp> eb=eeb1(e,p1,A0,A1,om)
time = 1 ms.
%26 = 2.7694808364545637172166433265644209638
gp> c4=cc4(1,eb,A0*A1)
%27 = 4784270053.4041062571737254509670233290
gp> c5=cc5(eb)
%28 = 1.0186598789706252103433174142673827533
gp> c6=cc6(c5,he)
%29 = 13.848658236018791143469877928926126094
gp> c7=cc7(c6,1,1)
%30 = 13.911158236018791143469877928926126094
gp> c8=cc8(c6,1,1)
%31 = 13.871200346032681196709876752066780659
gp> g(m)=m^2-(c3/c1+log(4*sqrt(2))/c1+(c4/c1)*(log(m)+c7)*(log(log(m))+
c8)^4)
%32 = (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(l
og(m))+c8)^3*(1/log(m))*(1/m))
%33 = (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)
%34 = (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
......
39272944334.235113634152238442652906597
19636757491.051462244210915937944008600
9818935062.9078210293814754663544741210
4910551564.2618084448812214483211280229
2457386536.5812354332285365814758401125
1232798237.9853665546285885725286680140
624359393.88929374063781397296977120437
327474344.15630903532966382802368825528
192190453.76856467202120658061359983799
143810999.05533042068554424235428682533
135407480.54962354273048970844200423885
135135676.16967699582641324902457472191
135135390.75548976410342105696808509193
135135390.75517503332599099065385158438
135135390.75517503332599060794671992111
135135390.75517503332599060794671992111
135135390.75517503332599060794671992111
135135390.75517503332599060794671992111
135135390.75517503332599060794671992111
......
135135390.75517503332599060794671992111
135135390.75517503332599060794671992111
135135390.75517503332599060794671992111
time = 393 ms.
主不等式(11)より、
     M < 135135390.75517503332599060794671992111
であることが分かる。
しかし、ここで求めたMの上限は大き過ぎるので、LLL-algorithmによって、上限を下げる。

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

[pari/gpによる計算]
gp> K3=135135390.75517503332599060794671992111
%36 = 135135390.75517503332599060794671992111
gp> K1=(4*sqrt(2)/2*real(om1))*exp(c3)
%37 = 67.763197364279465879742051737713498790
gp> K2=c1
%38 = 0.68118134076698435113641140965084785766
gp> KK0(1,1,K3)
%39 = 73046295338215383.455323227365380867416
K0=1030とする。 A=[1,  0 ; [K0*φ(P1)]  K0] にLLL-algorithmを適用して、reduced basis {b1,b2}を求めると、
     b1 = [ 764720794308025, -503240984212256]t
となる。このとき、
     ||b1|| >= 2(1/2)K3*sqrt(2) = 2*K3 ----- (16)
ならば、
     M2 <= K2-1(log(K0K1) - log(2-3*||b1||2-K32)-K3) ------ (17)
が成立する。

[pari/gpによる計算]
gp> K0=10^30
%40 = 1000000000000000000000000000000
gp> a1=floor(K0*phi(e,p1,K0))
%41 = 658071531411180008447725403290
gp> aaa=[1,0;a1,K0]
%42 =
[                             1                               0]

[658071531411180008447725403290 1000000000000000000000000000000]

gp> bbb=qflll(aaa,1)
%43 =
[ 764720794308025 -303865389466729]

[-503240984212256  199965162189225]

gp> b1n=nr(bbb)
%44 = 915450370821934.16624424120147626575729
gp> b1n-2^(1/2)*K3*sqrt(2)
%45 = 915450100551152.65589417454949504986386
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(b1n^2/2-K3^2)-K3))
%46 = 57.531976010841580333671135711427224818
gp> sqrt(M2)
%47 = 7.5849835867219633907557083917093492529

よって、
     M <= 7
が得られた。
次に、K3=7, K0=106とする。 A=[1,  0 ; [K0*φ(P1)]  K0] に、再度LLL-algorithmを適用する。
[pari/gpによる計算]
gp> K3=7
%48 = 7
gp> KK0(1,1,K3)
%49 = 196.00000000000000000000000000000000000
gp> K0=10^6
%50 = 1000000
gp> a1=floor(K0*phi(e,p1,K0))
%51 = 658071
gp> aaa=[1,0;a1,K0]
%52 =
[     1       0]

[658071 1000000]

gp> bbb=qflll(aaa,1)
time = -8 ms.
%53 =
[-155 1047]

[ 102 -689]

gp> b1n=nr(bbb)
%54 = 185.55053220079968285857430838273203946
gp> b1n-2^(1/2)*K3*sqrt(2)
%55 = 171.55053220079968285857430838273203946
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(b1n^2/2-K3^2)-K3))
time = -8 ms.
%56 = 19.394409305614112264099727044493713776
gp> sqrt(M2)
%57 = 4.4039084124915804456854898495915142729

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

■最後に、|m1| <= 4について、P=m1P1が整点かどうかを確認する。

[pari/gpによる計算]
gp> check1(4,e,p1)
[5, -9]
[5, 9]
There are 2 integral points.

よって、楕円曲線Eの整点は、(5,±9)の2個に限る。

[2004.08.22追記]
■SIMATH-4.6(simcalc)によって、楕円曲線Eの整点を求める。
simcalcによると、楕円曲線EのMordell-Weil群E(Q)のrankは1であり、その生成元は(5,9)である。
また、楕円曲線Eの整点を(Pと-Pを同一視して)求めると、(5,9)となる。
(5,9)の(-1)倍点(5,-9)も整点なので、楕円曲線Eは合計2個の整点を持つ。

[simcalcによる計算]
> E=EC(0,0,0,-6,-14)
                    simcalc in free(): warning: junk pointer, too high to make sense.
         E = EC(-6, -14)
> basismwg(E)
  basis :  PT(5, 9, 1)
simcalc in free(): warning: junk pointer, too high to make sense.
         @ = 1
> faintp(E)
  all nontrivial integral points modulo negation :
  PT(5, 9, 1) = PT(0, 1, 0) + PT(5, 9, 1)
 
simcalc in free(): warning: junk pointer, too high to make sense.
         @ = PT(5, 9, 1)

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


[参考文献]


Last Update: 2021.03.18
H.Nakao

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