Homeに戻る  一覧に戻る 

4-descent, 8-descent


[2002.06.30]4-descent,8-descent


■自然数nが合同数であることを示すには、楕円曲線
    En: y2 = x3-n2x
の自明でない(y!=0である)有理点を少なくとも1つ求めることができれば、十分である。

同様に、nが(3/π)-合同数であることを示すには、楕円曲線
    Cn: y2 = x3+2nx2-3n2x
の自明でない(y!=0である)有理点を少なくとも1つ求めることができれば、十分である。
よって、EnまたはCnのMordell-Weil rankが1以上であることが分かれば良く、rankを正確に求めることは必須でない。

Cremonaのmwrankでは、高さ(Canonical Height)の大きい有理点を求めるのに、時間がかかるので、rankの確定をしない別の方法(4-descent,8-descent)で、有理点を求めてみる。

■Allan J. MacLeodの論文[1]に記述されている4-descentのアルゴリズムを紹介する。
位数2の点を少なくとも1つ持つ楕円曲線
    E: y2 = x3+ax2+bx ---------- (1)
を考える。
一般性を失うことなく、x=du2/v2, y=duw/v3, だだし、dはsquarefree(2乗因子を含まない), (d,v)=1 と置くことができる。
(1)に代入すると、
    d2w2 = d3u4+d2au2b2+dbv4 ---------- (2)
となる。よって、d|b, b=deである。
dはbのsquarefree因子であり、有限個しかない。dは負の値も取り得ることに注意する。
最初に少し単純な2次方程式
    h2 = df2+afg+eg2 ---------- (3)
を考える。
2次方程式(3)の1つの解(h0,f0,g0)でg0!=0なるものを見つけることができたとする。
このとき、(3)の解を次のようにパラメータ表示できる。x=f/g, y=h/gとすると、(3)は、
    y2 = dx2+ax+e
となる。点(x0,y0)=(f0/g0,h0/g0)を通る傾きmの直線が曲線(3)と再び出合う点のx座標は、
    x = {a+dx0+m(mx0-2y0)}/(m2-d) ----------- (4)
である。ここで、m=p/qが有理数であるとすると、
    x = {ag0q2+df0q2+p(f0p-2h0q)}/{g0(p2-dq2)} ----------- (5)
となる。
元の問題(2)を解くためは、f/g=v2/u2(★最初のxの表示と比較すると、(u,v)が入れ換わっていることに注意する)でパラメータ表示すると、以下の2つの2次方程式を解けばよい。
    ku2 = g0(p2-dq2) ----------- (6)
    kv2 = f0p2-2h0pq+(ag0+df0)q2 ----------- (7)
ここで、kはsquarefreeである。
kは(6),(7)の右辺の2次方程式の終結式g0(a2-4b)を割り切る。k0を終結式のsquarefree因子(負の値も可能)とする。
k=k0に対して、(6)の1つの解(u0,p0,q0)を見つけたとする。
曲線(6)と(p0,q0)を通る傾きr/sの直線との交点を考えることにより、(p,q)を次のようにパラメータ表示できる。
    p = 2u0k0rs-p0(g0s2+k0r2) ----------- (8)
    q = q0(g0s2-k0r2) ----------- (9)
k0*(7)に、(8),(9)を代入すると、4次方程式
    z2 = z1r4+z2r3s+z3r2s2+z4r3+z5s4 ----------- (10)
を得る。ただし、
    z1 = k03(ag0q02+df0q02+f0p02-2h0p0q0) ---------- (11)
    z2 = 4u0k03(h0q0-f0p0) ---------- (12)
    z3 = 2k02(f0(2u02k0-dg0q02+g0p02)-ag02q02) ---------- (13)
    z4 = -4u0g0k02(f0p0+h0q0) ---------- (14)
    z5 = g02k0(ag0q02+df0q02+f0p02+2h0p0q0) ---------- (15)
である。
4次方程式(10)が解(r,s)を持てば、(8),(9)から(p,q)を得て、(6),(7)より、(u,v)を得る。★より(u,v)の値を入れ換えた後、x=du2/v2を得て、(2)より、w=sqrt(du4+au2v2+ev4), y=duw/v3を得る。


■同様に[1]に記述されている8-descentのアルゴリズムを紹介する。
4-descentでは、4次方程式(10)の解(r,s)の高さが大きいことが問題である。
そこで、(10)の右辺が(r,s)の2次式の積に分解できたと仮定する。つまり、
    z1r4+z2r3s+z3r2s2+z4r3+z5s4 = (u1r2+u2rs+u3s2)(v1r2+v2rs+v3s2)----------- (17)
とする。ここで、u1,u2,u3,v1,v2,v3は有理整数であり、以下を満たす。
    z1 = u1v1
    z5 = u3v3
    z2 = u1v2+v1u2
    z4 = u3v2+v3u2
    z3 = u1v3+u2v2+u3v1

次の2つの2次方程式を考察する。
    u1r2+u2rs+u3s2 = k1m2 ----------- (18)
    v1r2+v2rs+v3s2 = k1t2 ----------- (19)
ここで、k1はsquarefreeである。k1は、(18),(19)の左辺の 2次方程式の終結式
    u12u32-u1u2v2v3-2u1u3v1v3+u1u3v22+u22v1v3-u2u311v2+u32v12 ---------- (20)
を割り切る。
2次方程式(19)の1つの解(k1,t1,r1,s1)を見つけることができたら、(r,s)を以下のように、パラメータ表示できる。
    r = i2k1r1-2ijk1t1+j2(r1v1+s1v2) ---------- (21)
    s = s1(i2k1-j2v1) ---------- (22)
k1*(18)を(21),(22)で置き換えると、以下の4次式が平方数となることが必要である。
    c1i4+c2i3j+c3i2j2+c4ij3+c5j4 ------------ (23)
ただし、
    c1 = k13(r12u1+r1s1u2+s12u3) ---------- (24)
    c2 = -2k13t1(2r1u1+s1u2) ---------- (25)
    c3 = k12(4k1t12u1+2r12u1v1+2r1s1u1v2+s12(u2v2-2u3v1)) ---------- (26)
    c4 = -2k12t1(2r1u1v1+s1(2u1v2-u2v1)) ---------- (27)
    c5 = k1(r12u1v12+r1s1v1(2u1v2-u2v1)+s12(u1v22-v1(u2v2-u3v1))) ---------- (28)
である。
4次式(23)が平方数になる(i,j)を見つけたら、(21),(22)より、(r,s)が求まり、4-descentと同様に(p,q),(u,v),(x,y)が順に求まる。


■Allan J. MaxLeodの論文[1]では、UBASICのプログラムをコンパイルできる高級言語に変換して、200MHzまたは300MHz PCで実行している。
ここでは、4-descent, 8-descentのアルゴリズムをpari/GPでプログラムしてみる。
今回より、pari-2.1.4および(gpコンパイラである)gp2c-0.0.1pl1を使用してみた。
4-descent,8-descentによって、Loox T9/80W(Crusoe 5800/800MHz)上で、7が合同数であることを確認する。
(1)4-descent
bash-2.05a$ gp2c-run -g 4-descent.gp
Reading GPRC: ./gp2c_gprc ...Done.

                  GP/PARI CALCULATOR Version 2.1.4 (released)
                       i386 running netbsd 32-bit version
               (readline v4.2a enabled, extended help available)

                       Copyright (C) 2002 The PARI Group

PARI/GP is free software, covered by the GNU General Public License, and 
comes WITHOUT ANY WARRANTY WHATSOEVER.

Type ? for help, \q to quit.
Type ?12 for how to get moral (and possibly technical) support.

   realprecision = 28 significant digits
   seriesprecision = 16 significant terms
   format = g0.28

parisize = 4000000, primelimit = 500000
gp> congr(7,9,9,9)
[x,y]=[112/9, 980/27]
time = 113 ms.
%1 = 1
gp> \q
Good bye!
(2)8-descent
bash-2.05a$ gp2c-run -g 8-descent.gp
Reading GPRC: ./gp2c_gprc ...Done.

                  GP/PARI CALCULATOR Version 2.1.4 (released)
                       i386 running netbsd 32-bit version
               (readline v4.2a enabled, extended help available)

                       Copyright (C) 2002 The PARI Group

PARI/GP is free software, covered by the GNU General Public License, and 
comes WITHOUT ANY WARRANTY WHATSOEVER.

Type ? for help, \q to quit.
Type ?12 for how to get moral (and possibly technical) support.

   realprecision = 28 significant digits
   seriesprecision = 16 significant terms
   format = g0.28

parisize = 4000000, primelimit = 500000
gp> congr(7,9,9,9,9)
[x,y]=[-49/25, -1176/125]
time = 260 ms.
%1 = 1
gp> \q
Good bye!




[参考文献]


Last Update: 2005.06.12
H.Nakao

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