丸め誤差界の Hello World 的定理 -- Sterbenz の定理
小清水 (@curekoshimizu) です。
昨日は 数学カフェ に初めて参加させていただき、
機械学習について刺激を受けました!
その中で、
コイン投げは確率界の Hello World というフレーズを聞いて
なるほどなるほど!と感じました。
そして、
そういえば 丸め誤差界の Hello World はなんだろう?
と思い記事を書いてみました。
そもそも、 丸め誤差界 は業界というには狭すぎて、
そもそも 丸め誤差に関する定理を聞く人も多いのでは?とも思います。
また、丸め誤差に関する本も少ないことなどから、
このセレクトがなるほど!となるかもわかりませんが、
私の主観で選択しました。
私的に思う、
丸め誤差界の Hello World はこちらになります!
この Sterbenz の定理、ゴールドバーグ先生の
what every computer scientist should know about floating-point arithmetic
の Theorem 11 にも載っていますので 皆さんもちろん知っていますよね!
とは言いつつも紹介します!
丸め誤差界の Hello World – Sterbenz の定理
この定理は 有限値をとる浮動小数点数 という過程しかなく、
正規化数 という数以外にも、 非正規化数 というクラスにも成立することを言っています。
この点でかなり広いです。
この 正規化数・非正規化数 については、
後半の 「Prop. の証明 – 整数を用いた 進 桁の浮動小数点数の表示」の章 に概略を記載しましたのでご参考ください。
どこに Hello World 性があるの?
誤差を抑えたり評価したりということをする理論だと思います。
その理論としては、
誤差なく計算できる! という 誤差のない究極性! があり、
なおかつ 証明が極めて簡単! というところに Hello World 性があると思います。
Sterbenz の定理の証明
(証明)
であるから、 は同符号であることがわかる。
対称性から で証明できればよい。
また、
から
と、 の関係をひっくり返しても同じ不等式が成立する。
このため、 で証明できれば も同様である。
以上をまとめると
で証明できれば充分であることがわかる。
この浮動小数点環境が
進 桁の浮動小数点環境 (指数部範囲: ) とすると、
有限値をとる浮動小数点数 はそれぞれ
と表せる。ただし は整数で < を満たし、
は整数で である。 (*)(この事実について後で補足あり)
とおくと
となり、 は整数なので < が示されれば、
が この浮動小数点環境で正確に表示できていることがわかる。 (*)(この事実について後で補足あり)
そのため、このことを示す。
仮定より なので
であり がわかる。
最後に
仮定より であることから
であるから
が示され < が証明された。
故に証明完了。
上の証明への補足
上の証明で唯一難しい点として、下の事実を当然として利用しました。
この事実は頭の体操的なものであるものの、
おそらくこのブログの多くの箇所で参照する事実であることから、
解説を記載しておくこととします。
有限値をとる浮動小数点数 は
は整数で である。
そして逆に、 その が上の表示であれば、 有限な浮動小数点数 である。
Prop. の証明 – 整数を用いた 進 桁の浮動小数点数の表示
進 桁の 有限値をとる浮動小数点数 は
と表される。ただし は整数で < を満たし、
は整数で である。
これは浮動小数点数の定義からである。
補足すると とできる数が特に 正規化数 と呼ばれるものであった。
この数にとらわれない、例えば
という数は 非正規化数 と呼ばれる数である。この数は の形で表示することができない。これは指数部が と既に最小であるからである。
上の は次のように変形できる:
ここで
とおけばよく は 整数で < を満たす。
逆に が整数で < を満たすならば
と表示できることから、逆も示される。
まとめ
丸め誤差界の Hello World 的定理である Sterbenz の定理 を紹介しました。
簡単な証明、簡単な条件なだけあり、
そこまで日の目を見ないかもしれませんが
そこは Hello World 、目を瞑りましょう。
などを是非御覧ください。以上です。