2017-04-10 20 views
0

私はGnuplotを使って簡単なことをしようとしていますが、どういうわけか私は説明できません。私の機能の定義に何かひどく間違っているようだ。間違ったフィットパラメータ、関数評価中の未定義値

私はまずいくつかの機能を使い始めました。これらの機能的な形は、フィットがかなりうまく機能するので重要ではありませんが、後で関与するので、同様に報告しています。私は

m=3.8 
e=0.5 

を課し、かなりうまく動作するようだデータに重畳された関数g(X)をプロットした場合

evap(x)=(x>x_fc)?A*qnet(x)/wm2_to_mmh:(x<x_wp)?0:(A*qnet(x)/wm2_to_mmh)*(x-x_wp)/(x_fc-x_wp) 
fit evap(x) './fluxes_da_1p0.txt' using 1:2 via A, x_fc, x_wp 

sensible(x)=((qnet(x)/wm2_to_mmh)-evap(x))/(1+B)+C 
fit sensible(x) './fluxes_da_1p0.txt' using 1:3 via B,C 

は、その後、私は

deltasensible(x)=abs(sensible(x)-sensible(0.454)) 
deltalatent(x)=abs(evap(x)-evap(0.454)) 

period_adv=18.0 
g(x)=m*deltalatent(x)*period_adv*(deltasensible(x))**e 

を定義しました。私はパラメータに

fit g(x) './advection_da_1p0.txt' using 5:2 via m,e 

を使用して、それに合うようにしようとした場合

は、しかし、私はgnuplotのは、私が、E、Mのための本当に奇妙な値を試しているいくつかの理由、次のエラー

iter  chisq  delta/lim lambda m    e 
0 4.2471983038e+00 0.00e+00 5.51e+00 3.800000e+00 5.000000e-01 
1 3.7149813491e+00 -1.43e+04 5.51e-01 3.573384e+00 4.843345e-01 

Current data point 
========================= 
#    = 8 out of 8 
x    = 0.0178156 
z    = 0.0309726 

Current set of parameters 
========================= 
m    = 0.0178156 
e    = -0.0583802 

"rain_estimate.gpl", line 52: Undefined value during function evaluation 

を取得しますそれらの初期値を提供した。私がdeltalatent(x)依存関係を削除すると、すべてが正常に動作しています。私は何か簡単なものを逃しています

+0

肯定的な 'e'を強制するには、' e = ep * ep'と 'fe via ep'で置き換えるのがよいでしょう。 – maij

+0

@maij貴重な提案をありがとう。私は実際にスタックエクスチェンジでこれと似たものを見つけ出して試しましたが、まだ問題が発生しています。 Gnuplotは依然としてより低いeを求めています... 'パラメータの最終セット漸近標準誤差 ============================= ================= m = 1.4648 +/- 0.1888(12.89%) e = 8.26822e-05 +/- 413.7(5.004e + 08%) ' –

答えて

0

私は自分で問題を考え出したと思います。私のデータを考えれば、Gnuplotには、実際に小さな係数を選ぶことによって、deltasensibleの指数依存性を取り除こうとしているラインが最適でした。 Gnuplot自身よりもデータに「エラー」があるようです。

関連する問題