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

[dennou-ruby:002440] Re: integrate



竹広さん 

2通まとめて返信します。

> integrate で重みを使い出すと, 次元変数だけでなくその重み変数も
> 一緒に保持して欲しいんですが, そうすると GPhys オブジェクトの
> 定義にかかわるのでおおごとですよね. そこでとりあえず 
> gp コマンドシリーズで重み変数も一緒に読み書きするための
> メソッドを作ってみました. 
> 
> gtool4 規約では重み座標の名前は dimname + _'weight' で
> 正しいでしょうか?
> 
> 問題ないようでしたらとりあえず gpcommon.rb へいれて
> 一連の gp コマンドに採り入れようと思いますがいかがでしょう. 

座標軸のためのクラス Axis には、各点の座標値をあらわす pos 
配列だけでなく、その他任意の補助座標変数をハッシュのような
形でいれることができます。なので、使うならそれを使って欲しい
です。今回作成されたのはその構造をまったく使わないので、
これを取り入れちゃうと、一貫性が損なわれます。すみませんが、
取り込まないで下さい。ちなみに、それ以外にも竹広さんの
コードそのままだと、NetCDFの出力に対してははなはだ効率が悪い
ケースが多いのは気づいてますか。

補助変数のなかで重みにはきまった名前を与えていいと思いますが、
まだ決めてません。まず、重みって正確な定義は何でしょう? その
値をかけた上で足していくと軸にそって積分できるようなものということ
なら integ_weight なんかでいいでしょう。しかし、ガウス重みな
んかは座標軸と単位も違いますし、積分にはならない(特殊な積分に
なるというべきか)。gtool4 は gtool3 をそのまま引きずってるわけ
ですが、「平均操作の重み」ってことになってますね。その通りだと
平均操作には使えても積分にはつかえないので、あまり好きじゃない
です。(逆に平均は積分をとおして定義できる。)

> 遅々として, integrate, average まわりをいじってみてます. 
> そこで湧いた質問なのですが
> 
>  * 現在の Gphys::mean メソッドは周期的な軸の積分・平均に
>    対応しているのでしょうか? 
> 
>    台形則で計算しているならば, 両端の値を足し合わせるとき重みが
>    半分になっていますよね. 周期的ならば同じ重みで足し合わせなければ
>    いけないと思うんですがそのような処理をされているんでしょうか. 
> 
>  * 現在の Gphys::mean メソッドはもしかして Gphys::Axis の 
>    average メソッドを使っているわけではないのでしょうか? 

お察しの通り mean と average は別物です。mean は NArray の
mean を使うので、重みも何もありません。average のほうは、
サイクリック対応してません。gphys/axis.rb に入っている
average のコード以外には何も存在しません --- ということが
わかれば分かりますよね。

>    Gphys.cut して mean をとるとエラーにならないけど, 
>    Gphys.cut して integerate をとると軸とデータの数が違うという
>    エラーが出てしまいます. 
> 
> cut して mean を使うとそのようなエラーが出ないので別物なのかな? 
> と思ったわけでして...

ほんとですか。(そのうち調べてみます。)

堀之内