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)依賴項,一切工作正常。我錯過了一些簡單的東西嗎
要強制使用'e',它可能有助於用'e = ep * ep'和'通過ep fit'來代替它。 – maij
@maij感謝您寶貴的建議。我實際上在Stackexchange上發現了類似的東西,並試用了它,但我仍然遇到問題。 Gnuplot仍然希望較低的E ...'最終設置的參數漸近標準錯誤 ======================= ========= ================= m = 1.4648 +/- 0.1888(12.89%) e = 8.26822e-05 +/- 413.7(5.004e + 08%)' –