(遊びの数論55)

[遊びの数論] 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20
21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40
41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55

遊びの数論54の続き。誤字脱字・間違いがあるかも。


✿ ✿ ✿ ✿ ✿


2026-01-21 二重根号の外し方 正五角形は侮れない

#遊びの数論 #正五角形

正五角形の画像A

問題1 一辺の長さ 2 の正五角形の、対角線の長さが 1 + 5 であることを示したい。

問題2 一辺の長さが 2 の正五角形の、高さ(頂点と反対側の辺の中点を結ぶ垂線の長さ)を求めたい。

問題1の記述が正しいとすれば、問題2は、三平方の定理を使って機械的に解ける。

問題2の解 直角三角形の底辺が 1、高さが ?、斜辺が 1 + 5 なので:
  12 + ?2 = (1 + 5)2
  ∴ ?2 = (1 + 5)2 − 12 = (6 + 25) − 1 = 5 + 25
  ∴ ? = (5 + 25) ∎

二重根号が発生。正五角形関連は、トリッキーな根号処理が絡むことも多く、油断できない。

逆に、正五角形の高さが (5 + 25) であることと一辺の長さが 2 であることが、先に与えられたとすると…。三平方の定理から、対角線の長さを求めるのは同じ手間のようだが、単純計算では:
  (対角線)2 = ((5 + 25))2 + 12 = (5 + 25) + 1 = 6 + 25
  ∴ 対角線 = (6 + 25)
答えは間違ってないけど、対角線の長さは 1 + 5 のはずなので、
  (6 + 25) = 1 + 5
という変形が可能なはず。 (A + B) のような形の「二重根号」を簡約するテクニックは、こういうシチュエーションで役立つ。任意の複素数 a + bi は = a + b−1 なので、複素数 a + bi の平方根 (a + bi) を求めることも、
  (A + −B)
の形の二重根号処理だと捉えることができる。平方根はありふれた計算だし、複素数の平方根を考えなければならないこともある。「二重根号処理なんて、まれなこと」という感じもするけど、案外そうでもなく、応用範囲が広い。「i の平方根」なんかも、二重根号の問題として考えると簡単便利だし。

✿

一辺 2 の正五角形の対角線の長さは、いろんな方法で求めることができる。「一辺 2」ってのは、便宜上の設定。「一辺 1」の方が良ければ、単に「一辺 2」の場合の答えを半分にしてもいい。

正五角形の画像B

問題1の解 正五角形 ABCDE があるとして、(どの対角線でも長さは同じだけど)仮に対角線 BE の長さを求めるとしよう。対角線 AD と対角線 BE の交点を P とすると PB と DC は平行、 PD と BC も平行なので――そして BC = CD は正五角形の辺なので――、 PBCD はひし形。

従って DP は、正五角形の一辺 DE と長さが同じ。よって △EDP は二等辺。 △DBE も、もちろん二等辺。これら二つの二等辺三角形は、底角 E を共有するので、「等しい底角」の大きさが一致。必然的に残りのもう一つの(対応する)角も一致し、二つの三角形は相似。

さて PE の長さを x とすると BE の長さは 2 + x だ(なぜならBP は前記ひし形の一辺で、五角形の一辺と長さが等しい)。相似な二つの三角形について、
  △EDP の底辺と斜辺の比 と △DBE の底辺と斜辺の比
は一致する。
  x ∶ 2 = 2 ∶ 2 + x
  ∴ x(2 + x) = 4 つまり x2 + 2x − 4 = 0

これを解くと x = −1 ± 5。 x は線分の長さなので、正の値
  x = −1 + 5
が題意に適する。結局、求める対角線 BE の長さは:
  2 + x = 2 + (−1 + 5) = 1 + 5 ∎

正五角形の画像C

5 = 2.23606 79774… なので(富士山麓オウム鳴く):
  1 + 5 = 3.23606 79774…
もし一辺の長さが半分の 1 だったら、対角線の長さも半分になって:
  (1 + 5)/2 = 1.61803 39887…
この数値は「黄金比」と呼ばれる。 1.6 は「富士 + 1」の半分、 18 と 03 はそれぞれ「山麓」と「オウム」の半分、等々。

一辺 2 の正五角形の対角線の長さが約 3.2 であることは、作図からも確かめられる。対角線で結ばれた一方の頂点を中心に、半径 2 の円を描き(半径 = 辺の長さ)、他方の頂点を中心に半径 1 の円を描くと(半径 = 辺の長さの半分)、二つの円は交わらず、目分量で約 1/4 の隙間が生じる。対角線の長さは、ざっと 3.25 くらい、と。

✿

いまやこの正五角形の高さは明らか。最初に書いたように:
  (5 + 25)
5 + 25 = 5 + 4.472… = 9.472… なので、その平方根は明らかに 3 よりは大きいが 3.1 よりは小さい(312 = 961 であり、 3.12 = 9.61 は 9.472… と比べ過大)。

正五角形の画像D

実際、再び半径 2 の円と半径 1 の円を描くと、正五角形の高さは 3 よりほんのわずかだけ(目分量で 0.1 程度)大きいことが見て取れる。実際の値は:
  (5 + 25) = 3.07768 35371…

この数の二重根号を簡約することは、できない。

他方、正五角形の高さ(上記)を元に対角線の長さを求めると、最初に書いたように二重根号が生じる:
  対角線 = (6 + 25)

この二重根号は、計算済みの対角線の長さ 1 + 5 と同じ数値のはずだ。

一般に (A ± B) の形の A, B の一方または両方がそれ自身、平方根号を含んでいるとしよう。そのような多重根号に対処するとき、根号下の数たのたちの平方差――つまり、二つの数それぞれを平方して引き算した A2 − B2 の値が――重要な役割を果たす。

(6 + 25) の例では、根号下の数たちの平方差は:
  62 − (25)2 = 36 − 20 = 16
これは平方数 42 に等しい!

(5 + 25) は、数の形は似てるけど、対応する平方差は:
  52 − (25)2 = 25 − 20 = 5
この 5 という数は、平方数ではない!

これが平方数になれば、根号を簡約できる。平方数にならない場合、普通の意味では簡約できない。

✿

具体的なアルゴリズムは次の通り。 (A ± B) が与えられたとき、上記の平方差 d がもし平方数なら、 A と d の平均(足して 2 で割ったもの)を u として、 A の平均からのずれ A − u を v とすると、
  (A ± B) = u ± v
が成り立つ。右辺の ± では、 A ± B の ± と同じ符号を選択。

例1 (6 + 25) の場合、平方差 d = 16(上記)。
  A = 6 と d = 4 の平均 u = (6 + 4)/2 = 5
  A = 6 の平均 u からのずれ v = 6 − 5 = 1
従って (6 + 25) は、
  u + v = 5 + 1 = 5 + 1
に簡約可能!

例2 (11 + 62) の場合、平方差は:
  d = 112 − 62⋅2 = 121 − 72 = 49
これも平方数!
  A = 11 と d = 7 の平均 u = (11 + 7)/2 = 9
  A = 11 の平均 u からのずれ v = 11 − 9 = 2
従って (11 + 62) は、
  u + v = 9 + 2 = 3 + 2
に簡約可能。

例3 (2 + 3) の場合、平方差は:
  d = 22 − 3 = 1
これも平方数だ!
  A = 2 と d = 1 の平均 u = (2 + 1)/2 = 3/2
  A = 2 の平均 u からのずれ v = 2 − 3/2 = 1/2
従って (2 + 3) は、
  u + v = (3/2) + (1/2) = (3)/2 + (1)/2
  = (3 + 1)/2 = (6 + 2)/2
に簡約可能。

✿

上記のような計算法(二重根号外し)は、特に難しい計算ではない。なぜこれでうまくいくのか検討してから(次回)、同じアルゴリズムを「複素数の平方根」などに応用してみたい。(続く)

✿ ✿ ✿


2026-01-22 二重根号なんて怖くない! (5 − 26) = 3 − 2

#遊びの数論

(5 − 26) = 3 − 2 のような「二重根号外し」は、素朴に眺めると謎めいている。なにそれ、 (5 − 2) = 3 ってこと? 入れ子になってる 6 は、どこ行ったの…?

仕組みが分かってみると、実は簡単。上記の例なんかは、一瞬で暗算できる。多重根号簡約の一般論は難しいけど、簡単な「二重根号外し」程度なら、さくっと。

多重根号が簡約できるケースは、比較的まれ。でも同じアルゴリズムが、結構いろんなことに役立つ(複素数の平方根、複素係数の2次方程式、ある種の4次方程式など)。

✿

前回、正五角形の対角線の長さに関連して、二重根号簡約の具体例を挙げた。「二重根号外し」の仕組みの説明。

(A + ℓm) の形の数(A, ℓ は正)を考える。例えば (6 + 25)

m = (2m) のように、平方根の倍数については、一つの平方根にまとめることも可能(例えば 25 = 20)。そこで B = ℓ2m と置くことにすると、シンプルに
  (A + B)  (✽)
の形だけを考えれば十分、ってことになる。

(✽)の形の二重根号を変形して = u + v の形にできたとしよう。つまり、
  (A + B) = u + v  ア
が成り立った、と。そんな等式が、実際に成り立ち得るのか? A, B は与えられた定数、 u, v は未知数なので、前者を使って u, v を表現できれば理想だけど、直観的には「未知数が二つあるのに式が一つしかないんだから、情報不足。解けるわけねぇ」「そもそも左辺は複雑な二重根号。シンプルな右辺と等しくなるなんて、そんなうまい話、あるもんか」という気が、するかもしれない…。けどまぁ、とりあえず、外側の根号を外すため、アの両辺を平方して:
  A + B = u + v + 2(uv)  イ

〔注〕 イ右辺は (u + v)2 = (u)2 + 2(u)(v) + (v)2 = u + 2uv + v による。

仮に A が整数(あるいは一般に有理数)、 B が無理数だとすると――それが典型的なシチュエーションだ――、イ左辺は「有理数と無理数の和」で無理数。それに等しいイ右辺も、当然、無理数。今 u, v がどちらも有理数と仮定すると、イ右辺の u + v は、有理数同士の和なので有理数。イ右辺に無理数成分があるとすれば、平方根 (uv) だけ(ただし無理数の 2 倍も無理数なので、 2(uv) も無理数)。

イ左辺の「有理数の部分」と「それ以外」、イ左辺の「有理数の部分」と「それ以外」は、それぞれ等しくなるはず:
  A = u + v  ウ
  B = 2(uv)  エ
エの両辺を平方すると:
  B = 4uv  オ
つまり uv = B/4 となり、ウと組み合わせると未知数 u, v の和と積が(A, B の式として)分かるので、 u, v を解とする2次方程式を作ることができる(そうしたければ)。それを解けば、未知数 u, v を「与えられた A, B の式」として表現でき、アの変形が可能になる!

〔付記〕 「未知数が二つあるのに、それを決定するための式(情報)が一つしかない」とも思えたけど、その一つの式に「有理数成分」「無理数成分」の二つの情報が含まれていることから、結局、ウ・エの連立方程式となった。

具体的な u, v の決定法。まず「2次方程式を解く必要がないシンプルなやり方」から。ウの両辺を平方すると:
  A2 = u2 + 2uv + v2  カ
カからオを(辺ごとに)引き算すると:
  A2 − B = u2 − 2uv + v2 = (u − v)2  キ

等式キが鍵。与えられた二重根号 (A + B) の根号下にある二つの数 A, B について、平方差 d ――つまり、それぞれ平方して引き算した
  d = A2 − B
――を考えよう。 r = d と置くと、 d = r2 で、キから、
  d = r2 = (u − v)2 つま r = u − v  ク
となる。

† r2 = (u − v)2 は ±r = u − v を含意するが、便宜上、ここでは ± のうち + を選択する(平方差 d が 0 以上の実数の場合、この選択は、 u ≥ v だと決め付けることに当たる)。ア右辺の uv は、二つの数 {u, v} が一定なら等しい和であり、二つの数のどっちが u なのか勝手に決めても、結論に影響しない。

ウとクを辺ごとに足し算して:
  A + r = 2u つまり u = (A + r)/2
ウからクを辺ごとに引き算して:
  A − r = 2v つまり v = (A − r)/2

r = d であることに留意すると、次の結論に至る。

命題1(一応のまとめ) (A + B)u + v の形に変形できる(A は正)。ここで d は、
  平方差 A2 − B
であり、 u = (A + d)/2, v = (A − d)/2。ここで A 自身は、根号を含まない数だとしよう。すると、もし d が有理数の平方に等しいなら r = d は有理数で、 u も v も根号を含まない。そのケースでは B の二重根号が外れて、一重根号だけの式に簡約される。

実践的には、次のように整理できる。

二重根号外しの基本アルゴリズム
 入力 (A + ℓm)
  ① 根号下の数たちの平方差 A2 − ℓ2m を d とする
   ◇ d が平方数か判定
    Yes ⇒ 二重根号を外せる(②へ)  No ⇒ 外せない(あきらめて終了)
  ② A と d の平均を u とする
  ③ A の平均からのずれ A − u を v とする(典型的には A は「平均」より大きい)
 出力 u + v

②の u は、 A と d を足して 2 で割ったものだから、命題1の u と同じ意味。従って③は、
  A − u = A − (A + d)/2 = 2A/2 − (A + d)/2 = (A − d)/2
の計算に当たり、命題1の v と同じ意味。「A と d の平均」「A の平均からのずれ」というのが、かえって分かりにくければ、命題1にあるように、
  u = (A + d)/2, v = (A − d)/2
と考えてもいい(用途によって、どちらの考え方も役立つ)。

別解 上記では、ウの u + v とオの 4uv から、カ・キ経由でクの u − v を作り、ウとクの辺々の和・差から u, v を抽出した。もし2次方程式を解く気があれば、オの段階で既に u, v 自体の和・差が分かるので、直ちに u, v を求めることも可能。すなわち、
  u + v = A, uv = B/4
なので、解と係数の関係から、 u, v は
  x2 − Ax + B/4 = 0
の解。これを解いて:
  u, v = [A ± (A2 − B)]/2
d = A2 − B と置けば、最初に得た結論と同じ。∎

例題1 可能なら (11 + 46) を簡約したい。

 112 = 121 そして (46)2 = 16⋅6 = 96 なので、平方差は:
  d = 121 − 96 = 25
25 = 52 は平方数なので、二重根号を外せる(A = 11, d = 5)。

命題1の方法をそのまま使うと:
  u = (11 + 25)/2 = 8, v = (11 − 25)/2 = 3

あるいは、実践的アルゴリズムから:
  A と d の平均 u = (11 + 5)/2 = 8
  A の平均からのずれ v = 11 − 8 = 3

いずれにしても、
  (11 + 46) = 8 + 3
となる(お好みで 22 + 3 と書いてもいい)。∎

〔別解〕 二重根号外しに使えるアルゴリズムは、複数の種類ある。扱う数が小さいときは、 (a + 2b) の形に変形して、和が a で積が b の2数 u, v を探してもいい。例題1の場合、
  (11 + 46) = (11 + 224)
であり、「足すと 11 で掛けると 24 になる二つの数」を考えると 8, 3 が見つかる。実際、
  (a + 2b) = u + v
が成り立つとすれば、その両辺を平方すると a + 2b = (u + v) + 2(uv) なので、この形の二重根号に限っていえば、《和が a で積が b になるような二つの数 u, v》を探せばいい。

例題2 可能なら (7 + 35) を簡約したい。

 72 = 49 そして (35) = 9⋅5 = 45 なので、平方差は:
  d = 49 − 45 = 4
4 = 22 は平方数なので、二重根号を外せる(A = 7, d = 2)。
  u = (7 + 2)/2 = 9/2, v = 7 − 9/2 = 5/2
よって:
  (7 + 35) = (9/2) + (5/2) = 3/2 + (5)/(2) = (3 + 5)/(2)
分母を有理化するため、分子分母を 2 倍すると:
   = (32 + 10)/2 ∎

〔付記〕 例題1の「別解」の方法(和と積を考える)は、場合によっては便利だが、汎用性が低い。例題2に適用するのは、(可能だが)あまり便利ではない。

✿

処理したい二重根号は (A + ℓm) の形とは限らず(A, ℓ は正)、 (A − ℓm) の形かもしれない。ア・イでは、
  (A + B) = u + v
と置き、両辺を平方して、
  A + B = u + v + 2(uv)
を得たが、もし内側の根号の前の符号が負なら、
  (A − B) = u v
と置いて、
  A B = u + v  2(uv)
とすればいい。すると
  A = u + v そして B = 2(uv)
となり、この条件は + の場合と共通(ウ・エ)なので、以降の処理は全く同じ。最後に u, v が求まったとき、
  u + v の代わりに u v
とするだけ。

〔補足〕 + のケースでは、「二つの数 {u, v} のどちらを u としても uv の値は変わらない」ということから、便宜上、 u, v の選択法を固定した(u, v が 0 以上の実数なら u ≥ v)。 のケースでは、変数名 u, v を入れ替えると u − v の値が変わってしまうので、どちらを u とするのか、必ずしも自由に選択できない。とはいえ、二重根号下の数が 0 以上の実数なら(それが実用上、最も重要なケース)、その根号は 0 以上の実数を表す。それに等しい u − v も、当然 0 以上の実数。よって u ≥ v という仮定は引き続き妥当。

例題3 可能なら (5 − 26) を簡約したい。

冒頭で挙げた例…。「和が 5 で積が 6」と考えると u = 3, v = 2 であることは明白だが、一応、一般のアルゴリズム通りにやってみる。

 52 = 25 そして (26)2 = 4⋅6 = 24 なので、平方差は:
  d = 25 − 24 = 1
1 = 12 は平方数なので、二重根号を外せる(A = 5, d = 1)。
  u = (5 + 1)/2 = 3, v = 5 − 3 = 2
  ∴ (5 − 26) = 32 ∎

〔注〕 真ん中の符号が + の場合、 (5 + 26) の簡約結果を 3 + 2 と書こうが 2 + 3 と書こうが同じことだが、 (5 − 26) の場合には、簡約結果は 3 − 2 であり 2 − 3 とすることはできない。実際、後者の引き算結果は、明らかに負の数。ところが
  6 = 2.44948 97427… (煮よ良く弱く)
の 2 倍 = 4.898… を 5 から引いたものは正の数。その平方根 (5 − 26) も、もちろん正の数

6 = 2.44948 97427 83178… (煮よ良く弱く・梨フナ野菜) 弱火でじっくり煮込むのはいいが、梨とフナは合うのだろうか?

実用上のヒント。 (A ± ℓm) の A, ℓ が公約数を持つときは、原則として、それをくくり出してから処理する方が効率的。例えば、
  (20 − 57)
を直接処理すると d = 202 − 52⋅7 = 400 − 175 = 225 となり、それは 152 なので:
  u = (20 + 15)/2 = 35/2, v = 20 − 35/2 = 5/2
となる(以下略)。計算上、それでも問題ないが、代わりに
  (20 − 57) = 5 × (4 − 7)
と変形してから、二重根号の部分を処理すると d = 42 − 7 = 16 − 7 = 9 = 32 なので、小さい数の計算で済む:
  u = (4 + 3)/2 = 7/2, v = 4 − 7/2 = 1/2
  ∴ u − v = (7 − 1)/2 = (14 − 2)/2
求めるものは、その 5 倍なので:
  (70 − 10)/2

特に A, ℓ の公約数が大きい場合(例えば3桁)、それをくくり出せば、かなり計算量を節減できるだろう。

✿

二重根号外しの例題なので、簡約できる例ばかり取り上げた。現実には、簡約可能な多重根号はまれな存在。だって d が平方数にならないと簡約できないわけで、例えば 1 から 1000 までの整数だけを考えると、平方数は 1, 4, 9, 16, ···, 961 の 31 個しかない。その範囲の d について根号外しができる確率は、単純計算で 31/1000 つまり 30 回に 1 回未満。

上記アルゴリズムでは、 d が平方数かどうかの判定が必要。 100 以下の平方数については、ほぼ誰でも瞬時に認識できるだろうけど、数論では、もう少し広い範囲の(特に 400 以下の)平方数が常用される。例えば (19 ± 62) を処理したいとして、平方差 d を作る途中計算で 192 = 361 が必要だし、 d = 361 − 36⋅2 = 289 が求まった瞬間、その 289 が平方数 172 であること(図解)を認識できないと、話が前へ進まない。

その点、もし (19 ± 62) = (19 ± 218) と変形して「和が 19 で積が 18」の数を考えるなら、一瞬で u = 18, v = 1 が見つかる。このように、個々のケースでは、別のやり方の方が速いかも…

でも、このメモで記したアルゴリズムは汎用的で、どんな場合にも、二重根号簡約の可否を確実に判定(可能なら簡約)できる。しかも、このアルゴリズムは、他の場面でも活躍する。(続く)

✿ ✿ ✿


<メールアドレス>