Homeに戻る  一覧に戻る 

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


[2003.03.03]y^2+y=x^3-7x+6の有理点と整点


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

■楕円曲線Eの判別式 Δ,j-不変量 j,conductor Nは、それぞれ、
     Δ = 5077
     j = 37933056/5077
     N = 5077
である。
[pari/gpによる計算]
gp> read("c12.gp");
time = 1 ms.
gp> e=ellinit([0,0,1,-7,6])
time = 2 ms.
%2 = [0, 0, 1, -7, 6, 0, -14, 25, -49, 336, -5400, 5077, 37933056/5077, Vecsmall([1]), [Vecsmall([128, 1])], [0, 0, 0, 0, 0, 0, 0, 0]]
gp> e.j
%3 = 37933056/5077
gp> e.disc
%4 = 5077
gp> ellglobalred(e)
%5 = [5077, [1, 0, 0, 0], 1, Mat([5077, 1]), [[1, 5, 0, 1]]]

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

■楕円曲線Eの有理点群のrankは、3であることが分かる。
Cremonaのmwrank3によって、このように有理点群の生成元P1(2,0), P2(-1,3), P3(4, 6)が見つかる。よって、
     E(Q) = Z3
である。

■楕円曲線Eの全ての整点を、[4]の方法によって求める。
線形変換
     X = x/4, Y = y/8-1/2 ----- (2)
     [逆変換は、x = 4X, y = 8Y+4 ----- (2')]
により、以下の形式
     C: y2 = f(x) ----- (3)
     f(x) = x^3-112x+400 -------- (4)
を得る。
3次方程式 f(x) = 0の最大の実数根をγとする。 ------ (*)

任意のP ∈ E(Q)に対して、有理整数m1,m2,m3が存在して、
     P = m1P1+m2P2+m3P3 ------ (5)
となる。
f(x)=x3-112x+400=0の根は、3個とも実数(いずれも無理数)であり、大きい順に、
     γ ≒ 7.78643929958840,
     γ' ≒ 4.26328219078482,
     γ''≒-12.04972149037322
である。

(X,Y)がEの整点であるとする。
f(x) > 0 iff (γ'' < x < γ' または x > γ)
第一の場合、つまり、γ'' < x < γ'の範囲では、(2')より、
     γ'' < 4X < γ' iff γ''/4 < X < γ'/4 iff -3 <= X <= 1
となり、Eの8個の整点
     (X,Y)=(-3,0),(-3,-1),(-2,3),(-2,-4),(-1,3),(-1,-4),(0,2),(0,-3),(1,0),(1,-1) -------- (**)
を得る。

第二の場合、つまり、x > γの範囲で、Eの整点(X,Y)を求める。
gp> ellchangecurve(e,[1/2,0,0,-1/2])
%7 = [0, 0, 0, -112, 400, 0, -224, 1600, -12544, 5376, -345600, 20795392, 37933056/5077, Vecsmall([1]), [Vecsmall([128, 1])], [0, 0, 0, 0, 0, [5077, 1, Mat([5077, 1]), [[1, 5, 0, 1]]], 0, [[]~, [2, 0, 0, 4], [0, 0, 1, -7, 6, 0, -14, 25, -49, 336, -5400, 5077, 37933056/5077, Vecsmall([1]), [Vecsmall([128, 1])], [0, 0, 0, 0, 0, [5077, 1, Mat([5077, 1]), [[1, 5, 0, 1]]], 0, [[]~]]]]]]
gp> f(x)=x^3-112*x+400
%8 = (x)->x^3-112*x+400
gp> factor(f(x))
%9 =
[x^3 - 112*x + 400 1]

gp> rr=polroots(f(x))
time = 1 ms.
%10 = [-12.049721490373221949447260307254438039 + 0.E-38*I, 4.2632821907848198685795854071447049166 + 0.E-38*I, 7.7864392995884020808676749001097331228 + 0.E-38*I]~
gp> poldisc(f(x))
%11 = 1299712
gp> [real(rr[1])/4,real(rr[2])/4]
%12 = [-3.0124303725933054873618150768136095099, 1.0658205476962049671448963517861762292]
gp> for(x=-3,1,print("x=",x,";",factor(y^2+y-(x^3-7*x+6))))
x=-3;[y, 1; y + 1, 1]
x=-2;[y - 3, 1; y + 4, 1]
x=-1;[y - 3, 1; y + 4, 1]
x=0;[y - 2, 1; y + 3, 1]
x=1;[y, 1; y + 1, 1]
time = 1 ms.
     E0(R)={ P ∈ E∩R2 | X(P) >= γ/4}∪{O},
     ω = 2∫γ(dt/sqrt{f(t)}),
     τ = ω21, Imag(τ) > 0
として、isomorphism φ:E0(R)→R/Zを以下のように定義する。
     φ(P) = 0 (mod 1)          if P=O
             = (1/ω)∫x(P)(dt/sqrt{f(t)}) (mod 1)          if y(P) >= 0
             = -φ(-P) (mod 1)          if y(P)<0

ここで一般性を失わず、φ(P) ∈ [0,1)として良い。
|φ(P)|の上限をm1,m2,m3のみに依存する形で計算する。 この結果より、φ(P1),φ(P2),φ(P3)の線形形式の上限を与えることができる。
また、楕円対数の線形形式に対するDavidの下限を合わせることにより、max{|m1|,|m2|,|m3|}の上限を計算することができる。

h^をcanonical(N\'eron-Tate) height、<P,Q>をN\'eron-Tate(Weil) pairing、つまり、
     <P,Q> = h^(P+Q) - h^(P)-h^(Q)
とする。(5)より、
     h^(P) = (1/2)Σ1<=i,j<=3<Pi,Pj>mimj --------- (6)
となる。また、3x3行列 H=((1/2)<Pi,Pj>)は正定値(positive definite)である。

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

ここで、対称行列Hの固有値をλ123とすると、c1=min{λ123}とすれば良い。
[pari/gpによる計算]
gp> p1=[2,0];p2=[-1,3];p3=[4,6];
gp> H=HH3(e,p1,p2,p3)
time = 1 ms.
%15 =
[0.38352167766577310289772532327610857728 -0.24530453159107759586699129698140849848 -0.26197353549846360306118460955878793645]

[-0.24530453159107759586699129698140849848 0.60254055209292607577755654713030553377 0.50091360563174875492748638040090935894]

[-0.26197353549846360306118460955878793645 0.50091360563174875492748638040090935894 0.73338924199653540159398723911542470765]

gp> dd=matdet(H-x*matid(3))
%17 = (x^4 - 2.1029731494210076831669944327979473960*x^3 + 1.2339828209292544529489008667617301677*x^2 - 0.27248992008992671029983677391178949486*x + 0.019997949685310802422818496411567774848)/(-x + 0.38352167766577310289772532327610857728)
gp> matdet3(A)=A[1,1]*(A[2,2]*A[3,3]-A[2,3]*A[3,2])-A[2,1]*(A[1,2]*A[3,3]-A[3,2]*A[1,3])+A[3,1]*(A[1,2]*A[2,3]-A[2,2]*A[1,3])
%18 = (A)->A[1,1]*(A[2,2]*A[3,3]-A[2,3]*A[3,2])-A[2,1]*(A[1,2]*A[3,3]-A[3,2]*A[1,3])+A[3,1]*(A[1,2]*A[2,3]-A[2,2]*A[1,3])
gp> dd=matdet3(H-x*matid(3))
%19 = -x^3 + 1.7194514717552345802692691095218388187*x^2 - 0.57453590781680421156309662673102994541*x + 0.052142944844797996227139943077261674594
gp> factor(dd)
%20 =
[x - 0.16140028511345138834524757640484957275 1]

[x - 0.24628281019051634270293630194981542980 1]

[ x - 1.3117683764512668492210852311671738162 1]

gp> ww=polroots(dd)
%21 = [0.16140028511345138834524757640484957275 + 0.E-38*I, 0.24628281019051634270293630194981542980 + 0.E-38*I, 1.3117683764512668492210852311671738162 + 0.E-38*I]~
gp> poldisc(dd,x)
%22 = 0.010824438474570896410829480115526950214
gp> c1=min3(real(ww[1]),real(ww[2]),real(ww[3]))
%23 = 0.16140028511345138834524757640484957275

■不等式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]))
%24 = 15.572878599176804161735349800219466246

■不等式3
u=1/2,v=0とする。
X0を正の有理整数で、X0 > vとする。
     c0 = log|u|          if v <= 0,
         = log|u|+(1/2)*v/(X0-v)      if v > 0,
     c3 = c0+(1/12)*log|Δ|+(1/12)*log+|j|+(1/2)*log+|b2/12|+(1/2)*log 2*+1.07,
とする。
ここで、Δは(1)でQ上定義された楕円曲線Cの判別式、jはCのj-不変量、
     log+|α|=log max{1,|α|}, (α ∈ R)
     b2=a12+4a2
     2* = 1 if b2=0
         = 2 if b2!=0
である。
このとき、任意のP ∈ E(Q), X(P) >= X0に対して、
     x(P) > 0,
     h^(P)-(1/2)*log x(P) <= c3 ------ (9)
となる。

[pari/gpによる計算]
gp> c0=log(1/2)
%25 = -0.69314718055994530941723212145817656808
gp> c3=cc3(c0,e)
%26 = 2.1777041997108284038337655558205146426

■不等式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
とする。

     r = rank(E(Q)) = 3,
     M = max1<=i<=r|mi|,
     t0 = max{ order(T) | T ∈ E(Q)tors} = order(O) = 1
     hE = max{1,h(a/4,b/16),h(jE)} = max{1,h(-7/4,25/64), h(37933056/5077)} = max{1,log(24・7),log(212・33・73)} = log(37933056)
     Ai >= max{h^(Ri),hE,(3πui2)/(|ω1|2Imag(τ)) ,(i=0,1,...,r)
     ui = ωφ(Pi), (i=1,...,r)
     e <= ε <= mini=0,...,r{(e|ω1|sqrt(AiImag(τ)))/(|ui|2sqrt(3π))}
とする。
     M2 < c3c1-1+c1-1log(4*sqrt(2))+c4c1-1(log M+c7)(log log M+c8)r+2 ------- (11)
となる。ここで、
     c4 = 2*107r+15*(2/e)2(r+1)2*(r+2)4r2+18r+14*(log ε)-2r-3i=0rAi,
     c5 = logε,
     c6 = logε+hE,
     c7 = c0+log(t0r)+(2t0-1)/(16t0r),
     c8 = c6+(log(t0r)+(2t0-1)/(16t0r))/ log 16
である。

主不等式(11)より、
     M < 11754201886111.860397976278570530912445
であることが分かる。
しかし、ここで求めたMの上限は大き過ぎるので、LLL-algorithmによって、上限を下げる。

[pai/gpによる計算]
gp> X0=floor(max(c2,real(rr[3])/4))+1
%28 = 16
gp> he=max(log(2^4*7),log(2^12*3^3*7^3))
%29 = 17.451333479889612702508579398595235120
gp> om=omega_pe(-112,400)
time = 1 ms.
%30 = [2.0758439915434665249420878417536431499, 1.4805482682414149933073311106409602507*I]
gp> om1=om[1];om2=om[2];
gp> A0=AA(e,[0],he,om)
%32 = 17.451333479889612702508579398595235120
gp> A1=AA(e,p1,he,om)
time = 3 ms.
%33 = 17.451333479889612702508579398595235120
gp> A2=AA(e,p2,he,om)
time = 1 ms.
%34 = 17.451333479889612702508579398595235120
gp> A3=AA(e,p3,he,om)
time = 1 ms.
%35 = 17.451333479889612702508579398595235120
gp> eb=eeb3(e,p1,p2,p3,A0,A1,A2,A3,om)
time = 3 ms.
%36 = 3.1238283116064726248631599626436737734
gp> c4=cc4(3,eb,A0*A1*A2*A3)
%37 = 79418372487315289.313326196884662663121
gp> c5=cc5(eb)
%38 = 1.1390592725947523835081791793927746869
gp> c6=cc6(c5,he)
%39 = 18.590392752484365086016758577988009807
gp> c7=cc7(c6,3,1)
%40 = 19.709838374485808110745337148243868845
gp> c8=cc8(c6,3,1)
%41 = 18.994147414335950815793526255021848789
gp> g(m)=m^2-(c3/c1+log(4*sqrt(2))/c1+(c4/c1)*(log(m)+c7)*(log(log(m))+c8)^5)
%42 = (m)->m^2-(c3/c1+log(4*sqrt(2))/c1+(c4/c1)*(log(m)+c7)*(log(log(m))+c8)^5)
gp> gdash(m)=2*m-(c4/c1)*((1/m)*(log(log(m))+c8)^5+(log(m)+c7)*5*(log(log(m))+c8)^4*(1/log(m))*(1/m))
%43 = (m)->2*m-(c4/c1)*((1/m)*(log(log(m))+c8)^5+(log(m)+c7)*5*(log(log(m))+c8)^4*(1/log(m))*(1/m))
gp> nn(x)=x-g(x)/gdash(x)
%44 = (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
.....
161171416298745.13061834740295375416920
81039407986800.160659804472462499561299
41406001346246.116251965587505246498678
22408123949225.155222080837404075313293
14310954894941.437656533784530858599957
11987157529901.912629690394094405289903
11756526430139.455075605021736990563577
11754202122314.172623498765268141185451
11754201886111.862837284533076509641849
11754201886111.860397976278570531172600
11754201886111.860397976278570530912445
11754201886111.860397976278570530912445
11754201886111.860397976278570530912445
11754201886111.860397976278570530912445
11754201886111.860397976278570530912445
......
11754201886111.860397976278570530912445
11754201886111.860397976278570530912445
11754201886111.860397976278570530912445
time = 30 ms.

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

[pari/gpによる計算]
gp> K3=11754201886111.860397976278570530912445
%46 = 11754201886111.860397976278570530912445
gp> K1=(4*sqrt(2)/2*real(om1))*exp(c3)
time = 1 ms.
%47 = 51.820860701824336956614103041152766819
gp> K2=c1
%48 = 0.16140028511345138834524757640484957275
gp> KK0(3,1,K3)
%49 = 1.7591993221719209029539200717259775728 E56

K0=10100とする。 A=[1,  0,  0,  0 ; 0,  1,  0   0 ; 0   0   1   0 ; [K0*φ(P1)]  [K0*φ(P2)]  [K0*φ(P3)]  K0] にLLL-algorithmを適用して、reduced basis {b1,b2,b3,b4}を求めると、
     b1 = [ -4287157519709954836752309, 3228326330025308148803303, -997188251280551006796010, 2297384258615348875620400]t
となる。
(m1,m2,m3,m0) ∈ Z4, |mi| < K3 (i=1,2,3)とする。
このとき、|m0| <= 3M+1である。
l=A([m1,m2,m3,m0]t)に対して、
     ||l||2 <= 3K32+(K0|φ(P)|+3K3)2 ------ (13)
である。他方、LLLより、
     ||b1||2 <= 23||l||2
K32+(K0|φ(P)|+3K3)2 ----- (14)
(13),(14)より、
     K0|φ(P)| >= sqrt(2-3*||b1||2-3K32)-3K3 ------ (15)
(12),(15)より、
     ||b1|| >= 2(3/2)K3sqrt(12) = 8*sqrt(6)*K3 ----- (16)
ならば、
     M2 <= K2-1(log(K0K1) - log(2-3*||b1||2-3K32)-3K3) ------ (17)
が成立する。

[pari/gpによる計算]
gp> default(realprecision,200)
gp> K0=10^100
%57 = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
gp> a1=floor(K0*phi(e,p1,K0))
time = 20 ms.
%58 = 8947146795646959693793668888605335221917957115950395113756578129932186990268052669253611878475538996
gp> a2=floor(K0*phi(e,p2,K0))
time = 5 ms.
%59 = 6318797168819199971214222834571811007656595681330759309576375607215842712364963208657821482960750196
gp> a3=floor(K0*phi(e,p3,K0))
time = 4 ms.
%60 = 5029295310083051074433773420900926763950580326159845305139661054631200597994299086687616838049249333
gp> aaa=[1,0,0,0;0,1,0,0;0,0,1,0;a1,a2,a3,K0]
%61 =
[1 0 0 0]

[0 1 0 0]

[0 0 1 0]

[8947146795646959693793668888605335221917957115950395113756578129932186990268052669253611878475538996 6318797168819199971214222834571811007656595681330759309576375607215842712364963208657821482960750196 5029295310083051074433773420900926763950580326159845305139661054631200597994299086687616838049249333 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000]

gp> bbb=qflll(aaa,1)
%62 =
[-4287157519709954836752309 -2049033606843818236931840 -6886418717679210924340519 6238251880802671861645273]

[3228326330025308148803303 5451529986020592208645350 -5402164350267634568951204 7376351052076923660635636]

[-997188251280551006796010 669919958266164879778141 -2426683704150807668513197 -18713783610982536369502204]

[2297384258615348875620400 -1948333307599334662018232 10795348893767456267025462 -830707732121890292481703]

gp> cc1(bbb)
%63 = 0.066080319837423090508110825057423314376680639843130454023507969135530842775637605598987841276583475473128258218054994717906054003743113343380797284822157803842720941837735069286924418369338501533442177
gp> b1n=nr(bbb)
%64 = 5922344918371932021758294.7657269767411344924374228061677877482756937883336201461011459211738226674804522166609900178510307553049972210688617916457400212198462828031039461640836139206574435658980083863
gp> b1n-8*sqrt(6)*K3
%65 = 5922344918141597646121225.263420009155513802035840725605553
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(b1n^2/8-3*K3^2)-3*K3))
%66 = 1104.11978532778813399441115780226346829
gp> sqrt(M2)
%67 = 33.2282979601391580815473070476614255888
よって、
     M <= 33
が得られた。


次に、K3=33, K0=1016, A=[1,  0,  0;  0 ; 0,  1,  0   0 ; 0   0   1   0 ; [K0*φ(P1)]  [K0*φ(P2)]  [K0*φ(P3)]  K0] として、再度、LLL-algorithmを適用する。

[pari/gpによる計算]
gp> default(realprecision,35)
gp> K3=33
%70 = 33
gp> KK0(3,1,K3)
%71 = 10929447936.000000000000000000000000
gp> K0=10^16
%72 = 10000000000000000
gp> a1=floor(K0*phi(e,p1,K0))
time = 3 ms.
%73 = 8947146795646959
gp> a2=floor(K0*phi(e,p2,K0))
%74 = 6318797168819199
gp> a3=floor(K0*phi(e,p3,K0))
%75 = 5029295310083051
gp> aaa=[1,0,0,0;0,1,0,0;0,0,1,0;a1,a2,a3,K0]
%76 =
[               1                0                0                 0]

[               0                1                0                 0]

[               0                0                1                 0]

[8947146795646959 6318797168819199 5029295310083051 10000000000000000]

gp> bbb=qflll(aaa,1)
%77 =
[ 5588   3891  3775 -9243]

[-2333   8769 -3037  5158]

[-6141   6046  -522 -5594]

[ -437 -12063 -1196  7824]

gp> b1n=nr(bbb)
time = 1 ms.
%78 = 8635.4781569986036297839250066989788
gp> b1n-8*sqrt(6)*K3
%79 = 7988.8128649038446118598420109766234
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(b1n^2/8-3*K3^2)-3*K3))
%80 = 203.21144542430468928410742497815230
gp> sqrt(M2)
%81 = 14.255225197249768080708526771231318

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

さらに、K3=14, K0=1012, A=[1,  0,  0;  0 ; 0,  1,  0   0 ; 0   0   1   0 ; [K0*φ(P1)]  [K0*φ(P2)]  [K0*φ(P3)]  K0] として、再度、LLL-algorithmを適用する。

[pari/gpによる計算]
gp> K3=14
%82 = 14
gp> KK0(3,1,K3)
%83 = 354041856.00000000000000000000000000
gp> K0=10^12
%84 = 1000000000000
gp> a1=floor(K0*phi(e,p1,K0))
%85 = 894714679564
gp> a2=floor(K0*phi(e,p2,K0))
time = -8 ms.
%86 = 631879716881
gp> a3=floor(K0*phi(e,p3,K0))
%87 = 502929531008
gp> aaa=[1,0,0,0;0,1,0,0;0,0,1,0;a1,a2,a3,K0]
%88 =
[           1            0            0             0]

[           0            1            0             0]

[           0            0            1             0]

[894714679564 631879716881 502929531008 1000000000000]

gp> bbb=qflll(aaa,1)
time = 1 ms.
%89 =
[-231 -747  306  421]

[-551  565  725  687]

[-565  116 -135 -777]

[ 839  253 -664 -420]

gp> b1n=nr(bbb)
%90 = 1174.7799794003981918556688681697013
gp> b1n-8*sqrt(6)*K3
%91 = 900.43712820868224485757305180264149
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(b1n^2/8-3*K3^2)-3*K3))
%92 = 158.97248112543824650290867037816710
gp> sqrt(M2)
%93 = 12.608428971344457175504122512473597
よって、
     M <= 12
が得られた。


■最後に、|m1|,|m2|,|m3| <= 12について、P=m1P1+m2P2+m3P3が整点かどうかを確認する。

[pari/gpによる計算]
gp> check3(12,e,p1,p2,p3)
[342, 6324]
[406, -8181]
[11, -36]
[21, 95]
[816, -23310]
[37, -225]
[8, 21]
[0, 2]
[-3, 0]
[93, 896]
[3, 3]
[2, -1]
[-2, -4]
[52, -375]
[14, -52]
[-1, -4]
[1, -1]
[4, -7]
[4, 6]
[1, 0]
[-1, 3]
[14, 51]
[52, 374]
[-2, 3]
[2, 0]
[3, -4]
[93, -897]
[-3, -1]
[0, -3]
[8, -22]
[37, 224]
[816, 23309]
[21, -96]
[11, 35]
[406, 8180]
[342, -6325]
There are 36 integral points.
time = 623 ms.

(**)の8個の整点は、全て上記に含まれる。
よって、楕円曲線Eの整点は、
     (-3,-1), (-3,0), (-2,-4), (-2,3), (-1,-4), (-1,3), (0,-3), (0,2), (1,-1), (1,0),
     (2,-1), (2,0), (3,-4), (3,3), (4,-7), (4,6), (8,-22), (8,21), (11,-36), (11,35),
     (14,-52), (14,51), (21,-96), (21,95), (37,-225), (37,224), (52,-375), (52,374), (93,-897), (93,896),
     (342,-6325), (342,6324), (406,-8181), (406,8080), (816,-23310), (816,23309)
の36個に限る。

[2004.08.22追記]
■SIMATH-4.6(simcalc)によって、楕円曲線Eの整点を求める。
simcalcによって、楕円曲線EのMordell-Weil群E(Q)のrankは3であり、その生成元は、(1,0), (2,0), (0,2)である。
また、楕円曲線Eの整点を(Pと-Pを同一視して)求めると、
     (-3,0), (-2,3), (-1,3), (0,2), (1,0), (2,0), (3,3), (4,6), (8,21), (11,35),
     (14,51), (21,95), (37,224), (52,374), (93,896), (342,6324), (406,8180), (816,23309)
の18個となる。これらの点のそれぞれを(-1)倍した点もまた整点であるので、合計2+18=36個の整点を持つ。

[simcalcによる計算]
> E=EC(0,0,1,-7,6)
                  simcalc in free(): warning: junk pointer, too high to make sense.
         E = EC(0, 0, 1, -7, 6)
> basismwg(E)
  basis :  PT(1, 0, 1)
           PT(2, 0, 1)
           PT(0, 2, 1)
simcalc in free(): warning: junk pointer, too high to make sense.
         @ = 3
> faintp(E)
  all nontrivial integral points modulo negation :
  PT(-2, 3, 1) = PT(0, 1, 0) - PT(1, 0, 1) + PT(2, 0, 1) + 0*PT(0, 2, 1)
  PT(1, 0, 1) = PT(0, 1, 0) + PT(1, 0, 1) + 0*PT(2, 0, 1) + 0*PT(0, 2, 1)
  PT(14, 51, 1) = PT(0, 1, 0) + 2*PT(1, 0, 1) + 0*PT(2, 0, 1) + 0*PT(0, 2, 1)
  PT(2, 0, 1) = PT(0, 1, 0) + 0*PT(1, 0, 1) + PT(2, 0, 1) + 0*PT(0, 2, 1)
  PT(-3, 0, 1) = PT(0, 1, 0) - PT(1, 0, 1) - PT(2, 0, 1) + 0*PT(0, 2, 1)
  PT(21, 95, 1) = PT(0, 1, 0) + 0*PT(1, 0, 1) - 2*PT(2, 0, 1) + 0*PT(0, 2, 1)
  PT(406, 8180, 1) = PT(0, 1, 0) + 2*PT(1, 0, 1) + 2*PT(2, 0, 1) + 0*PT(0, 2, 
 1)
  PT(11, 35, 1) = PT(0, 1, 0) - PT(1, 0, 1) + PT(2, 0, 1) - PT(0, 2, 1)
  PT(816, 23309, 1) = PT(0, 1, 0) - 3*PT(1, 0, 1) + PT(2, 0, 1) - PT(0, 2, 1)
  PT(8, 21, 1) = PT(0, 1, 0) - PT(1, 0, 1) + 0*PT(2, 0, 1) + PT(0, 2, 1)
  PT(0, 2, 1) = PT(0, 1, 0) + 0*PT(1, 0, 1) + 0*PT(2, 0, 1) + PT(0, 2, 1)
  PT(3, 3, 1) = PT(0, 1, 0) + PT(1, 0, 1) + 0*PT(2, 0, 1) + PT(0, 2, 1)
  PT(-1, 3, 1) = PT(0, 1, 0) + 0*PT(1, 0, 1) - PT(2, 0, 1) - PT(0, 2, 1)
  PT(4, 6, 1) = PT(0, 1, 0) - PT(1, 0, 1) - PT(2, 0, 1) - PT(0, 2, 1)
  PT(52, 374, 1) = PT(0, 1, 0) - PT(1, 0, 1) + 2*PT(2, 0, 1) + PT(0, 2, 1)
  PT(342, 6324, 1) = PT(0, 1, 0) + 0*PT(1, 0, 1) - PT(2, 0, 1) + 2*PT(0, 2, 1)
  PT(37, 224, 1) = PT(0, 1, 0) + 0*PT(1, 0, 1) - PT(2, 0, 1) - 2*PT(0, 2, 1)
  PT(93, 896, 1) = PT(0, 1, 0) + 2*PT(1, 0, 1) + PT(2, 0, 1) + 2*PT(0, 2, 1)
 
simcalc in free(): warning: junk pointer, too high to make sense.
         @ = PT(-2, 3, 1)

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


[参考文献]


Last Update: 2021.03.18
H.Nakao

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