gnuplot - 如何使用gnuplot在拟合()中的多项式曲线中的系数始终具有正值?
问题描述
我正在尝试对以下函数进行多项式拟合。我希望系数“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)。然后我们绘制随着 t 变化的 h1 的值。这里的'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 本身。
推荐阅读
- gmail - 未为所有邮件加载 Gmail 插件
- python - 询问用户输入数据并在他们输入“完成”后运行
- django-rest-framework - 只允许社交认证 django-rest-auth
- c# - 从 C# 到 XAMPP 的数据库连接
- graph-theory - 找到不重叠的正方形?
- angular - 创建直方图时出现“Highcharts 错误 #17”(使用 Highcharts 和 Angular 6)
- postgresql - postgres中的“createlang:找不到命令”
- python - 使用 RPYC 远程运行 cmd 时找不到命令
- java - JPA 如何跨所有相同的应用程序实例管理实体?
- python - Plotly(离线)用于 Python 点击事件