如何使用gnuplot在fit()中始终使多项式曲线拟合中的系数为正值?

如何使用gnuplot在fit()中始终使多项式曲线拟合中的系数为正值?,gnuplot,curve-fitting,Gnuplot,Curve Fitting,我试图为下面的函数做一个多项式拟合。我希望系数“p003”始终为正值。在gnuplot中是否有任何选项可用于在p003上设置该约束 我已尝试设置p003>=0,但这会导致语法错误 h1(x,y,t) = 1/(p000+p100*x+p010*y+p001*t+p200*x*x+p020*y*y+p002*t*t+p110*x*y+p011*y*t+p101*x*t+p003**2*t*t*t); fit h1(x,y,t) "data.txt" u 1:2:3:5:(1) via p000,p

我试图为下面的函数做一个多项式拟合。我希望系数“p003”始终为正值。在gnuplot中是否有任何选项可用于在p003上设置该约束

我已尝试设置p003>=0,但这会导致语法错误

h1(x,y,t) = 1/(p000+p100*x+p010*y+p001*t+p200*x*x+p020*y*y+p002*t*t+p110*x*y+p011*y*t+p101*x*t+p003**2*t*t*t);
fit h1(x,y,t) "data.txt" u 1:2:3:5:(1) via p000,p100,p010,p001,p200,p020,p002,p110,p011,p101,p003;
@Ethan评论后的编辑版本

h1(x,y,t) = 1/(p000+p100*x+p010*y+p001*t+p200*x*x+p020*y*y+p002*t*t+p110*x*y+p011*y*t+p101*x*t+s3**2*t*t*t);
fit h1(x,y,t) "result_mutual_-1_-1_0.15_0.25_0.2_0.85_0.2_-1_0.098_0.098_0.098_JBE_JW.txt" u 1:2:3:5:(1) via p000,p100,p010,p001,p200,p020,p002,p110,p011,p101,s3;
p003 = sqrt(s3);
编辑:描述问题


在方程式中,x和y设置为特定值。所以h1(x,y,t)变成h1(constant1,constant2,t)。然后我们将h1的值绘制为t的变化t'这里是距离,t>0。

根据伪参数(
s3**2
)定义函数和拟合,然后设置p003=
s3**2

澄清:

h1(x,y,t) = 1/(p000+p100*x+p010*y+p001*t+p200*x*x+p020*y*y+p002*t*t+p110*x*y+p011*y*t+p101*x*t+ (s3**2) *t*t*t)
fit h1(x,y,t) "result_mutual_-1_-1_0.15_0.25_0.2_0.85_0.2_-1_0.098_0.098_0.098_JBE_JW.txt" u 1:2:3:5:(1) via p000,p100,p010,p001,p200,p020,p002,p110,p011,p101,s3
p003 = s3**2

这样做的缺点是,s3报告的协方差和误差估计值必须进行适当修正,以适用于p003本身。

定义您的函数,并根据伪参数(
s3**2
)进行拟合,然后设置p003=
s3**2

澄清:

h1(x,y,t) = 1/(p000+p100*x+p010*y+p001*t+p200*x*x+p020*y*y+p002*t*t+p110*x*y+p011*y*t+p101*x*t+ (s3**2) *t*t*t)
fit h1(x,y,t) "result_mutual_-1_-1_0.15_0.25_0.2_0.85_0.2_-1_0.098_0.098_0.098_JBE_JW.txt" u 1:2:3:5:(1) via p000,p100,p010,p001,p200,p020,p002,p110,p011,p101,s3
p003 = s3**2

这样做的缺点是,s3报告的协方差和误差估计值必须进行适当的修正,以适用于p003本身。

我编辑了代码。这就是你们想说的吗?所以,对于一些数据集,我得到s3是负值。又回到了同样的问题。对于一些数据集,我得到s3平方s3是否真的与方程中s3的值平方?我认为p003=s3^2。如果s3是负数。我在等式中使用了s3^2,p003=s3^2。我编辑了代码。这就是你们想说的吗?所以,对于一些数据集,我得到s3是负值。又回到了同样的问题。对于一些数据集,我得到s3平方s3是否真的与方程中s3的值平方?我认为p003=s3^2。如果s3是负数。我在方程中使用了s3^2,p003=s3^2。