「17角形とガロア理論 第36章 ω8→ω4 (2022/10/15)」


17角形とガロア理論 第36章 ω8→ω4












ω17 = 1

ω17 -1 = 0

(ω-1) (ω16 + ω15 + ... + ω2 + ω1 + 1) = 0

ω16 + ω15 + ... + ω2 + ω1 + 1 = 0

ω16 + ω15 + ... + ω2 + ω1 = 1

であり。


G16をG8&G8に分解して

u = ω1+ω9+ω13+ω15+ω16+ω8+ω4+ω2
v = ω3+ω10+ω5+ω11+ω14+ω7+ω12+ω6

u+v = -1
u・v = -4

これを解いて
  u = (-1 +√17) /2



今回は
G8をさらにG4&G4に分解して

u = ω1+ω4+ω13+ω16
v = ω2+ω8+ω9+ω15

u+v = α
u・v = -1

これを解いて

u = (α + √(α2 + 4))/2

  where  α = (-1 +√17) /2

こうして、我々は
「ω4個」の値を算出しました。


あとはこうやって、
「ω n個」を半々に砕いてゆけば
最終的に ω1個まで砕く事ができます。




・・・・・さて。

本当にこの計算は合っているか。
もしかして「デタラメ言ってないか?」

ここらで一度検算しましょう。^^;

C#コード
using System.Diagnostics;
using System.Drawing;
using System;

PointF getOmega(float angle)
{
  return new PointF(MathF.Cos(angle), MathF.Sin(angle));
}

var _1_17 = 1.0f / 17;
var unit = (float)(MathF.PI * 2.0 * _1_17);

var omega1 = getOmega(unit * 1);
var omega4 = getOmega(unit * 4);
var omega13 = getOmega(unit * 13);
var omega16 = getOmega(unit * 16);

var u = new PointF(
  omega1.X + omega4.X + omega13.X + omega16.X,
  omega1.Y + omega4.Y + omega13.Y + omega16.Y);

var alpha = (-1.0f + MathF.Sqrt(17.0f)) / 2;
var u2 = (alpha + MathF.Sqrt((alpha * alpha) + 4)) / 2.0;

Debug.WriteLine($"実際u = ({u.X},{u.Y})");
Debug.WriteLine($"推定u = {u2}");



出力:
実際u = (2.049481,-1.1920929E-07)
推定u = 2.049481153488159




(-1.1920929E-07)は"ほぼ0"。
float計算の過程で出てきた誤差なだけで、
実際は0です。

確かに合ってます!