Homeに戻る  一覧に戻る 

Integral Points of Curve: 2x(x-1)(x-2)(x-3)=y(y-1)(y-2)(y-3)


[2004.03.20]2x(x-1)(x-2)(x-3)=y(y-1)(y-2)(y-3)の整点



■Diophantus方程式
     A: 2x(x-1)(x-2)(x-3)=y(y-1)(y-2)(y-3)
の整数解x,yを求める。

この曲線Aは、16個の自明な整点
     (x,y) ∈ {0,1,2,3}×{0,1,2,3}
を持つ。

pari/gpでプログラムを作成し、|x| <= 10000の範囲で曲線Aの整点(x,y)を探すと、16個の自明な整点と4個の自明でない整点
     (-4,-5),(-4,8),(7,-5),(7,8)
が見つかる。

[pari/gpによる計算]
gp> read("./ide12.gp")
time = 20 ms.
gp>  find(10000)
[-4, 8]
[-4, -5]
[0, 3]
[0, 0]
[0, 2]
[0, 1]
[1, 3]
[1, 0]
[1, 2]
[1, 1]
[2, 3]
[2, 0]
[2, 2]
[2, 1]
[3, 3]
[3, 0]
[3, 2]
[3, 1]
[7, 8]
[7, -5]
time = 1,096 ms.
以下では、曲線Aの整点(x,y)はこれらの20個に限ることを証明する。

■曲線Aから楕円曲線E1: V2=(4U+5)(2U2-1)へ有理変換を求める。
     x(x-1)(x-2)(x-3) = {x(x-3)}{(x-1)(x-2)} = (x2-3x)(x2-3x+2) = (x2-3x+1)2-1
であるので、
     X = x2-3x+1,
     Y = y2-3y+1
とおくと、
     Y2-1 = 2(X2-1)
つまり、
     Y2 = 2X2-1
を得る。
x,yが整数ならば、X,Yも整数である。
また、xについての2次方程式
     X = x2-3x+1
つまり、
     x2-3x+1-X = 0
が整数解を持つためには、
     (-3)2-4(1-X) = 4X+5 = □
が必要十分である。
ここで、
     4X+5 = 4(x2-3x+1)+5 = (2x-3)2
である。
よって、曲線Aが整点(x,y)を持つためには、
     (2X2-1)(4X+5) = □
つまり、
     8X3+10X2-4X-5 = □
であることが必要である。
曲線Aの整点(x,y)を求めることは、楕円曲線
     E1: V2 = 8U3+10U2-4U-5
の整点(U,V)を求めることに帰着できる。
ここで、
     U = x2-3x+1,
     V = ±(2x-3)(y2-3y+1)
である。

さらに、
     u = 8U,
     v = 8V
とすると、楕円曲線
     E: v2 = u3+10u2-32u-320
を得る。
よって、楕円曲線Eの整点(u,v)を求めれば、十分である。

[pari/gpによる計算]
gp>  ee(x,y)=(4*x+5)*(2*x^2-1)-y^2
time = 2 ms.
gp>  ee(x/8,y/8)*64
time = 3 ms.
%6 = x^3 + 10*x^2 - 32*x + (-y^2 - 320)
gp>  e=ellinit([0,10,0,-32,-320])
time = 183 ms.
%7 = [0, 10, 0, -32, -320, 40, -64, -1280, -13824, 3136, 120320, 9469952, 941192/289, [5.656854249492380195206754896, -5.656854249492380195206754896, -10.00000000000000000000000000]~, 0.8597193550975993856257666087, 1.066550165938802363817706239*I, -1.894401679181166136582320382, -6.004362991559250962440141316*I, 0.9169338208401447786285202847]
gp>  ellglobalred(e)
time = 10 ms.
%8 = [1088, [1, -3, 0, 0], 8]
gp>  e1(x,y)=x^3 + 10*x^2 - 32*x + (-y^2 - 320);
time = 0 ms.
gp>  e1(x-10/3,y)
time = 3 ms.
%9 = x^3 - 196/3*x + (-y^2 - 3760/27)

■変数を取り直して、楕円曲線E: Y2=X3+10X2-32X-320の整点(X,Y)を求める。
楕円曲線Eの判別式Δ, j-不変量 j,conductor Nは、それぞれ、
     Δ = 9469952 = 215・172,
     j = 941192/289 = 23・76/172,
     N = 1088 = 26・17
である。

[pari/gpによる計算]
gp>  e.disc
time = 0 ms.
%12 = 9469952
gp>  factor([e.disc])
time = 0 ms.
%13 = [[2, 15; 17, 2]]
gp>  e.j
time = 0 ms.
%14 = 941192/289
gp>  factor([e.j])
time = 0 ms.
%15 = [[2, 3; 7, 6; 17, -2]]
gp>  ellglobalred(e)[1]
time = 3 ms.
%16 = 1088
gp>  factor([1088])
time = 0 ms.
%17 = [[2, 6; 17, 1]]

■楕円曲線Eのねじれ点群E(Q)torsは、位数2の巡回群Z/2Zであり、その生成元は、T=(-10,0)である。

     E(Q)tors = {(-10,0), O}

[pari/gpによる計算]
gp>  elltors(e,1)
time = 91 ms.
%18 = [2, [2], [[-10, 0]]]

■楕円曲線EのMordell-Weil群のrankは2であり、その生成元は、P1(-8,8), P2(-9,7)であることが分かる。
Cremonaのmwrank3により、このように求まる。
よって、
     E(Q) = Z2×Z/2Z
である。

■楕円曲線Eの全ての整点を、[4]の方法によって求める。
新しく、x=X-10/3, Y=yとする。
以下の形式
     C: y2 = f(x)
     f(x) = x^3-(196/3)x-(3760/27)
を得る。
3次方程式 f(x) = 0の最大の実数根をγとする。

任意のP ∈ E(Q)に対して、有理整数m1,m2,m0(m0=0,1)が存在して、
     P = m1P1+m2P2+m0T ------- (1)
となる。
f(x)=x3-(196/3)x-(3760/27)=0の根は、3個の実数であり、
     γ = (10+12*sqrt{2})/3 ≒ 8.990187582825713528540088230,
     γ' = (10-12*sqrt{2})/3 ≒ -2.323520916159046861873421563,
     γ''= -10/3 ≒ -6.666666666666666666666666666
である。

(X,Y)がEの整点であるとする。X = x+10/3なので、
f(X) > 0 iff (X > γ または γ'' < X < γ')

γ'' < X < γ'なる整点(X,Y)は、存在しない。

よって、X > γの範囲で、Eの整点(X,Y)を求める。
gp>  polroots(x^3-196/3*x-3760/27)
time = 16 ms.
%29 = [-6.666666666666666666666666666 + 0.E-28*I, -2.323520916159046861873421563 + 0.E-28*I, 8.990187582825713528540088230 + 0.E-28*I]~
gp>  f(x+10/3)
time = 2 ms.
%30 = x^3 + 10*x^2 - 32*x - 320
gp>  f(x)=x^3-196/3*x-3760/27;
time = 0 ms.
gp>  polroots(x^3-196/3*x-3760/27)
time = 16 ms.
%31 = [-6.666666666666666666666666666 + 0.E-28*I, -2.323520916159046861873421563 + 0.E-28*I, 8.990187582825713528540088230 + 0.E-28*I]~
gp>  f(x+10/3)
time = 0 ms.
%32 = x^3 + 10*x^2 - 32*x - 320
gp>  for(x=-3,0,y2=x^3+10*x^2-32*x-320;y=sqrtint(y2);if(y^2==y,print([x,y])))
time = 3 ms.

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

[pari/gpによる計算]
gp>  p0=[0];p1=[-8,8];p2=[-9,7];t1=[-10,0];
time = 5 ms.
gp>  e=ellinit([0,10,0,-32,-320])
time = 193 ms.
%2 = [0, 10, 0, -32, -320, 40, -64, -1280, -13824, 3136, 120320, 9469952, 941192/289, [5.656854249492380195206754896, -5.656854249492380195206754896, -10.00000000000000000000000000]~, 0.8597193550975993856257666087, 1.066550165938802363817706239*I, -1.894401679181166136582320382, -6.004362991559250962440141316*I, 0.9169338208401447786285202847]
gp>  read("./c1.gp")
time = 51 ms.
gp> H=[ellbil(e,p1,p1)/2,ellbil(e,p1,p2)/2;ellbil(e,p2,p1)/2,ellbil(e,p2,p2)/2]
time = 122 ms.
%3 = 
[0.2401165355230992875256687760 -0.3410087355449494225621929798]

[-0.3410087355449494225621929798 1.037843416682204846847369835]

gp>  dd=matdet(H-[x,0;0,x])
time = 1 ms.
%4 = x^2 - 1.277959952205304134373038611*x + 0.1329164079112221240640656114
gp>  ww=polroots(dd)
time = 5 ms.
%5 = [0.1142143122593288702859031081 + 0.E-28*I, 1.163745639945975264087135503 + 0.E-28*I]~
gp>  c1=real(ww[1])
time = 0 ms.
%6 = 0.1142143122593288702859031081

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

[pari/gpによる計算]
gp>  rr=polroots(x^3-196/3*x-3760/27);
time = 28 ms.
gp> c2=2*max3(real(rr[1]),real(rr[2]),real(rr[3]))
time = 0 ms.
%8 = 17.98037516565142705708017646

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

[pari/gpによる計算]
gp>  c0=log(1)
time = 0 ms.
%9 = 0.E-28
gp>  c3=cc3(c0,e)
time = 5 ms.
%10 = 4.377809428090487922407129784

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

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

[pai/gpによる計算]
gp>  X0=floor(max(c2,real(rr[3])-10/3))+1
time = 0 ms.
%11 = 18
gp>  factor(e.j)
time = 1 ms.
%12 = 
[2 3]

[7 6]

[17 -2]

gp>  he=log(2^3*7^6)
time = 0 ms.
%13 = 13.75490243601171575888381282
gp>  A0=AA(e,p0,he)
time = 3 ms.
%14 = 13.75490243601171575888381282
gp>  A1=AA(e,p1,he)
time = 43 ms.
%15 = 13.75490243601171575888381282
gp>  A2=AA(e,p2,he)
time = 9 ms.
%16 = 13.75490243601171575888381282
gp>  eb=eeb2(e,p1,p2,A0,A1,A2)
time = 13 ms.
%17 = 4.254448420452168413933552300
gp>  c4=cc4(2,eb,A0*A1*A2)
time = 0 ms.
%18 = 6246543073983.759972208187437
gp>  c5=cc5(eb)
time = 0 ms.
%19 = 1.447965122706464947287896631
gp>  c6=cc6(c5,he)
time = 0 ms.
%20 = 15.20286755871818070617170945
gp>  c7=cc7(c6,2,2)
time = 0 ms.
%21 = 16.63603691983807132500617369
gp>  c8=cc8(c6,2,2)
time = 0 ms.
%22 = 15.71977414122859824610170857
gp> g(m)=m^2-(c3/c1+log(4*sqrt(2))/c1+(c4/c1)*(log(m)+c7)*(loo(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(log(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,320,x=nn(x);print(x))
5.000000000000000000000000000 E99
2.500000000000000000000000000 E99
1.250000000000000000000000000 E99
6.250000000000000000000000000 E98
3.125000000000000000000000000 E98
......
1256813960521.071729178912943
628532488562.6298276228083513
314511930749.6735386555033010
157736451543.8285550649565842
79805550553.75958307939867278
41715816148.61397492317460403
24259329178.21072942004518818
17903451013.76199997237443792
16747175596.36445274536820371
16705950628.00353835897628105
16705898015.44327377700268472
16705898015.35757538136369260
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
16705898015.35757538136346523
time = 2,069 ms.
主不等式より、
     M < 16705898015.35757538136346523
であることが分かる。
しかし、ここで求めたMの上限は大き過ぎるので、LLL-algorithmによって、上限を下げる。

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

[pari/gpによる計算]
gp>  K3=16705898015.35757538136346523
time = 0 ms.
%23 = 16705898015.35757538136346522
gp>  K1=(4*sqrt(2)/2*real(e.omega[1]))*exp(c3)
time = 0 ms.
%24 = 193.7136280963326181924079758
gp>  K2=c1
time = 0 ms.
%25 = 0.1142143122593288702859031081
gp>  KK0(2,2,K3)
time = 1 ms.
%26 = 4.385471844122872289853239807 E33
K0=1040, A=[1,  0,   0 ; 0,  1,   0 ; [K0*φ(P1)], [K0*φ(P2)],  K0] にLLL-algorithmを適用して、reduced basis {b1,b2,b3}を求めると、
     b1 = [ -1738636420502, -2099651020143, 2432402503300]t
となる。このとき、
     ||b1|| >= 2(1/2)*3*K3*sqrt(2) = 6*K3
ならば、
     M2 <= K2-1(log(K0K1) - log(2-4*||b1||2-2*K22)-2*K3)
が成立する。

[pari/gpによる計算]
gp>  default(realprecision,60)
   realprecision = 67 significant digits (60 digits displayed)
time = 0 ms.
gp>  ec=ellinit([0,10,0,-32,-320])
time = 16 ms.
%35 = [0, 10, 0, -32, -320, 40, -64, -1280, -13824, 3136, 120320, 9469952, 941192/289, [5.65685424949238019520675489683879231427868750150779229270671, -5.65685424949238019520675489683879231427868750150779229270672, -10.0000000000000000000000000000000000000000000000000000000000]~, 0.859719355097599385625766608752734781484968429069351032155063, 1.06655016593880236381770623945631354731267492208468837882615*I, -1.89440167918116613658232038245143900387791308550710581191615, -6.00436299155925096244014131628418977121096586928837361381252*I, 0.916933820840144778628520284514202711544302982958822193661754]
gp>  K0=10^40
time = 0 ms.
%36 = 10000000000000000000000000000000000000000
gp>  a1=floor(K0*phi(ec,p1,K0))
time = 11 ms.
%37 = 5507561868054161622180545821798475489019
gp>  a2=floor(K0*phi(ec,p2,K0))
time = 10 ms.
%38 = 7024204136565772164280199604273112999676
gp>  aaa=[1,0,0;0,1,0;a1,a2,K0]
time = 0 ms.
%39 = 
[1 0 0]

[0 1 0]

[5507561868054161622180545821798475489019 7024204136565772164280199604273112999676 10000000000000000000000000000000000000000]

gp>  bbb=qflll(aaa,1)
time = 4 ms.
%40 = 
[-1738636420502 19088875004941 -6106729403756]

[-2099651020143 -14510495592101 -27958743575191]

[2432402503300 -320847691961 23002111227669]

gp>  b1n=nr(bbb)
time = 0 ms.
%41 = 3653487778430.85913730635906944583461835779998834138020773123
gp>  b1n-4*sqrt(6)*K3
time = 0 ms.
%42 = 3489804075100.4582061264107719962068040
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(2^(-4)*b1n^2-2*K3^2)-2*K3))time = 0 ms.
%43 = 611.7183403942069133342301693
gp>  sqrt(M2)
time = 0 ms.
%44 = 24.73294039119099387909072834

よって、
     M <= 24
が得られた。
次に、K3=24, K0=1010, A=[1,  0,  0; 0,  1,  0; [K0*φ(P1)],  [K0*φ(P1)],  K0] として、再度、LLL-algorithmを適用する。
[pari/gpによる計算]
gp>  K3=24
time = 0 ms.
%45 = 24
gp>  KK0(2,2,K3)
time = 0 ms.
%46 = 13002910.5424261071473200339387139491593743070614775582164941
gp>  K0=10^10
time = 0 ms.
%47 = 10000000000
gp>  a1=floor(K0*phi(ec,p1,K0))
time = 7 ms.
%48 = 5507561867
gp>  a2=floor(K0*phi(ec,p2,K0))
time = 5 ms.
%49 = 7024204136
gp>  aaa=[1,0,0;0,1,0;a1,a2,K0]
time = 0 ms.
%50 = 
[1 0 0]

[0 1 0]

[5507561867 7024204136 10000000000]

gp>  bbb=qflll(aaa,1)
time = 1 ms.
%51 = 
[762 -2213 -49]

[-1147 51 1482]

[386 1183 -1014]

gp>  b1n=nr(bbb)
time = 1 ms.
%52 = 1430.12202276588972189584705727099909405266993885518497094483
gp>  b1n-4*sqrt(6)*K3
time = 0 ms.
%53 = 1194.97100745870462446890778609923352042393898071214463861530
gp> M2=(1/K2)*(log(K0*K1)-log(sqrt(2^(-4)*b1n^2-2*K3^2)-2*K3))
time = -7 ms.
%54 = 197.5444671757316236189946112
gp>  sqrt(M2)
time = 0 ms.
%55 = 14.05505130462822692072188049

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

■さらに、K3=14, K0=108, A=[1,  0,  0; 0,  1,  0; [K0*φ(P1)],  [K0*φ(P1)],  K0] として、再度、LLL-algorithmを適用する。
gp>  K3=14
time = 0 ms.
%56 = 14
gp>  KK0(2,2,K3)
time = 0 ms.
%57 = 2581017.54401166362935808544038129893614895099657801068764901
gp>  K0=10^8
time = 0 ms.
%58 = 100000000
gp>  a1=floor(K0*phi(ec,p1,K0))
time = 5 ms.
%59 = 55075618
gp>  a2=floor(K0*phi(ec,p2,K0))
time = 5 ms.
%60 = 70242041
gp>  aaa=[1,0,0;0,1,0;a1,a2,K0]
time = 0 ms.
%61 = 
[1 0 0]

[0 1 0]

[55075618 70242041 100000000]

gp>  bbb=qflll(aaa,1)
time = 1 ms.
%62 = 
[-149 -124 -688]

[-222 204 91]

[238 -75 315]

gp>  b1n=nr(bbb)
time = 1 ms.
%63 = 357.951113980666359931521557384652426142105994341580232659500
gp>  b1n-4*sqrt(6)*K3
time = 0 ms.
%64 = 220.779688384808386432473649201122508192012935424806705467269
gp>  M2=(1/K2)*(log(K0*K1)-log(sqrt(2^(-4)*b1n^2-2*K3^2)-2*K3)
time = 0 ms.
%65 = 171.6506195853098919400354713
gp>  sqrt(M2)
time = 0 ms.
%66 = 13.10155027412061232441678161
よって、
     M <= 13
が得られた。

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

[pari/gpによる計算]
gp>  check2(13,e,p1,p2)
[40, -280]
[-6, 4]
[6, 8]
[8, 24]
[-8, -8]
[232, 3608]
[-9, -7]
[-9, 7]
[232, -3608]
[-8, 8]
[8, -24]
[6, -8]
[-6, -4]
[40, 280]
There are 14 integral points.
time = 523 ms.
gp>  check2t(13,e,p1,p2,t1)
[602, 14892]
[1656, -67592]
[7, -17]
[24, 136]
[58, 476]
[-10, 0]
[58, -476]
[24, -136]
[7, 17]
[1656, 67592]
[602, -14892]
There are 11 integral points.
time = 470 ms.

よって、楕円曲線Eの整点は、
     (-10,0),(-9,±7),(-8,±8),(-6,±4),(6,±8),(7,±17),(8,±8),(24,±136),
     (40,±280),(58,±476),(232,±3608),(602,±14892),(1656,±67592)
の25個に限る。

■楕円曲線E1: V2=8U3+10U2-4U-5の整数点(U,V)を求める。
楕円曲線E: v2=u3+10u2-32u-320の25個の整点(u,v)の中で、ある整数U,Vに対して、u=8U, v=8Vを満たすものは、
     (-8,±8),(8,±8),(24,±136),(40,±280),(232,±3608),(1656,±67592)
の10個である。
よって、楕円曲線E1の整点(U,V)は、
     (-1,±1),(1,±1),(3,±17),(5,±35),(29,±451),(207,±8449)
の10個に限る。

■曲線A: 2x(x-1)(x-2)(x-3)=y(y-1)(y-2)(y-3)の整点を求める。
曲線Aの整点(x,y)は、楕円曲線E1の整点(U,V)に対して、
     x2-3x+1 = U,
     (2x-3)(y2-3y+1) = ±V
を満たすので、前者より、整数xは、
     0,1,2,3,-1,4,-4,7
の8個に限る。

x=-4のとき、y2-3y+1=±41より、y=8,-5である。
x=-1のとき、y2-3y+1=±35/11を満たす整数yは存在しない。
x=0,1,2,3のとき、y=0,1,2,3である。
x=4のとき、y2-3y+1=±35/11を満たす整数yは存在しない。
x=7のとき、y2-3y+1=±41より、y=8,-5である。

よって、曲線Aの整点(x,y)は、16個の自明な整点
     (x,y) ∈ {0,1,2,3}×{0,1,2,3},
と、4個の自明でない整点
     (-4,-5), (-4,8), (7,-5), (7,8)
のいずれかに限る[全部で20個]。


[参考文献]


Last Update: 2005.06.12
H.Nakao

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