- ベストアンサー
NGraphのフィッティングについて
万有引力の実験があって、それNgraphにプロットしたのですが、「フィッティングの仕方」がよくわかりません。というか、うまくいきませんでした。プロットした点の形は間違いなく減衰曲線ですが。。。 Exp(-X)SinX の形のグラフになるはずですが、よくやり方が分かりません。 どなたか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
fitの種類をuserにして user定義式を %00*exp(%01*x)*sin(%02*x+%04)+%03 初期値を %00から順に 100,0.001,0.01,50,0 にしてやってみると、 結構よいフィッティング(|r|で0.9998くらい)になるようです。 (DCオフセットがデータに見れたのでDCオフセット分%03を追加、最初位相項を0にしてたんですが、ずれがみられたので%04を追加しました。) 初期値はグラフから大雑把に関数のパラメータを決めて(例えば、DCオフセットは概略50だとかとみて)放り込んでいます。
その他の回答 (2)
- foobar
- ベストアンサー率44% (1423/3185)
user定義式は、理論的に得られる式(今回の場合は、A exp(-t/T) cos(wt) )を元に、補正の項(今回は、直流オフセットと初期位相)を必要に応じて足してます。 初期値は、決定すべきパラメータ数が多い場合には、あまりかけ離れた値を指定すると収束しなかったり、変なところに収束することがあるので、ある程度それらしい値(波形をプロットさせると、振幅の減衰の様子からTが、t=0の点からAが、tが大きいところの収束の様子から直流オフセットが、振動の周期からwが大体読み取れます)を入れることが多いです。 場合によっては、最初は簡単な定義式(例えば、直流オフセットは変数とせずに決めうちで数値を与えて、初期位相は0として)を使って、ある程度パラメータ(A,T,w)をフィッティングで絞り込んで、詳細な(初期位相、直流オフセットを可変のパラメータとした)user定義式の初期値に使ったりもします。 (まあ、このあたりは、トライアンドエラーで進めることが多いですけど。) 定義式の素性が良い(それぞれのパラメータが相互に影響しない(例えば、今回の例だと、振幅、振動の周波数、直流オフセットは相互にそれほど強くは影響していません))場合には、比較的楽にフィッティングできるようです。
お礼
へぇーそうなんですか。よくわかるようでわからないですが、ありがとうございます。そこらへんをきちんと勉強したいと思います。しっかりと勉強し、またフィッティングを実践して、必ず身につけようと思います。 本当にありがとうございました。
- foobar
- ベストアンサー率44% (1423/3185)
データの設定を開いて、fitのところをクリックすればフィッティングの設定ができます。 そこで、関数としてuser(ユーザ定義)を選んで、フィッティングしたい関数(A exp(-x*B) sin(C*x+D) かな)を登録してやってA-Dに適切な初期値を与えてやればあとはNgraphが処理してくれると思います。 (NgraphではA-Dを%00-%03の変数で置き換えてやる必要があります。)
お礼
すみません。パスワードは1030です。間違えて打ってしまいしました。
補足
返答ありがとうございます。 実はまだ、Ngraphを使い始めたばかりで。。。ユーザー定義で %00 exp(-x*%01) sin(%02*x+%03) と書きましたが、初期値をどのように決めるかわかりません。できれば、一例を示してくれるとありがたいです。 データを http://applis.servehttp.com/?file=00031878.ngp に貼り付けました。パスワードは1031です。お願いします。
お礼
すげー!!できた。ありがとうございます。 滑らかな曲線ができたときには感動しました。本当にありがとうございます。 それにしてもデータ値の指定というのは、適当にやるのでしょうか。やはり経験があると大体どれくらいやればできるんでしょうか。これから、実験をもっと多くこなさないといけないと思いますので、将来的にも参考したいです。