错误的拟合参数,功能评估期间的未定义值

时间:2017-04-10 17:13:40

标签: gnuplot

我试图使用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)依赖项,一切正常。我错过了一些简单的事吗?

1 个答案:

答案 0 :(得分:0)

所以我想我自己弄明白了这个问题。根据我的数据,一条线最适合Gnuplot,因此它试图通过选择一个非常小的系数来消除对deltsensible的指数依赖性。与Gnuplot本身相比,数据似乎更多“错误”。