Index: [Article Count Order] [Thread]

Date:  Wed, 12 Mar 2003 21:05:04 +0900
From:  "Katsuya Higuchi" <bugbear@....nu>
Subject:  [XP-jp:04204] Re: 浮動小数点演算や幾何演算のテスト
To:  <extremeprogramming-jp@....jp>
Message-Id:  <000b01c2e88f$aa4410b0$0101a8c0@....nu>
References:  <20030312141250.0476.TERADA@....jp> <20030312172823F.hiranabe@....jp>
X-Mail-Count: 04204

樋口です。

今、力学シミュレータを作っているのですが、
何せ、「そもそもリアルタイムで動作する上に、
結果が数値的にどうなるのかわからない」:-)
という状態なので、もっぱら目視判定になっちゃってます。
うーん、よくないですねぇ。


浮動小数点演算の等値判定は、
いわゆる epsilon で単純判定するのが手っ取り早いわけですが、
あえて、誤差は当然発生するものとして、
精度情報を持たせたまま計算するというアプローチもあります。

1.0、1.00、1.000
どれもそのまま 64bit の double に代入すると
1.00000000000000 (くらいかな)として表現されてしまうわけですが、
これを
1.0±0.1、1.00±0.01、1.000±0.001 という誤差をつけたり
あるいは[0.9, 1.1], [0.99, 1.01], [0.999, 1.001] という区間にしたりします。
[0.9, 1.1] * [0.9, 1.1] = [0.81, 1.21] とするわけです。
精度保証付き計算とか区間演算と呼ばれています。
これは結構メジャーなので
(といっても、知ってるのは一部の研究者くらいのようですが)
検索すれば適当な資料が見つかるかと思います。

あと、幾何的な構造から、幾何情報を崩さないようにするアプローチもあります。
この本に詳しく書いてあります。(まだ、完全に読みきってませんが…)
培風館「計算幾何工学」杉原厚吉著
ISBN4-563-03642-0
こっちはかなりマイナーなようです。

// bugbear@....nu
// 樋口 勝也