如何使用gnuplot在fit()中始终具有拟合中系数的正值



我正在尝试为以下功能做一个多项式拟合。我希望系数" 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(常数1,常数2,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本身。

最新更新