作者: Bruce.
日時: 2009/2/11(20:44)
davi さんは書きました:
> みなさん  <  こん??は でび@浅田彰の逃げて逃げて逃げまくれ、を実践中。です
> 
> 以下、TSabcでの、ねこ丸さんの、古いテキスト類って結構大事だよ
> っていうお話の流れで、やってみて、出てきたネタです。
> 
> 河野真治著『入門Perl』(アスキー 1994/7)
> http://www.amazon.co.jp/dp/4756102921を引っ張り出してきました。
> 
> # この本、最後のお題が9600bpsのモデムでパソ通のBBSへの
> # ソケットを張る通信マクロ作成なんですよぉ。
> # 良い風合いに骨董化している、という訳で引っ張り出してきました。
> 
> なお、ぶっちゃけ、「ひでーな、この本。教える内容の順番が
> グチャグチャ。」が感想です。放り投げていたのもそれが理由の一つかも。
> 
> さて、5.8系でPerl最新版入れてみて、ヘノンアトラクタ(エノン写像)
> の行列を1万行生成し、出力をExcelに貼り付けて散布図でプロット
> してみました。
> 
> # -----------------------
> $x = 0.2;
> $y = 0.3;
> for ($i=0;$i<10000;$i++){
>     printf("%1.3g\t%1.3g\n" ,$x,$y);
>     ($x,$y) = (1.0+$y-1.4*$x*$x, 0.3*$x);
> }
> # -----------------------
> 
> う〜む。ちゃんと出た。
> 
> Active Perl v5.8.9 build 825 [288577]
> 0.2 0.3
> 1.24 0.06
> -1.11 0.373
> -0.341 -0.332
> 0.505 -0.102
> 0.54 0.152
> 0.743 0.162
> 0.39 0.223
> 1.01 0.117
> -0.312 0.303
> 
> 式そのものは簡単なので、ついでにExcelで同様の式を作成して
> やってみました。
> x          y
> 0.2         0.3
> =1+B2-1.4*A2^2   =0.3*A2
> 以下、オートフィル。
> 
> 出てきた結果は以下の通り。
> 
> Excel 2007
> x y
> 0.2 0.3
> 1.244 0.06
> -1.107 0.3732
> -0.341 -0.33196512
> 0.505 -0.102310591
> 0.540 0.151562331
> 0.743 0.162108168
> 0.390 0.222833095
> 1.010 0.11691104
> -0.312 0.303065036
> 
> これ、よく見ると、数値行列の値が結構違いますね…。
> 
> Excelのxの3つ目の出力 -1.107 に注目すると、
> 小数点第3位の四捨五入とか、切り上げ/切り捨て
> などの処理では他の値に影響が出てしまいそう。
> 
> つまり、Excel側で通常の操作では、対応不可能っぽい気が…。
> 
> いろいろ調べてみたら、浮動小数点の誤差ってことみたい
> なんですが、その理解でOK? > おる
> 
> 浮動小数点の誤差について、Excel側の出力を、Perlと同じ
> 結果に持ってゆくのはマクロ組むとかで切り抜けるとか、
> 結構めんどくさそう。
> http://pc.nikkeibp.co.jp/pc21/special/gosa/eg4.shtml
> 
> つーか、Perlが採用している浮動小数点のデータ形式も
> よくわからんし。

よっぽど珍しい環境でなければIEEE754です。

IEEE 754 - Wikipedia
http://ja.wikipedia.org/wiki/IEEE_754


> 
> # 上のスクリプトの、3gは浮動小数点を有効桁3桁に四捨五入で
> # 丸めろ、という指定ですよね?
> 
> しかし、こんなに違うと、衛星射出の軌跡計算とか医療分野とかで
> Excelを使うのは危ないかも、って、ちと怖くなってきますな…。


統計に使うなとはよく言われますけどね。


Excel使うな | Okumura's Blog - Windows・Macの便利・無料のツール・ソフト
ウェア情報まとめ
http://tools.rightclicksright.net/data/211451.aspx

つーかIEEE754の倍精度実数で15桁前後の精度があるんですから、それで足りな
いってのは
どんな計算してるんだって話なんですけどね。
そもそも観測の時点での計測誤差だってあるんだから、小数点以下6桁とか7桁の
あたりまで「正確な値」であるほうが怖いですよ。

そんな精度を求められるって衛星やら医療分野のどんな計算ですか?

あと「浮動小数点の誤差」って表現は微妙に意味不明。
浮動小数点数ならわかりますが。


-- 
木村浩一/KIMURA Koichi
 I thought what I'd do was, I'd pretend I was one of those deaf-mutes or
shoud I?
 mail kbk at kt.rim.or.jp
 web  www.kt.rim.or.jp/~kbk/zakkicho/index.html