読者です 読者をやめる 読者になる 読者になる

猫尾製作所

あまりアテにしないでね

Q[sqrt(D)]は四則で閉じているか

数学 代数学 連分数

前回の記事では、ある集合がある演算について閉じているとはどういうことかを説明いたしました。

今回はその発展として整数 D に対して、有理数にその平方根を添加したもの(体と呼ばれるらしいですが、私もそこらへんは厳密には勉強不足です)  \mathbb{Q}[\sqrt{D}] は四則演算(加減乗除)に関して閉じているか否かを検証します。これは整数の平方根の連分数展開、及びディオファントス方程式の特別な形  x^2 - D y^2 = \pm 1 を解くプログラムを考えている途中に考えたことです。

さて、まず  \mathbb{Q}[\sqrt{D}] という集合の意味合いから確認。これは次のようなものです。

 \mathbb{Q}[\sqrt{D}] = \{ a + b \sqrt{D} \, | \, a, b \in \mathbb{Q} \}

抽象的過ぎてわかりにくいので、例によって例示します。たとえば D = 2 のときは  \mathbb{Q}[\sqrt{2}] = \{ a + b \sqrt{2} \, | \, a, b \in \mathbb{Q} \} となりますね。これは (有理数)+(有理数)×√2 という形で表される実数の全てからなる集合ということです。この集合の元には 1, -2/5, -√2, -3+2√2, (5/4)+(3/2)√2, -3.14+1.59√2, (3+5√2)/7 … などがあります。そして、√2 は無理数ですのでこの集合の要素 r が a+b√2 という形で書かれたら、別の、例えば c+d√2 という形では書くことができません。

お次は、先程のような形式での集合の表し方についての例示です。

  •  \mathbb{Q}[\sqrt{3}] = \{ a + b \sqrt{3} \, | \, a, b \in \mathbb{Q} \}
  •  \mathbb{R}[\mathrm{i}] = \{ a + \mathrm{i} b \, | \, a, b \in \mathbb{R} \} = \mathbb{C}(実数から複素数への拡張ですね)
  •  \mathbb{N}_0[-1] = \{ a + (-1)b \, | \, a, b \in \mathbb{N}_0 \} = \mathbb{Z} (0以上の整数から負の数を含む整数への拡張ですね)
  •  \mathbb{Z}[\mathrm{i}] = \{ a + \mathrm{i} b \, | \, a, b \in \mathbb{Z} \} (ガウス整数と呼ばれるものです。複素平面上の格子点に対応する複素数です。実部と虚部が共に整数である複素数といいかえることもできます)

本題に戻って

 \mathbb{Q}[\sqrt{D}] という集合に戻りましょう。この集合を S とおきます。今回の記事で考えたいことは、集合 S は四則演算で閉じているかどうかと言うことです。ただし、除法の際には 0 だけを割る数から除外して考えることにします。

a+b√D, c+d√D ∈ S に対して、

  • 加法 (a+b√D) + (c+d√D) = (a+c) + (b+d)√D
  • 減法 (a+b√D) - (c+d√D) = (a-c) + (b-d)√D
  • 乗法 (a+b√D) * (c+d√D) = (ac+bdD) + (ad+bc)√D
  • 除法 (a+b√D) / (c+d√D) = (a+b√D)(c-d√D) / (c+d√D)(c-d√D) = ((ac-bdD) + (-ad+bc)√D) / (c^2 - d^2*D)

係数は全て有理数であることより(平方根の形のオブジェクトは √D しか出てこない)、S が四則演算で閉じていることが証明されます。これを使って整数の平方根を含む式の連分数展開を厳密な形で(プログラミングでも)出すことができます。