「フランクリンの凧問題」というらしい

ここのところ記事を更新していなかったけど、実は、以前書いた三角形の記事の「予想」は正しいと、H.Nakao さんという方からご指摘をいただいて、コメント欄でそれをずっと教えてもらっていました。
ただ結局、コメントにある「Z 係数」のあたりはどうしても分からなかったので、その部分は自分なりに書き換えて、後日ぼくも自分で証明を付けてみようと思っています。
…といっても、近いうちに載せるであろう「証明」は Nakao さんのものであることには変わりありません。
毎日毎日、質問に付き合っていただいて、ありがとうございました。感謝いたします。


主張をもう一度書いておきます↓。元記事と同じです。
※ それと、以後、表記は元記事と同じとします。

主張

下図において、 \triangle ABC AB=AC二等辺三角形とし、0 < x,  y < 80 とする。
このとき、 x, y, z 共に整数の組は、自明なもの *1 を除くと、以下の 16 通りである。

  1. x = 50, y = 20, z = 60
  2. x = 65, y = 25, z = 85
  3. x = 60, y = 30, z = 80
  4. x = 50, y = 40, z = 60
  5. x = 20, y = 50, z = 10
  6. x = 40, y = 50, z = 30
  7. x = 60, y = 50, z = 80
  8. x = 70, y = 50, z = 110
  9. x = 30, y = 60, z = 10
  10. x = 50, y = 60, z = 30
  11. x = 65, y = 60, z = 85
  12. x = 70, y = 60, z = 110
  13. x = 25, y = 65, z = 5
  14. x = 60, y = 65, z = 40
  15. x = 50, y = 70, z = 10
  16. x = 60, y = 70, z = 20


証明のポイント

ぼくが第一に気を付けてるのは、証明に用いるプログラムの中に、「小数点値の等号比較」は絶対に入れないという点です。
元記事は何故×だったかというと、

3. z = 1, 2, ... , 179 において、f(z) = 0 となる z を探す。

の部分を数値計算に落とし込むときに、double 型の等号比較を使ったから。
小数点値の等号比較が入った時点で、それは「近似操作」であり、数学の証明としては不適当なんですよね。


やろうとしている証明は、大まかに言うとこんな感じです。

  • すべての x, y = 1, 2, ... , 79、z = 1, 2, ... , 179 について、以下の操作を行う。
    1. 各 x、y、z に対して定まる f :=「  \frac{d-e}{d-b} \cdot \exp(2 \pi i \cdot \frac{z}{360})虚数部分」*2 を、ζ:=  \exp(\frac{2 \pi i}{360}) の Q 係数 *3 有理式として表す。
    2. 「Q 係数有理式 = 0」を変形して、同値な関係式「ζの Q 係数多項式 = 0」とする*4。この「ζの Q 係数多項式」を g(ζ) (∈Q[ζ]) とする。
    3. ζの Q 上最小多項式 T^96 + T^84 - T^60 - T^48 - T^36 + T^12 + 1 を φ(T) と書く *5 。また、g(T) (∈ Q[T]) を φ(T) で割った余りを ψ(T) (∈ Q[T]) とする。ここで、「 g(ζ) = 0 ⇔ ψ(T) = 0 *6」なので、「g(ζ) = 0」を調べるのには「ψ(T) が 0 である」ことを調べれば良い。

元記事で double 値の等号比較をしてたところを、有理数係数多項式の係数が 0 かどうか、つまり、有限個の有理数列の等号比較に帰着させているわけです。
(有理数は整数 2 つの組を "ある同値関係" で割って定義されるので、小数点値を出さずに済むはずです。)
数学ではよく使ってた手だけど、こうやって数値計算上の困難を解決するのに使うのは思いつきませんでした。


証明に用いるプログラムは

  • Q 係数多項式が用意されている
  • 多項式の剰余」が用意されている

ということから Maxima *7 で作るつもりです。
ただ、

  • Maxima の内部で、本当に小数点値を出さずに計算しているのか?
  • Maxima が使っている定義と、ぼくが使っている定義とはホントに同じなのか?(多項式が「零である」ことの定義とか)

という懸念 (※) は未だ残っているんですけどね。。

感想

まだ完全に解いたわけじゃないけど、とりあえず現時点で思ったことをメモしておきます。

  1. いろんな例を計算するのに使うならともかく、証明の部分にコンピューターを使うのはなかなか厄介だと思った。(※)の部分のように、「この言語 (もしくは数式処理システム) は本当に自分の証明に使えるのか?」という部分のチェックが本当に面倒そう。
  2. 言語 (もしくは数式処理システム) バージョンが上がるごとに、1 のチェックをしなくてはいけないのだろうか??正直それは避けたいなぁ…。
  3. 中学の知識で解けるはず?の問題が、こんな代数的な問題に変形されてしまった。。でも、個人的には、極一部の人にしか見つけられないパズル的な、アクロバティックな解法より、(同じ『極一部』であっても) 「お作法」を身につけさえすれば自然に見えてくる解法のほうが美しいと思う。


*1:x=y=z のもの。

*2:元記事と表記を変えています。

*3:有理数係数」のことです。

*4:上手く説明できなくて申し訳ないんだけど、整数 a, b, c, d (a, c ≠ 0) における「b/a + d/c = 0 ⇔ (bc + ad)/ac = 0 ⇔ bc + ad = 0」と同じ操作です。

*5:この値は Nakao さんの計算結果をそのまま引用させていただいています。

*6:この部分は大学の数学の知識を使っています。

*7:自分の環境では Maxima-5.15.0 です。