Homeに戻る  一覧に戻る 

Fermat's First Theorem


[2003.09.18]Fermatの第一定理


■参考文献[1](p23, Ex.1.33)によると、Fermatの第一定理は、次のようなものである。
aを正有理数で、かつ、任意の有理数bに対して、a != 2b3とする。[この条件は筆者が追加した。]
方程式
     E': x3-y3 = a ------ (1)
が正有理数解(x,y)を持つのは、方程式
     E: x3+y3 = a ------ (2)
が正有理数解(x,y)を持つときであり、かつ、そのときに限る。

■以下では、Fermatの第一定理を証明する。
aは正有理数なので、E,E'は(非特異)楕円曲線である。
2つの楕円曲線E,E'は、双有理変換φ:(x,y)→(x,-y)[逆変換φ-1:(x,y)→(x,-y)]により、Q-isomorphicであることは、直ちに分かる。
以下では、楕円曲線Eの有理点を考察する。

■最初に、方程式(2)が正有理数解を持つならば、方程式(1)も正有理数解を持つことを示す。
P(x,y)をEの有理点かつx, y > 0とする。
x=yならば、a = 2x3であり、aの仮定[有理数の3乗数の2倍に等しくないこと]に反する。よって、x!=yとして良い。
さらに、[x < yならば、x,yを交換することにより]一般性を失わず、x > yとして良い。
このとき、Pの[E上の]2倍点2P(X,Y)を計算すると、
     X = -y(x3+a)/(x3-y3),
     Y = x(y3+a)/(x3-y3)
である。
実際に、(X,Y)はEの有理点であることをasirで確認できる。
bash-2.05a$ asir
This is Risa/Asir, Version 20011226 (Kobe Distribution).
Copyright (C) 1994-2000, all rights reserved, FUJITSU LABORATORIES LIMITED.
Copyright 2000,2001, Risa/Asir committers, http://www.openxm.org/.
GC 5.3, copyright 1999, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.
PARI 2.2.1(alpha), copyright (C) 2000,
     C. Batut, K. Belabas, D. Bernardi, H. Cohen and M. Olivier.
[0] A=x^3+y^3;                
x^3+y^3
[1] F=(-y*(x^3+A))^3+(x*(y^3+A))^3;
x^12-2*y^3*x^9+2*y^9*x^3-y^12
[2] fctr(F);
[[1,1],[x-y,3],[x^2+y*x+y^2,3],[x+y,1],[x^2-y*x+y^2,1]]
[3] F-A*(x^3-y^3)^3;       
0
よって、
     X3+Y3 = a
つまり、
     Y3-(-X3) = a ------ (3)
である。
(3)および x > y > 0より、 (Y, -X)は楕円曲線E'の有理点であり、-X > 0, Y > 0であることが分かる。
つまり、方程式(2)は正有理数解(Y, -X)を持つ。

■次に、方程式(1)が正有理数解を持つならば、方程式(2)も正有理数解を持つことを示す。
(x,y)を楕円曲線E'の有理点、かつ x,y > 0とする。
よって、
     x3-y3 = a
である。a > 0かつx2+xy+y2 > 0なので、x > yである。
これより、P(x,-y)が楕円曲線Eの有理点であることが分かる。
Pの[E上の]2倍点2P(X,Y)を計算すると、
     X = y(x3+a)/(x3+y3),
     Y = x(-y3+a)/(x3+y3)
となる。
ここで、
     -y3+a = x3-2y3
     x3+a = 2x3-y3
     X3+Y3=a
となる。
(case i)x3-2y3 = 0のとき
x-2(1/3)y=0なので、x=y=0を得る。これは、仮定x,y > 0に反する。

(case ii)x3-2y3 > 0のとき
Y > 0となり、(X,Y)はEの有理点かつX,Y > 0である。

(case iii)x3-2y3 < 0のとき
1 < (x/y) < 2(1/3)である。
n >= 0に対して、Pの2n倍点を2nP(Xn,Yn)とする。
X0 = x, Y0 = -yである。
仮定より、
     X0 > 0, Y0 < 0,
     -2(1/3) < X0/Y0 < -1
であることは、容易に分かる。

P(X0,Y0)の2倍点2P(X1,Y1)を計算すると、
     X1 = -Y0(2X03+Y03)/(X03-Y03),
     Y1 = X0(X03+2Y03)/(X03-Y03)
となる。X03-Y03 > 0, X1+Y1 > 0, X1 > 0, Y1 < 0であることにも注意する。
簡単な計算により、
     (X1+Y1)/(X0+Y0) = {-Y0(2X03+Y03)+X0(X03+2Y03)}/{(X03-Y03)(X0+Y0)}
         = (X0-Y0)2/(X02+X0Y0+Y02) = ((X0/Y0)-1)2/((X0/Y0)2+(X0/Y0)+1) --------- (4)
となる。
ここで、f(x) = (x-1)2/(x2+x+1)とすると、 f'(x) = 3(x-1)(x+1)/(x2+x+1)2であるので、
-2(1/3) < x < -1の範囲で、f'(x) > 0となり、f(x)は(狭義)単調増加である。
よって、3.847322101863072639518916246≒f(-2(1/3)) < f(x) < f(-1)=4 を得る。
gp>  g(x)=(x-1)^2/(x^2+x+1)
time = 0 ms.
gp>  g(-1)
time = 0 ms.
%41 = 4
gp>  g(-2^(1/3))
time = 6 ms.
%42 = 3.847322101863072639518916246
(4)より、C=f(-2(1/3))とすると、
     C > 1,
     X1+Y1 > C(X0+Y0)
となる。

同様に、
     Xk > 0, Yk < 0,      -2(1/3) < (Xk/Yk) < -1
かつ、
     Xk+1 > 0, Yk+1 < 0
ならば、
     (Xk+1+Yk+1) > C(Xk+Yk)
となる。
数学的帰納法により、1 <= k <= nに対して、Pの2k倍点2kP(Xk,Yk)が全て、
     Xk > 0, Yk < 0,      -2(1/3) < (Xk/Yk) < -1
を満たせば、
     (Xn+Yn) > Cn(X0+Y0)
が成立する。

全てのn >= 1に対して、
     Xn > 0, Yn < 0,      -2(1/3) < (Xn/Yn) < -1
が満たされると仮定する。C > 1より、あるnに対して、
     (Xn+Yn) > a(1/3)
となる。補題1より、Yn > 0 となるが、仮定Yn < 0に反する。

よって、
     Xn > 0, Yn > 0 ------ (5)
または、
     Xn > 0, Yn < 0, Xn/Yn > -2(1/3) ------- (6)
を満たすnが存在する。
(5)のとき、(Xn,Yn)は(2)の正有理数解である。
(6)のとき、(case ii)と同様にして、(Xn+1,Yn+1)は(2)の正有理数解である。
どちらの場合でも、(2)の正有理数解が存在する。

■補題1: X3+Y3=a, X+Y > 0, XY <= 0 ならば X+Y <= a(1/3)である。
[証明]
X+Y > 0, XY <= 0 より、
     a = X3+Y3 = (X+Y){(X+Y)2-3XY} >= (X+Y)3
である。よって、X+Y <= a(1/3)である。
等号は、X=0またはY=0の時に成立する。

■a=7の場合、E7:x3+y3のMordell-Weil群E7(Q)は、
     E7(Q) = { n(2,-1) : n \in Z} = Z
である。
(Xn,Yn)=2n(2,-1)とXn+Yn をpari/gpで計算すると、以下のようになる。
gp> read("fft.gp")
time = 29 ms.
gp> q=[2.0,-1.0];for(i=1,30,q=e2a(q);print("2^",i,"[2,-1]=",q," ; ",e2h(q)))
2^1[2,-1]=[1.666666666666666666666666666, 1.333333333333333333333333333] ; 2.999999999999999999999999999
2^2[2,-1]=[-6.863387978142076502732240437, 6.912568306010928961748633879] ; 0.04918032786885245901639344256
2^3[2,-1]=[-3.345237147097220931253223742, 3.541950937229736985219158207] ; 0.1967137901325160539659344656
2^4[2,-1]=[-1.316715567019314453204375088, 2.101649670868864284395046556] ; 0.7849341038495498311906714680
2^5[2,-1]=[0.8571747622055959858528741659, 1.853748626666014992905347085] ; 2.710923388871610978758221250
2^6[2,-1]=[2.463902353825488276935818065, -1.996485067743955096542836355] ; 0.4674172860815331803929817092
2^7[2,-1]=[1.913030695132810966510177091, -0.1029927187714875225872596173] ; 1.810037976361323443922917473
2^8[2,-1]=[0.2059372301367383992799310178, 1.912135270204102595666947803] ; 2.118072500340840994946878820
2^9[2,-1]=[1.919310428923148614269316820, -0.4126472258489133530937541261] ; 1.506663203074235261175562694
2^10[2,-1]=[0.8131127889947662541708056129, 1.862650912505683167731402312] ; 2.675763701500449421902207925
2^11[2,-1]=[2.369676825645800997844883697, -1.847560263709780923236307754] ; 0.5221165619360200746085759430
2^12[2,-1]=[1.912877621662826304669630535, 0.08377590300786879162090852674] ; 1.996653524670695096290539062
2^13[2,-1]=[-0.1675729201194200779301097513, 1.913359725644825987636136860] ; 1.745786805525405909706027109
2^14[2,-1]=[1.909506292197722256039510872, 0.3348083547746264697634662809] ; 2.244314646972348725802977153
2^15[2,-1]=[-0.6750603633623504836035388817, 1.940552982223283255167716295] ; 1.265492618860932771564177413
2^16[2,-1]=[1.705378649927644724329619784, 1.268310607821838116473262054] ; 2.973689257749482840802881838
2^17[2,-1]=[-5.195546737478696926448023623, 5.280587111262324105453573654] ; 0.08504037378362717900555003151
2^18[2,-1]=[-2.447433387131066086403297000, 2.787527651384017106294402788] ; 0.3400942642529510198911057888
2^19[2,-1]=[-0.5878961859831868370018479796, 1.931263887241843922005616304] ; 1.343367701258657085003768325
2^20[2,-1]=[1.772314508850871730198412351, 1.127406579668508831875309742] ; 2.899721088519380562073722093
2^21[2,-1]=[-3.427197277012624653416911057, 3.615334958770324045242598869] ; 0.1881376817576993918256878114
2^22[2,-1]=[-1.373874545865076529279592989, 2.124817509648758688307725604] ; 0.7509429637836821590281326143
2^23[2,-1]=[0.7683591295134370881470746521, 1.870683822580825564065403997] ; 2.639042952094262652212478650
2^24[2,-1]=[2.288514600064629157539216525, -1.708336834328637545376395720] ; 0.5801777657359916121628208051
2^25[2,-1]=[1.911103809768892639056549794, 0.2716297947695613050316728475] ; 2.182733604538453944088222641
2^26[2,-1]=[-0.5456061234117120776559078851, 1.927613301400552231250950697] ; 1.382007177988840153595042812
2^27[2,-1]=[1.799385908073696400001757939, 1.054917803878139234660051073] ; 2.854303711951835634661809013
2^28[2,-1]=[-2.908473410860774788696200822, 3.161631955375378309451109399] ; 0.2531585445146035207549085776
2^29[2,-1]=[-0.9901912772542172407044199963, 1.997568839358167198092645185] ; 1.007377562103949957388225189
2^30[2,-1]=[1.346901385382553130421971916, 1.657847869032024944412122255] ; 3.004749254414578074834094172
time = 172 ms.
gp> q=[2,-1];for(i=1,6,q=e2a(q);print("2^",i,"[2,-1]=",q," ; ",e2h(q)*1.0))
2^1[2,-1]=[5/3, 4/3] ; 3.000000000000000000000000000
2^2[2,-1]=[-1256/183, 1265/183] ; 0.04918032786885245901639344262
2^3[2,-1]=[-2452184545855/733037580903, 2596383146704/733037580903] ; 0.1967137901325160539659344658
2^4[2,-1]=[-31126075685535240014086145632116470469372521640544/23639179535179492707527243864413154701817508224217, 49681273889719973050061797811957621523051394754815/23639179535179492707527243864413154701817508224217] ; 0.7849341038495498311906714688
2^5[2,-1]=[3095781611169695337192340670536078907698560617855789087921982220101083172874176530311803582950173412096466303948460427347893574501243229963711484387342234868194997718131159029302279161690867214408705/3611610779584715139392722499598900953712370154865896924348573588417371166048201705187253635696876488315145185185376230281402160927152617692247210975144685729956769824935733906546710538533732970571303, 6695018522707341467992646918535979734177368639681271359380772196651364501288812144636976315357127308646065871955166153623518373331261052264136675905729412735191273548416177751368985601932983388035904/3611610779584715139392722499598900953712370154865896924348573588417371166048201705187253635696876488315145185185376230281402160927152617692247210975144685729956769824935733906546710538533732970571303] ; 2.710923388871610978758221253
2^6[2,-1]=[2406402167972196449783255391912738572328079873067476936677023993458969208651021570228708518744700692156561127478865106762648266956541327715165917599466126923735911633301571943206876501987305819368069560346037898272733526580817119901396316034851966278674164775552092555565266130853029614790421933176162168926948278898849877707159655110937239554073008829663812642344616467763692101881742641048108540301407187783921049578908968220176478546879909612698998108866079021535803070184685983211460171057550321576872747379397608736463507849803562903184485993040938007329511851229540323328755392649940992370666825120219189491223432851837949711511661161680148811154133324088154126564929592116070255864327754727775344176493274865686661596269757052270980072393663510471472358979135462043755136130658494367446656/976662960784944964553088650787328956740162949267904595579514138669440930943987912914789900799916035590175599664730916436642380559276447485938839450371516025276412543538608572629307189490559052994993817027905616289947318396175240615195630052403821493067611159142548779881665532705539639106587137807861234753579429253675652358491470741930084233702631626506739849016776689682977068732963518482467465320802920946072050255098847846472531945710789159963059475318853760669298017765405097351476910615727358195472742305093232891988170316064655525851179723560594119824298729465741502858063105057467643173146641247931017780328021851237447697771326042368062260526647181833099491635375358056003787617557820342446975603399166097264832482255060850527884769997851165150597860409350505715344574497101236021382617, -1949893017425742607427661954459313179617015152429035528899219833919973728677896442927136407985387927632150174511564914667786792366286946522179117487126142141979649018792676104432775698925021308251553855715586059299146306031206530341743136775943094055361531218112783092439789340535776918661671765626580124491470337520125273384011981054853353918297989401054470255219209235131480006162489580838546032154100869339989167592383458262302410822490875920523399023863855617672807671893215633385835883694232325671291430242815651560338709735681184761062374382826874697647590793337981663039425132300156110638690024314419478824221434434278044993490772866244669033842209351553350775463424176061310617539506094413092172432758540864327277570368885400894950443362892372011516190065434535426889735496431193738276865/976662960784944964553088650787328956740162949267904595579514138669440930943987912914789900799916035590175599664730916436642380559276447485938839450371516025276412543538608572629307189490559052994993817027905616289947318396175240615195630052403821493067611159142548779881665532705539639106587137807861234753579429253675652358491470741930084233702631626506739849016776689682977068732963518482467465320802920946072050255098847846472531945710789159963059475318853760669298017765405097351476910615727358195472742305093232891988170316064655525851179723560594119824298729465741502858063105057467643173146641247931017780328021851237447697771326042368062260526647181833099491635375358056003787617557820342446975603399166097264832482255060850527884769997851165150597860409350505715344574497101236021382617] ; 0.4674172860815331803929817078
time = 65 ms.

■a=2の場合、Fermatの第一定理は成立しない。
     E2: x3+y3 = 2
の有理点は、(1,1),O=[1:-1:0](無限遠点)に限るので、
     E'2: x3-y3 = 2
の有理点は、(1,-1),O'=[1:1:0](無限遠点)に限る。
よって、E'は有理点(x,y)で、x,y > 0なるものを持たない。


[参考文献]


Last Update: 2005.06.12
H.Nakao

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