Integral Points on Elliptic Curve: n(n+1)(n+2)/6=m(m+1)/2, Rational Points and Integral Points on Elliptic Curve: y^2=x^3-144x+1296
[2003.05.11]n(n+1)(n+2)/6=m(m+1)/2の整点, y2=x3-144x+1296の有理点と整点
■問題A: 平方数m2で、1からn(n+1)/2までの連続する三角数の和に等しくなるものを全て求めよ。
不定方程式
(1・2)/2+(2・3)/2+(3・4)/2+...+n(n+1)/2 = m2 -------- (a1)
の正整数解(m,n)を求める。
つまり、楕円曲線
C1: n(n+1)(n+2)/6 = m2
の整点(m,n)を求める。
ここで、
X = 6n+6,
Y = 36m
とすると、楕円曲線
E1: Y2 = X3-36X ------- (a2)
となる。
m,nが正整数なら、X,Yも正整数になるので、楕円曲線E1の整点を求めれば十分である。
Y^2=X^3-36Xの有理点と整点で既に示したように、楕円曲線E1の整点は、
(±6, 0), (-3, ±9), (-2, ±8), (0, 0), (12,±36), (18, ±72), (294,±5040)
の13個に限る。
m,nが整数とすると、X=6n+6は6の倍数、Y=36mは36の倍数なので、楕円曲線C1の整点(m,n)は、
(0,-2), (0,-1), (0, 0), (±1, 1), (±2, 2), (±140, 48)
の9個に限る。
よって、(a1)の解で、m,nが正整数になるのは、
(1, 1), (2, 2), (140, 48)
の3個に限る。
つまり、問題Aを満たす平方数m2は、
1, 4, 19600
の3個に限る。
■問題B: 三角数m(m+1)/2で、1からn(n+1)/2までの連続する三角数の和に等しくなるものを全て求めよ。
不定方程式
(1・2)/2+(2・3)/2+(3・4)/2+...+n(n+1)/2 = m(m+1)/2 -------- (1)
の正整数解(m,n)を求める。
つまり、楕円曲線
C2: n(n+1)(n+2)/6 = m(m+1)/2
の整点(m,n)を求める。
X = 12(n+1),
Y = 36(2m+1)
とすると、楕円曲線
E: Y2 = X3-144X+1296 ------- (2)
となる。
m,nが正整数なら、X,Yも正整数になるので、楕円曲線Eの整点を求めれば十分である。
最初に、楕円曲線Eの有理点を求める。
■楕円曲線Eの判別式 Δ,j-不変量 j,conductor Nは、それぞれ、
Δ = -534491136 = -212・36・179
j = -110592/179 = -212・36/179
N = 1611 = 32・179
である。
[pari/gpによる計算]
gp> e=ellinit([0,0,0,-144,1296])
time = 28 ms.
%30 = [0, 0, 0, -144, 1296, 0, -288, 5184, -20736, 6912, -1119744, -534491136, -110592/179, [-15.15061352888592299549227975, 7.575306764442961497746139877 - 5.306205586503963424151249099*I, 7.575306764442961497746139877 + 5.306205586503963424151249099*I]~, 1.474869359117667557885799156, -0.7374346795588337789428995784 + 0.3262315176905544618366514305*I, -3.818649245869570612339221321 + 1.14532610 E-28*I, 1.909324622934785306169610660 - 2.974742383435524235330488644*I, 0.4811488694202520854756374868]
gp> e.disc
time = 0 ms.
%31 = -534491136
gp> e.j
time = 0 ms.
%32 = -110592/179
gp> ellglobalred(e)
time = 5 ms.
%33 = [1611, [2, 0, 0, 4], 4]
gp> factor([e.disc])
time = 0 ms.
%34 = [[-1, 1; 2, 12; 3, 6; 179, 1]]
gp> factor([e.j])
time = 0 ms.
%35 = [[-1, 1; 2, 12; 3, 3; 179, -1]]
gp> factor([1611])
time = 0 ms.
%36 = [[3, 2; 179, 1]]
■楕円曲線Eは、自明なねじれ点群{O}を持つ。
[pari/gpによる計算]
gp> elltors(e,1)
time = 51 ms.
%37 = [1, [], []]
■楕円曲線EのModell-Weil群のrankは、2であることが分かる。
Cremonaのmwrank3によって、このようにMordell-Weil群の生成元P1(0,36),P2(48,324)が見つかる。よって、
E(Q) = Z×Z
である。
■楕円曲線Eの全ての整点を、[4]の方法によって求める。
u=1,v=0とする。
以下の形式
E': y2 = f(x) ----- (3)
f(x) = x^3-144x+1296 -------- (4)
を得る。
3次方程式 f(x) = 0の最大の実数根をγとする。 ------ (*)
f(x)=x3-144x+1296=0の根は、1個の実数と2個の虚数であり、
γ'' ≒ 7.575306764442961497746139877 + 5.306205586503963424151249099*sqrt(-1),
γ' ≒ 7.575306764442961497746139877 - 5.306205586503963424151249099*sqrt(-1),
γ ≒ -15.15061352888592299549227975
である。
任意のP ∈ E(Q)に対して、有理整数m1,m2が存在して、
P = m1P1+m2P2 ------ (5)
となる。
(X,Y)がEの整点であるとする。
f(x) > 0 iff (x > γ)
よって、x > γの範囲で、Eの整点(x,y)を求める。
gp> poldisc(x^3-144*x+1296)
time = 1 ms.
%38 = -33405696
gp> rr=polroots(x^3-144*x+1296)
time = 29 ms.
%39 = [-15.15061352888592299549227975 + 0.E-28*I, 7.575306764442961497746139877 - 5.306205586503963424151249099*I, 7.575306764442961497746139877 + 5.306205586503963424151249099*I]~
■不等式1
P ∈ E(Q)が(5)で表現されるとすると、
h^(P) >= c1max{|m1|2,|m2|2} ------- (7)
である。
[pari/gpによる計算]
gp> read("c1.gp");
time = 20 ms.
gp> p1=[0,36];p2=[48,324];t1=[0];
time = 0 ms.
gp> H=HH2(e,p1,p2)
time = 112 ms.
%44 =
[0.1702618262646441056060317484 -0.3053786698608333272541381446]
[-0.3053786698608333272541381446 0.7431763566660752461755790225]
gp> dd=matdet(H-x*matid(2))
time = 0 ms.
%45 = x^2 - 0.9134381829307193517816107709*x + 0.03327843171669865272824205518
gp> ww=polroots(dd)
time = 5 ms.
%46 = [0.03801406786014315399128540263 + 0.E-28*I, 0.8754241150705761977903253682 + 0.E-28*I]~
gp> c1=min(real(ww[1]),real(ww[2]))
time = 0 ms.
%47 = 0.03801406786014315399128540263
■不等式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]))
time = 0 ms.
%48 = 30.30122705777184599098455951
■不等式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)
time = 0 ms.
%49 = 0.E-28
gp> c3=cc3(c0,e)
time = 7 ms.
%50 = 3.626827167900945542089514231
■不等式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)
となる。ただし、r=rank(E)=2である。
[pai/gpによる計算]
gp> X0=floor(max3(c2,real(rr[1]),0))+1
time = 0 ms.
%51 = 31
gp> factor([e.j])
time = 0 ms.
%52 = [[-1, 1; 2, 12; 3, 3; 179, -1]]
gp> he=log(3^4)
time = 0 ms.
%53 = 4.394449154672438765580980947
gp> A0=AA(e,t1,he)
time = 4 ms.
%54 = 28.40583139489164765164477766
gp> A1=AA(e,p1,he)
time = 15 ms.
%55 = 13.72654675129638742415968068
gp> A2=AA(e,p2,he)
time = 42 ms.
%56 = 4.394449154672438765580980947
gp> eb=eeb2(e,p1,p2,A0,A1,A2)
time = 17 ms.
%57 = 1.504857230380433339815745166
gp> c4=cc4(2,eb,A0*A1*A2)
time = 3 ms.
%58 = 28815710656738912.42980370217
gp> c5=cc5(eb)
time = 1 ms.
%59 = 0.4086980301664135835418949100
gp> c6=cc6(c5,he)
time = 0 ms.
%60 = 4.803147184838852349122875857
gp> c7=cc7(c6,2,1)
time = 0 ms.
%61 = 5.527544365398797658540107979
gp> c8=cc8(c6,2,1)
time = 1 ms.
%62 = 5.064418239845797375742875269
gp> g(m)=m^2-(c3/c1+log(4*sqrt(2))/c1+(c4/c1)*(log(m)+c7)*(log(log(m))c8)^4)
time = 0 ms.
gp> gdash(m)=2*m-(c4/c1)*((1/m)*(log(log(m))+c8)^4+(log(m)+c7)*4*(log(og(m))+c8)^3*(1/log(m))*(1/m))
time = 0 ms.
gp> nn(x)=x-g(x)/gdash(x)
time = 0 ms.
gp> x=10^100;for(i=1,300,x=nn(x);print(x))
5.000000000000000000000000000 E99
2.500000000000000000000000000 E99
1.250000000000000000000000000 E99
6.250000000000000000000000000 E98
3.125000000000000000000000000 E98
......
10058482229003.57264722505984
5035948022644.961509160842861
2530958788751.855136622179754
1290515709433.321866906262096
692882176517.1531196498518243
432890386348.3052205340976114
352940216894.3994814084236294
343506649924.3138281491607192
343370744286.9468214998466057
343370716044.2391338021264105
343370716044.2379141120933786
343370716044.2379141120933787
time = 1,972 ms.
主不等式(11)より、
M < 343370716044.2379141120933787
であることが分かる。
しかし、ここで求めたMの上限は大き過ぎるので、LLL-algorithmによって、上限を下げる。
■不等式(10),(11)を単純に、
|φ(P)| < K1exp(-K2M2), M < K3 ------- (12)
と書くことができる。
ここで、
K1 = (4*sqrt(2)/ω)*exp(c3),
K2 = c1,
K3 = 343370716044.2379141120933787
である。
[pari/gpによる計算]
gp> K3=343370716044.2379141120933787
time = 0 ms.
%63 = 343370716044.2379141120933786
gp> K1=(4*sqrt(2)/2*real(e.omega[1]))*exp(c3)
time = 0 ms.
%64 = 156.8229331444230200230872761
gp> K2=c1
time = 0 ms.
%65 = 0.03801406786014315399128540263
gp> KK0(2,1,K3)
time = 0 ms.
%66 = 4.759996407458436488419106588 E36
K0=1050とする。
A=[1 0 0 ; 0 1 0 ; [K0*φ(P1)] [K0*φ(P2)] K0]
にLLL-algorithmを適用して、reduced basis {b1,b2,b3}を求めると、
b1 = [
-17025378326681629,
8914936734530043,
10080577850777571
]t
となる。このとき、
||b1|| >= 2(2/2)*1*K3*sqrt(2^2+2) = 2*sqrt(6)*K3 ----- (16)
ならば、
M2 <= K2-1(log(K0K1) - log(2-2*||b1||2/22-2*K32)-2*K3) ------ (17)
が成立する。
[pari/gpによる計算]
gp> default(realprecision,100)
realprecision = 105 significant digits (100 digits displayed)
time = 1 ms.
gp> ec=ellinit([0,0,0,-144,1296])
time = 43 ms.
%67 = [0, 0, 0, -144, 1296, 0, -288, 5184, -20736, 6912, -1119744, -534491136, -110592/179, [-15.15061352888592299549227975558478644949027716866075979735880326815595491494016388333863687663349685, 7.575306764442961497746139877792393224745138584330379898679401634077977457470081941669318438316748429 - 5.306205586503963424151249099318195673383421584202583814502507911401177852197139526796105229580244933*I, 7.575306764442961497746139877792393224745138584330379898679401634077977457470081941669318438316748429 + 5.306205586503963424151249099318195673383421584202583814502507911401177852197139526796105229580244933*I]~, 1.474869359117667557885799156528281466719602818477055305585075581159782945827360814472981814085982090, -0.7374346795588337789428995782641407333598014092385276527925377905798914729136804072364909070429910450 + 0.3262315176905544618366514305268178788603761501911826924909063762117928789502182932309967174909369555*I, -3.818649245869570612339221322636625023801187026151038990330547335982594505294658937231869976083520390 + 4.94561464 E-106*I, 1.909324622934785306169610661318312511900593513075519495165273667991297252647329468615934988041760195 - 2.974742383435524235330488644847172713717225757944181620059609432663020565369068949665989786098725792*I, 0.4811488694202520854756374867505237003178567180057052526134329621266989406662396561751704971357199569]
gp> K0=10^50
time = 0 ms.
%68 = 100000000000000000000000000000000000000000000000000
gp> a1=floor(K0*phi(ec,p1,K0)+0.5)
time = 25 ms.
%69 = 69514738651492599912791387887984369050742880155213
gp> a2=floor(K0*phi(ec,p2,K0)+0.5)
time = 21 ms.
%70 = 19681232180225008935930294004268900375698080946496
gp> aaa=[1,0,0;0,1,0;a1,a2,K0]
time = 0 ms.
%71 =
[1 0 0]
[0 1 0]
[69514738651492599912791387887984369050742880155213 19681232180225008935930294004268900375698080946496 100000000000000000000000000000000000000000000000000]
gp> bbb=qflll(aaa,1)
time = 43 ms.
%72 =
[-17025378326681629 4330230206849322 59738315282011456]
[8914936734530043 23321369383585760 -78956458516445463]
[10080577850777571 -7600081067290717 -25987329821190254]
gp> b1n=nr(bbb)
time = 0 ms.
%73 = 21701558790854197.17124316440699721681287234023289972418319794981066110912449114633822091537073183112
gp> b1n-2^(2/2)*1*K3*sqrt(2^2+2)
time = 0 ms.
%74 = 21699876624760352.219216777975643844882
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(b1n^2/2^2-2*K3^2)-2*K3))
time = 1 ms.
%75 = 2190.279196037378740491196610
gp> sqrt(M2)
time = 0 ms.
%76 = 46.80041875920960966728935198
よって、
M <= 46
が得られた。
次に、K3=46, K0=109とする。
A=[1 0 0 ; 0 1 0 ; [K0*φ(P1)] [K0*φ(P2)] K0]
に、再度LLL-algorithmを適用する。
[pari/gpによる計算]
gp> K3=46
time = 0 ms.
%77 = 46
gp> KK0(2,1,K3)
time = 0 ms.
%78 = 11444329.61297008432157428044938748693736307827090548689381397905884509500640889034031762037347231657
gp> K0=10^9
time = 0 ms.
%79 = 1000000000
gp> a1=floor(K0*phi(ec,p1,K0)+0.5)
time = -4 ms.
%80 = 695147386
gp> a2=floor(K0*phi(ec,p2,K0)+0.5)
time = 6 ms.
%81 = 196812322
gp> aaa=[1,0,0;0,1,0;a1,a2,K0]
time = 0 ms.
%82 =
[1 0 0]
[0 1 0]
[695147386 196812322 1000000000]
gp> bbb=qflll(aaa,1)
time = 1 ms.
%83 =
[-266 101 -1037]
[-97 756 1610]
[204 -219 404]
gp> b1n=nr(bbb)
time = 0 ms.
%84 = 348.9713455285404948085994644452553010822501207349616074001478254397763463822012794644012299780792072
gp> b1n-2^(2/2)*1*K3*sqrt(2^2+2)
time = 0 ms.
%85 = 123.6182891924881097744493295723132930213829525145479555843401092526879916561282970227341621324523056
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(b1n^2/2^2-2*K3^2)-2*K3))
time = 2 ms.
%86 = 566.4020269185334110228834755
gp> sqrt(M2)
time = 0 ms.
%87 = 23.79920223281724649463064371
よって、
M <= 23
が得られた。
さらに、K3=23, K0=108とする。
A=[1 0 0 ; 0 1 0 ; [K0*φ(P1)] [K0*φ(P2)] K0]
に、再度LLL-algorithmを適用する。
[pari/gpによる計算]
gp> K3=23
time = 0 ms.
%88 = 23
gp> KK0(2,1,K3)
time = 0 ms.
%89 = 1430541.201621260540196785056173435867170384783863185861726747382355636875801111292539702546684039571
gp> K0=10^8
time = 0 ms.
%90 = 100000000
gp> a1=floor(K0*phi(ec,p1,K0)+0.5)
time = 5 ms.
%91 = 69514739
gp> a2=floor(K0*phi(ec,p2,K0)+0.5)
time = 5 ms.
%92 = 19681232
gp> aaa=[1,0,0;0,1,0;a1,a2,K0]
time = 0 ms.
%93 =
[1 0 0]
[0 1 0]
[69514739 19681232 100000000]
gp> bbb=qflll(aaa,1)
time = 2 ms.
%94 =
[266 -256 -165]
[97 76 659]
[-204 163 -15]
gp> b1n=nr(bbb)
time = 0 ms.
%95 = 348.9713455285404948085994644452553010822501207349616074001478254397763463822012794644012299780792072
gp> b1n-2^(2/2)*1*K3*sqrt(2^2+2)
time = 0 ms.
%96 = 236.2948173605143022915243970087842970518165366247547814922439673462321690191647882435676960552657564
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(b1n^2/2^2-2*K3^2)-2*K3))
time = 2 ms.
%97 = 490.4519418455722997240225445
gp> sqrt(M2)
time = 0 ms.
%98 = 22.14614959412972762745092372
よって、
M <= 22
が得られた。
■|m1|,|m2| <= 22について、P=m1P1+m2P2が整点かどうかを確認する。
[pari/gpによる計算]
gp> check2(22,e,p1,p2)
[420, -8604]
[108, 1116]
[-8, 44]
[-15, -9]
[9, -27]
[24, -108]
[252, -3996]
[4953, 348579]
[40, 244]
[12, 36]
[4, 28]
[-12, -36]
[0, -36]
[48, -324]
[48, 324]
[0, 36]
[-12, 36]
[4, -28]
[12, -36]
[40, -244]
[4953, -348579]
[252, 3996]
[24, 108]
[9, 27]
[-15, 9]
[-8, -44]
[108, -1116]
[420, 8604]
There are 28 integral points.
time = 3,409 ms.
よって、楕円曲線Eの整点(X,Y)は、
(-15,±9), (-12,±36), (-8,±44), (0,±36), (4,±28), (9,±27), (12,±36),
(24,±108), (40,±244), (48,±324), (108,±1116), (252,±3996), (420,±8604), (4953,±348579)
の28個に限る。
■最後に、楕円曲線C2の整点(m,n)を求める。
m,nを整数とすると、X=12(n+1)は12の倍数,Y=36(2m+1)は36の倍数かつ(Y/36)は奇数でなければならないので、
(X,Y) = (-12,±36), (0,±36), (12,±36), (24,±108), (252, ±3996), (420,±8604)
のみが条件を満たす。よって、楕円曲線C2の整点(m,n)は、
(-1,-2), (0,-2), (-1,-1), (0,-1), (-1,0), (0,0),
(-2,1), (1,1), (-56,20), (55,20), (-120,34), (119,34)
の12個に限る。
よって、(1)の解で、m,nが正整数になるものは、
(1, 1), (55,20), (119, 34)
の3個に限る。
つまり、問題Bを満たす三角数m(m+1)/2は、
1, 1540, 7140
の3個に限る。
[2004.08.22追記]
■SIMATH-4.6(simcalc)によって、楕円曲線Eの整点を求める。
simcalcによって、楕円曲線EのMordell-Weil群E(Q)のrankは2であり、その生成元は(0,36), (12,36)である。
また、楕円曲線Eの整点を(Pと-Pを同一視して)求めると、
&nbso; (-15,9), (-12,36), (-8,44), (0,36), (4,28), (9,27), (12,36), (24,108), (40,244), (48,324),
&nbso; (108,1116), (252,3996), (420,8604), (4953,348579)
の14個となる。これらの点のそれぞれを(-1)倍した点も整点となるので、楕円曲線E葉合計2*14=28個の整点を持つ。
[simcalcによる計算]
> E=EC(0,0,0,-144,1296)
simcalc in free(): warning: junk pointer, too high to make sense.
E = EC(-144, 1296)
> basismwg(E)
basis : PT(0, 36, 1)
PT(12, 36, 1)
simcalc in free(): warning: junk pointer, too high to make sense.
@ = 2
> faintp(E)
all nontrivial integral points modulo negation :
PT(0, 36, 1) = PT(0, 1, 0) + PT(0, 36, 1) + 0*PT(12, 36, 1)
PT(4, 28, 1) = PT(0, 1, 0) - 2*PT(0, 36, 1) + 0*PT(12, 36, 1)
PT(252, 3996, 1) = PT(0, 1, 0) + 3*PT(0, 36, 1) + 0*PT(12, 36, 1)
PT(-15, 9, 1) = PT(0, 1, 0) + 2*PT(0, 36, 1) - PT(12, 36, 1)
PT(24, 108, 1) = PT(0, 1, 0) + PT(0, 36, 1) - PT(12, 36, 1)
PT(12, 36, 1) = PT(0, 1, 0) + 0*PT(0, 36, 1) + PT(12, 36, 1)
PT(-12, 36, 1) = PT(0, 1, 0) - PT(0, 36, 1) - PT(12, 36, 1)
PT(48, 324, 1) = PT(0, 1, 0) - 2*PT(0, 36, 1) - PT(12, 36, 1)
PT(108, 1116, 1) = PT(0, 1, 0) - PT(0, 36, 1) + 2*PT(12, 36, 1)
PT(-8, 44, 1) = PT(0, 1, 0) + 0*PT(0, 36, 1) + 2*PT(12, 36, 1)
PT(9, 27, 1) = PT(0, 1, 0) - PT(0, 36, 1) - 2*PT(12, 36, 1)
PT(40, 244, 1) = PT(0, 1, 0) + 2*PT(0, 36, 1) + 2*PT(12, 36, 1)
PT(420, 8604, 1) = PT(0, 1, 0) - PT(0, 36, 1) - 3*PT(12, 36, 1)
PT(4953, 348579, 1) = PT(0, 1, 0) + 4*PT(0, 36, 1) + 3*PT(12, 36, 1)
simcalc in free(): warning: junk pointer, too high to make sense.
@ = PT(0, 36, 1)
[参考文献]
- [1]Joseph H. Silverman, John Tate(著), 足立 恒雄, 木田 雅成, 小松 啓一, 田谷 久雄(訳), "楕円曲線論入門", シュプリンガー・フェアラーク東京, 1995, p127, ISBN4-431-70683-6, {3900円}.
- [2]Joseph H. Silverman, "The Arithmetic of Elliptic Curves", GTM 106, Springer-Verlag New York Inc., 1986, p59-60, ISBN0-387-96203-4.
- [3]Nigel P. Smart, "The Algorithmic Resolution of Diophantine Equations", LMSST 41, Cambridge University Press, 1998, ISBN0-521-64633-2.
- [4]R. J. Stroeker, N. Tzanakis, "Solving elliptic diophantine equations by estimating linear forms in elliptic logarithms", Acta. Math., 3, p209-220, 1994.
- [5]John Cremona, "The Arithmetic of Elliptic Curves", University of Exeter.
| Last Update: 2005.06.12 |
| H.Nakao |