LoginSignup
0
0

整角四角形問題

Last updated at Posted at 2024-05-02

整角四角形問題

4点角問題は「ラングレーの問題にトドメをさす!」によれば、

  • 整角四角形 31,402問題
  • 整角三角形 17,659問題

合計49,061問題ある。

この記事では、整角四角形 31,402問題あることを、数値計算により丸め誤差を無視して確認してみる。

整角四角形問題とは

四角形ABCDの ∠ABD = a, ∠CBD = b, ∠ACB = c, ∠ACD = d, ∠ADB = eとすると、 a,b,c,d,eが整数となるものを探す。 
a = d とすると円周角の定理より e = c となり、つまらない例ができるので、 a < d の場合を考える。

数値計算による確認

書籍にある通り、e は a,b,c,d に関する三角関数と逆三角関数で表せる。
愚直にa,b,c,dに数値代入する数値計算により31,402問題あることを確認する。

default(realprecision, 100);

S(x) = sin(x / 180 * Pi);
C(x) = cos(x / 180 * Pi);
AT(x) = atan(x) * 180 / Pi;
f(a, b, c, d) = S(b+c+d) * S(a) * S(c);
g(a, b, c, d) = S(b) * S(d-a) + S(b+c+d) * S(a) * C(c);
h(a, b, c, d) = if(g(a, b, c, d)==0, 90, AT(f(a, b, c, d) / g(a, b, c, d)));
cnt = 0;
\\ a<d, a+b+c<180, b+c+d<180
for(a=1, 179, for(b=1, 179-a, for(d=a+1, 179, for(c=1, min(179-a-b, 179-b-d), e=h(a, b, c, d); if(abs(e-round(e))<1e-50;, cnt++)))));
print(cnt);

出力結果は次のようになる。(処理時間は25分ほど)

31402
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0