Gnuplot 拟合参数错误,函数求值时未定义值
我试图使用Gnuplot进行一些简单的拟合,但遇到了一个无法解释的错误。似乎我在函数的定义上犯了严重的错误 我首先从一些函数开始。这些函数的形式并不重要,因为fits工作得很好,但是因为它们稍后会涉及,所以我也会报告它们Gnuplot 拟合参数错误,函数求值时未定义值,gnuplot,Gnuplot,我试图使用Gnuplot进行一些简单的拟合,但遇到了一个无法解释的错误。似乎我在函数的定义上犯了严重的错误 我首先从一些函数开始。这些函数的形式并不重要,因为fits工作得很好,但是因为它们稍后会涉及,所以我也会报告它们 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
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
如果我强加
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)依赖项,一切都会正常工作。我错过了一些简单的东西吗 所以我想我自己解决了这个问题。根据我的数据,一条线最适合Gnuplot,因此它试图通过选择一个非常小的系数来消除对deltasensible的指数依赖。与Gnuplot本身相比,数据似乎更像是一个“错误”。要强制执行肯定的
e
,可以用e=ep*ep
和fit via ep
@maij替换它。感谢您的宝贵建议。实际上,我在Stackexchange上发现了类似的东西,并尝试了一下,但我仍然遇到了一些问题。Gnuplot仍然想要一个更低的e<代码>最终参数集渐近标准误差==================================================m=1.4648+/-0.1888(12.89%)e=8.26822e-05+/-413.7(5.004e+08%)
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