2016-04-12 20 views
0

モデルにいくつかのデータを当てようとしています。今はすべてがOKです。しかし私は私の方程式のパラメータにいくつかの制約を適用したいと思っています。たとえば、次の関数を仮定してください:f(x)=a*sin(x)+b*cos(x*a/b)。 "a"と "b"がパラメータであるとする。この方程式をいくつかのデータに適合させ、 "a"と "b"の推定値が特定の異なる間隔で落ちなければならないと仮定します。たとえば、次の制約を仮定します。a> = 2.0 と0.1 < b < = 1.0 パラメータ "a"と "b"の上記の制約を考慮して、gnuplotに適合させるにはどうすればよいですか?GNUPLOTのパラメトリック関数のパラメータへの制約の適用

私は何千ものカーブのフィッティングを実行したいので、 Fortranで暗黙のdoループに似たものがあるかどうかを知りたいです。すべてのカーブを順番に含むデータファイルにフィッティングを実行することを意味しますか?

あなたのお手伝いをさせていただきます。

+0

このページのメソッドは、場合によっては役に立つかもしれません... http://gnuplot-tricks.blogspot.jp/2009/12/restricting-fit-parameters.html – roygvib

+0

ありがとうございます** roygvib 14 **、私それらのいくつかを試しました。 最後に、相互依存性のないパラメータでフィッティングを行うと、出力パラメータ(NLLSフィッティングによって推定)を希望の間隔内に保つのに役立つことに気付きました。これはカールの提案の一部でした。 これまでのところ動作します。そして私は本当にどのように説明することができません。 私は、パラメータ制約がGNUPLOTに包括的に実装されていれば、本当にすばらしいことだと思います。 よろしくお願いいたします。 –

答えて

0

適合範囲を制限することはできません。三項演算子(たとえば 'a> 2?a:1e300')を使用して関数を修正することはできますが、フィット感が不安定になる可能性が高く、それは本当に悪いスタイルです。 ;)

パラメータを予測して、禁止された領域に浮遊しないようにしてください。最初にパラメータを別々に入力します。それらのうちの1つをより単純な関数に導入し、パラメータの一部が無関係なデータの小さな部分のみを使用するなどです。最後のステップでのみ、すべてのパラメータとデータセット全体で完全関数に収まるようにします。

gnuplotには、データセットの繰り返し処理に使用できるdo for [] {}while() {}ループがあります。あなたが聞く前に:適合パラメータを保存するための配列変数は、開発バージョン5.1で最近intruducedされたばかりです。

+0

こんにちは**カール**このヒントを本当にありがとう。私はこれを行うための適切な方法を見つけるのに苦労しました。 私は進んで試してみるつもりです。 よろしくお願いいたします。 –

関連する問題