原始ピタゴラス数

提供: testwiki
2024年3月27日 (水) 17:35時点における223.218.170.62 (トーク)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動
原始ピタゴラス数の三分木の第4層まで。この木にはモレ・ダブリがない。

原始ピタゴラス数(げんしピタゴラスすう、テンプレート:Lang-en-short)とは、ピタゴラス数のうち3つの数が互いに素であるものをいう。つまり、自然数の3つ組 テンプレート:Math2 であって、

をともに満たすもののことである。

概要

3個の自然数の組 テンプレート:Math2 がピタゴラス数であることは、その最大公約数テンプレート:Mvar として テンプレート:Math2 と表すと、テンプレート:Math2 がピタゴラス数であることと同値である。ゆえに、ピタゴラス数には テンプレート:Math2 のみに着目し、これは原始ピタゴラス数と呼ばれている。

ピタゴラス数が原始的(あるいは (テンプレート:En) とも言う)であることと、3個の自然数のうちある2個が互いに素であることは同値である(一般に、ピタゴラス数 テンプレート:Math2 について テンプレート:Math2 が成り立つ)。

原始ピタゴラス数には重複なく生成する式、そしてそれを効率良く列挙するアルゴリズムが知られており、そのアルゴリズムによって原始ピタゴラス数全体を三分木で表すことができる。 テンプレート:See also

リスト(三分木を含まない)

原始ピタゴラス数 テンプレート:Math2 の3数の表示順は、テンプレート:Mvar を斜辺とするのが一般的であるが、その上で、

テンプレート:Math2 は偶奇が異なる(#生成式参照)ので、

がある。

ユークリッドの式では テンプレート:Mvar を偶数辺、ブラフマグプタの式では テンプレート:Mvar を偶数辺としていることが多い。

ここでは テンプレート:Math2 とし、テンプレート:Mvar の小さい順に並べると、テンプレート:Math2 までは以下の47通りである:

(3, 4, 5) (5, 12, 13) (8, 15, 17) (7, 24, 25)
(20, 21, 29) (12, 35, 37) (9, 40, 41) (28, 45, 53)
(11, 60, 61) (16, 63, 65) (33, 56, 65) (48, 55, 73)
(13, 84, 85) (36, 77, 85) (39, 80, 89) (65, 72, 97)
(20, 99, 101) (60, 91, 109) (15, 112, 113) (44, 117, 125)
(88, 105, 137) (17, 144, 145) (24, 143, 145) (51, 140, 149)
(85, 132, 157) (119, 120, 169) (52, 165, 173) (19, 180, 181)
(57, 176, 185) (104, 153, 185) (95, 168, 193) (28, 195, 197)
(84, 187, 205) (133, 156, 205) (21, 220, 221) (140, 171, 221)
(60, 221, 229) (105, 208, 233) (120, 209, 241) (32, 255, 257)
(23, 264, 265) (96, 247, 265) (69, 260, 269) (115, 252, 277)
(160, 231, 281) (161, 240, 289) (68, 285, 293)

このうち、第1項が偶数であるものは22個である。

生成式

原始ピタゴラス数 テンプレート:Math2 の生成式は、ユークリッドの式ブラフマグプタの式が知られている。ただし テンプレート:Math2 の順番は流儀によりまちまちである。

ユークリッドの式[1]またはピタゴラスの公式[2]とは、

テンプレート:Math2 または テンプレート:Math2

の形のことである。ここで、テンプレート:Math2 は自然数で

を満たす。

これに対してブラフマグプタの式とは、

テンプレート:Math2 または テンプレート:Math2

の形のことである。ここで、テンプレート:Math2 は自然数で

を満たす。

ユークリッド式とブラフマグプタ式には テンプレート:Math2 の関係があり、本質的には同じである。ただし、周長は、ユークリッド式では テンプレート:Math2、ブラフマグプタ式では テンプレート:Math2 となり、ブラフマグプタ式の方が式が簡単になることがある。

数学ガール』(結城浩著)では、ユークリッドの式は「ピタゴラ・ジュース・メーカー」とネーミングされて取り上げられている[3]

生成式の導出

ユークリッドの式は、以下のようにして導出できる。

3段構成で証明される。

  1. テンプレート:Mvarテンプレート:Mvar は偶奇が異なる
  2. テンプレート:Mvar が偶数とすると、テンプレート:Math2 は平方数
  3. テンプレート:Math2 または テンプレート:Math2


1. テンプレート:Math2 は原始的であるから、テンプレート:Mvarテンプレート:Mvar の少なくとも1つは奇数である。

テンプレート:Mvarテンプレート:Mvar も奇数であると仮定すると、

a2=(2k+1)2=4k2+4k+11(mod4)
b21(mod4)
 a2+b21+1=2(mod4)

これは テンプレート:Math2 に矛盾。

故に、テンプレート:Mvarテンプレート:Mvar は偶奇が異なる。


2. テンプレート:Mvar が偶数、テンプレート:Mvar が奇数の場合について証明する(他の場合は テンプレート:Math2 を入れ替えればよい)。

テンプレート:Math2テンプレート:Mvar は整数)とおく。

4a'2=(2a)2=a2=c2b2=(c+b)(cb)

ここで テンプレート:Math2テンプレート:Math2 は偶奇が一致するから、(ともに奇数だとすると上の等式を満たさないため)

テンプレート:Math2テンプレート:Math2 は自然数)

とおくことができる。

ここで テンプレート:Math2 は互いに素であるから、テンプレート:Math2 は互いに素であることが導ける。さらに テンプレート:Math2 は偶奇が一致するから テンプレート:Math2 は奇数である。

逆に、テンプレート:Math2 は互いに素で テンプレート:Math2 が奇数ならば、テンプレート:Math2 は互いに素であることも導ける。

4a'2=2u2v=4uv
 a'2=uv

テンプレート:Math2 は互いに素だから、テンプレート:Math2テンプレート:Math2 は互いに素な自然数)とおくことができる。

このとき テンプレート:Math2

テンプレート:Math2 より テンプレート:Math2

テンプレート:Math2 は奇数より テンプレート:Math2 は奇数。


3. 2.より テンプレート:Math2

a2=c2b2=(c+b)(cb)=2m22n2=4m2n2
テンプレート:Math2

生成アルゴリズム

タイルの操作

原始ピタゴラス数全体を分類するために、ピタゴラスの生成式における テンプレート:Math2(ただし テンプレート:Math2)の「退化」を次で定義するテンプレート:要出典

2辺が テンプレート:Math2 の長方形と2辺が テンプレート:Math2 の長方形の内、含む方から含まれる方を取り除いて出来る長方形(対称差)の短辺を テンプレート:Mvar、長辺を テンプレート:Mvar とする。

この「退化」は テンプレート:Math の値により、3タイプに分類される:

こうして得られた新たな テンプレート:Math2 も満たすべき条件:

を満たすことが、ユークリッドの互除法と仮定より従う。しかも、「退化」を1回施すと テンプレート:Mvar は狭義減少する。

この「退化」を繰り返していくと、有限回で テンプレート:Math2 になる。

(なぜなら、テンプレート:Math2 より有限回で テンプレート:Math2 になる。このとき偶奇性より テンプレート:Math2テンプレート:Mvar は自然数)の形になるから。)

逆に考えると、操作 u, a, d は全単射と分かる。実際に、操作 u, a, d の逆写像「添加」はそれぞれ

となり、それぞれ

  • 長辺を一辺とする正方形2個から、もとの長方形を除く
  • 長辺に正方形を2個くっつける
  • 短辺に正方形を2個くっつける

に対応している(短辺は広義増加、長辺は狭義増加する)。

故に、全ての テンプレート:Math2テンプレート:Math2 に「添加」を有限回施すことで、モレ・ダブリがなく得られると分かる。故に、原始ピタゴラス数全体は、テンプレート:Math2 から枝分かれした、モレ・ダブリのない、三分木で分類されると分かる。

上記の議論は、ブラフマグプタの式でも同様にできる。ただしユークリッドの式とブラフマグプタの式では、u, a, d の定義の順序を逆にする必要がある(でないと操作が対応しなくなる)。

細矢治夫は著書で、U は up、D は down、A は across を意味していると述べている[4]

(例)

テンプレート:Math2テンプレート:Math2 からの「添加」列を求める。

テンプレート:Math2
テンプレート:Math2
テンプレート:Math2

故に、テンプレート:Math2 は、テンプレート:Math2 に操作 D, A, U を順に施したものであると分かる。//


歴史的には、初期値 テンプレート:Math2

操作U を繰り返して得られる原始ピタゴラス数の列は「ピタゴラス系列」、
操作A からは「フェルマー系列」、
操作D からは「プラトン系列」

と呼ばれている。

原始ピタゴラス数の変換式

全ての原始ピタゴラス数 テンプレート:Math2テンプレート:Math転置を表す)は、テンプレート:Math2 に次の行列 テンプレート:Math2 を左から有限回掛ける(作用させる)ことで、一意に得られることが、前節の「添加」より分かる:

  • U=(122212223)
  • A=(122212223)
  • D=(122212223)

ここから次のことが分かる[5]:直角三角形において、

操作U は、斜辺と偶数辺の差を保つ。
操作A は、直角をはさむ2辺の差を [[反数|テンプレート:Math2倍にする]]。
操作D は、2個の奇数の長さの差を保つ。

分数表示による求値

テンプレート:Math2 の操作は、テンプレート:Math(これは既約分数である)と分数表示すると、関数値の計算により求められるテンプレート:要出典

#タイルの操作で表した「退化」u, a, d を分数表示すると

となる。

(例1)

例えば、テンプレート:Math2 の「退化」列は、

テンプレート:Math2
テンプレート:Math2
テンプレート:Math2

となり、テンプレート:Math2 とおくと

テンプレート:Math2

と分かる。

(例2)テンプレート:Math2

テンプレート:Math2
テンプレート:Math2
テンプレート:Math2

となり、

テンプレート:Math2

と分かる。

(例3)テンプレート:Math2

テンプレート:Math2
テンプレート:Math2
テンプレート:Math2
テンプレート:Math2

となり、

テンプレート:Math2

と分かる。//

この分数表示は計算機に入れやすい。これをプログラミング言語Javaメソッドとして実装すると、

    public static boolean inverseUAD( int m, int n ) {
        if (!(0 < m) || !(m < n)) {
            System.out.println(" m と n の値が 0 < m < n になっていません。");
            return false;
        }
        
        if (Arithmetic.gcm(m, n) > 1 ) {
            System.out.println(" m と n の値が 互いに素ではありません。");
            return false;
        }

        if (((n - m) % 2) == 0 ) {
            System.out.println(" m と n の偶奇数は異なっていなければなりません。");
            return false;
        }
        System.out.print("( " + m + ", " + n + " ) = ");
        System.out.print("{ " + ((n * n) - (m * m)) + ", " +
                        (2 * m * n) + ", " + ((n * n) + (m * m)) + " } = ");
        return _inverseUAD(m, n);
    }

    private static boolean _inverseUAD( int m, int n ) {
        // e
        if ((m == 1) && (n == 2)) {
            System.out.println("e");
            return true;
        }

        // D
        if (n > (m + m + m)) {
            System.out.print("D");
            return _inverseUAD(m, n - (m + m));
        }

        // A
        if (n > (m + m)) {
            System.out.print("A");
            return _inverseUAD(n - (m + m), m);

        }

        // U
        System.out.print("U");
        return _inverseUAD((m + m) - n, m);
    }

のようになる。これにより例えば

テンプレート:Math2

などが求まる。

由来と歴史

原始ピタゴラス数の三分木構造は古代バビロニアにおいてすでに発見されていたようであることが、プリンプトン322から窺われる。ギリシャ数学においては、ピタゴラスおよびユークリッドによって興味を持たれていたものの、一部が失われていたようである。三分木に現れる「プラトン系列」「ピタゴラス系列」などは再発見されたようであるが、もう一本の枝(直角をはさむ2辺の差が1である系列)はクラウディオス・プトレマイオスによって発見されていたかもしれないが、17世紀フェルマー[6]に着目されるまでヨーロッパ数学界では少なくとも周知はされていなかったようである。直角をはさむ2辺の差が1である系列は古代バビロニアでは知られていたようであることがYBC 7289から窺われる。

操作U・D・A により「原始ピタゴラス数全体は重複なく三分木をなす」ことが、1963年にオランダのバーニング (F.J.M.Barning)[7]1970年にアメリカのホール (A.Hall)[8]、また1993年[9]に日本の亀井喜久男によって独立に発見・発表された[4]。ただし、バーニング、ホール、亀井の何れの発表についても、各操作はどの表現行列に該当するか?という逆問題が未解決だった。実際に細矢治夫2012年の著書で「バーニングとホールの(中略)理論の大きな泣き所は, 任意の二つの規約ピタゴラスの三角形を選んだときに, その両者を結ぶU, D, A の組合せが存在するかの判定, またもし存在するとしてもその組合せを知る簡単な手だてがないことである」と述べている[4]

フィボナッチ数との関連

フィボナッチ数は幾何学的には、長方形に正方形をくっつけていって出来る長方形の長辺であり、この図形を「(一般の)フィボナッチ螺旋」と呼ぶ(特に初期値が単位正方形の場合は、いわゆるフィボナッチ数列に対応している)。これに対してユークリッドの互除法はフィボナッチ螺旋の逆回しといえる。故に、フィボナッチ数は互いに素である。

ただし、原始ピタゴラス数の生成アルゴリズムについては、テンプレート:Math2(あるいは テンプレート:Math2)の偶奇性の条件も必要であるため、長方形にくっつける正方形が2個ずつであるという点が異なる。

脚注

テンプレート:Reflist

外部リンク

  1. テンプレート:Citation
  2. テンプレート:Cite book
  3. テンプレート:Cite book
  4. 4.0 4.1 4.2 細矢治夫トポロジカル・インデックス―フィボナッチ数からピタゴラスの三角形までをつなぐ新しい数学』初版2012年8月20日、改訂版2021年9月17日。
  5. 小林吹代『ピタゴラス数を生み出す行列の話』ベレ出版 (2008/7/15)
  6. テンプレート:Cite book
  7. F.J.M,Barning, Math. Centrum American Afd. Zuivere Wisk. ZW-011 (1963) 37.
  8. A. Hall, "Genealogy of Pythagorean Triads", The Mathematical Gazette, volume 54, number 390, 1970年12月、pp.377-379. [1]
  9. Focus Gold通信vol06 20130801