我试图使用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 :(得分:0)
所以我想我自己弄明白了这个问题。根据我的数据,一条线最适合Gnuplot,因此它试图通过选择一个非常小的系数来消除对deltsensible的指数依赖性。与Gnuplot本身相比,数据似乎更多“错误”。