[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:003540] Re: GGraph/contour のコンター間隔出力
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:003540] Re: GGraph/contour のコンター間隔出力
- From: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxx>
- Date: Sat, 10 Mar 2012 12:46:58 +0900
堀之内です.
おお,氷解.(って,今ごろなのは怠慢以外の何ものでもないですが.^^;)
単精度の仮数部の表現桁数に少し余裕を持たせたεで比較をしないと,
ですね.しかし,そもそも3レベルだけで判断してること自体がナン
だな... (どうもすみません.) 今ちょっと手を出せる状況でない
ですが,落ち着いたら暇をみて直そうかと思います.
> 竹広です.
>
> ありゃ, ブーメランが帰ってきた. というわけでちょっとソースを
> のぞいてみると, GGraph/coutour の中で次のような処理をしている
> 箇所があやしそうでした.
>
> if DCL.udqcln >= 3
> lv1, = DCL.udqclv(1)
> lv2, = DCL.udqclv(2)
> lv3, = DCL.udqclv(3)
> if lv2-lv1 != lv3-lv2
> saved_udparams = DCLExt.ud_set_params({'lmsg'=>false})
> end
> end
>
> これはおそらく等値線間隔が一定かそうでないかを判断して
> 等値線間隔を表示するスイッチ "lmsg" を操作しているのだと
> 思います.
>
> しかし, 各等値線レベル lv1, lv2, lv3 を出力してみると
> どうも Fortran での単精度分しか精度がなく, その誤差から
> 同値判定に曖昧さが入ってしまっているようでした.
>
> これは if 文の判断規準を変えればよさそうなのですが,
> どうするのがいいのでしょうかね. Fortran 単精度分だけに
> して比較するのかなと思いましたが, ruby の単精度は
> Fortran での倍精度ですよね. ちょっと私には力不足です.
> 御知恵を貸して頂ければありがたいです.
>
> Takepiro(竹広真一)@数理解析研究所. 京都大学
> E-mail:takepiro@xxxxxxxxxxxxxx
> takepiro@xxxxxxxxxxxxxxxxxxxx
>
>
> At Sat, 10 Mar 2012 09:58:07 +0900,
> Takeshi Horinouchi wrote:
> >
> > 堀之内です.
> >
> > 実はそれが作者にとっても GGraph 最大のなぞで... (^^;)
> > 以前から調べようと思いつつやってません.
> > サンプルは結構です.直し方がわかれば教えてください.
> >
> > > 竹広です.
> > >
> > > GGraph/contour を使っていて前から気になっていたのですが,
> > > 等値線間隔の値によって図の下にそれが出力されたりされなかったり
> > > することがあります. これはどういう仕組みになっているのでしょう.
> > >
> > > ちなみに ruby-DCL を生で使うとそのようなことはおこらないようです.
> > >
> > > 必要ならばサンプルプログラムを作ります. よろしくお願いします.
> >
> >
堀之内 武
北海道大学 地球環境科学研究院 地球圏科学部門
〒060-0810 札幌市北区北10条西5丁目