[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:003539] Re: GGraph/contour のコンター間隔出力



竹広です. 

ありゃ, ブーメランが帰ってきた. というわけでちょっとソースを
のぞいてみると, 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 を生で使うとそのようなことはおこらないようです. 
> > 
> > 必要ならばサンプルプログラムを作ります. よろしくお願いします. 
> 
>