2017-04-10 67 views
0

我正在嘗試使用Gnuplot進行一些簡單的擬合,並遇到某種我無法解釋的錯誤。似乎我正在做我的功能定義非常錯誤的事情。錯誤的擬合參數,功能評估期間的未定義的值

我第一次開始使用一些功能。這些功能形式並不重要,因爲這些功能很好,但是由於它們在後期涉及到,我也正在報告它們。

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 

如果我強加

m=3.8 
e=0.5 

,只是畫出函數g(x)疊加在數據似乎工作得很好。

但是,如果我嘗試使用參數

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

,以適應它,我得到以下錯誤

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 

出於某種原因,gnuplot在嘗試爲M,E真是奇怪的價值觀,但我提供了它們的初始值。如果我刪除deltalatent(x)依賴項,一切工作正常。我錯過了一些簡單的東西嗎

+0

要強制使用'e',它可能有助於用'e = ep * ep'和'通過ep fit'來代替它。 – maij

+0

@maij感謝您寶貴的建議。我實際上在Stackexchange上發現了類似的東西,並試用了它,但我仍然遇到問題。 Gnuplot仍然希望較低的E ...'最終設置的參數漸近標準錯誤 ======================= ========= ================= m = 1.4648 +/- 0.1888(12.89%) e = 8.26822e-05 +/- 413.7(5.004e + 08%)' –

回答

0

所以我覺得我自己想出了這個問題。根據我的數據,一條線是最適合Gnuplot的線,所以它試圖通過選擇一個非常小的係數來去除對可分辨的指數依賴。與Gnuplot本身相比,看起來更像數據的「錯誤」。

相關問題