幾何計算でお困りの方へ


幾何計算のソフトウエアを作ったはずなのに、 うまく動かなくて落ち込んでいる方へ

     ご心配なく、落ち込む必要はありません。

 うまく動かないのは、あなたのせいではありません。理論家の 責任なのです。
 「計算幾何学」という名のもとに作られているアルゴリズムは、 そのままプログラムに書きなおしても、正常に走るわけではありません。 なぜなら、それらのアルゴリズムは、「誤差は生じない」と 仮定した架空の世界で設計されているからです。誤差の生じる 現実のコンピュータで動作が保証されているわけではありません。
 だから、そんなアルゴリズムをそのままプログラムへ翻訳しても、 うまく走らないのは当たり前です。プログラミングの腕が悪いからでは ありません。

正常に動作するソフトウエアを作るためには, 誤差を考慮した別の技法が必要です。

    実際、二つの強力な方法があります。


その1 誤差も例外もない世界を作る方法 (厳密計算と記号摂動の利用)

 多倍長計算を利用して、誤差の発生しない閉じた世界を作ります。 さらに、無限小を表す記号を導入して、例外のない世界を作ります。 したがって、誤差も例外もないと思って、一般の場合の プログラムを作るだけで十分です。出来上がったプログラムは、 例外があっても安定して動作します。ただし、多培長計算を 使うので、処理速度は落ちます.これは、初心者向け技術と言えるでしょう。

解説書

適用例


その2 誤差が発生しても正常に動くプログラム(位相優先設計法)

 対象の位相的性質の保持を、数値計算結果より優先させることに よって、破綻を防ぎます。浮動小数点計算が使えるので、計算速度が 早いという利点をもっています。ただし、対象の位相的性質を 抽出しなければなりませんから、問題ごとの個別の工夫が必要です。 中級技術といえます。

解説書

適用例


現場でお困りのソフトウエア技術者の皆さん、
どうぞ、気軽にご相談ください。

    杉原厚吉 sugihara@mist.i.u-tokyo.ac.jp


杉原のホームページへ