带时间偏移的Gnuplot曲线拟合
我对使用Gnuplot的曲线拟合过程有一个问题。我有时间从0.5024开始的数据。我想使用一个线性sin/cos组合来拟合随时间变化的值M(M=a+bsin(wt)+ccos(wt))。为了进一步处理,我只需要c值。 我的代码是带时间偏移的Gnuplot曲线拟合,gnuplot,offset,curve-fitting,Gnuplot,Offset,Curve Fitting,我对使用Gnuplot的曲线拟合过程有一个问题。我有时间从0.5024开始的数据。我想使用一个线性sin/cos组合来拟合随时间变化的值M(M=a+bsin(wt)+ccos(wt))。为了进一步处理,我只需要c值。 我的代码是 f(x)=a+b*sin(w*x)+c*cos(w*x) fit f(x) "data.dat" using 1:2 via a,b,c,w 参数c的渐近标准误差为66%,似乎相当高。我怀疑这与以下事实有关,时间从0.5024开始,而不是0。我能做的当然是 fit f
f(x)=a+b*sin(w*x)+c*cos(w*x)
fit f(x) "data.dat" using 1:2 via a,b,c,w
参数c的渐近标准误差为66%,似乎相当高。我怀疑这与以下事实有关,时间从0.5024开始,而不是0。我能做的当然是
fit f(x) "data.dat" using ($1-0.5024):2 via a,b,c,w
其渐近误差约为10%,这要低得多。问题是:我能做到吗?带有时间偏移的新绘图是否仍然表示原始曲线?还有其他想法吗
提前感谢您的帮助:-)您是否可以这样做取决于您拟合的曲线是否代表您正在研究的物理现象,是否与您需要遵守的物理模型一致。我的建议是,你提供这些信息,然后在物理论坛(或化学、生物学等,取决于你的专业)上再次提问。在没有看到数据的情况下回答这个问题有点困难,但你的观察是典型的 问题是拟合本身的影响,甚至是你的公式。让我用一个示例数据集来解释它。(好吧,这将成为话题……) 借口 数据遵循函数f(x)=x,所有y值都已被gassian随机数移位。此外,数据在x-dange[600:800]中 现在可以简单地应用线性拟合f(x)=m*x+b。根据Gauß的误差分布,误差为
df(x)=sqrt((dm*x)²+(db²)
。因此,您可以绘制数据、线性函数和误差裕度f(x)+/-df(x)
结果如下:
参数:
m = 0.981822 +/- 0.1212 (12.34%)
b = 0.974375 +/- 85.13 (8737%)
相关矩阵:
m b
m 1.000
b -0.997 1.000
你可能会注意到三件事:
m = 1.0465 +/- 0.1211 (11.57%)
b = -12.0611 +/- 7.027 (58.26%)
相关性:
m b
m 1.000
b -0.000 1.000
与第一个图相比,m的值和误差几乎相同,但非常大的误差ob b现在要小得多。原因是m和b不再相关,所以一个(微小的)变化m不会给b带来(非常大的)变化。同样令人高兴的是,误差幅度已经缩小了很多
这是带有原始数据、第一个拟合函数和“移位数据的后移位函数”的最后一个图:
关于您的健身功能:
首先,有一个很大的相关性问题:b
和c
是极为相关的,因为两者共同定义了振荡的相位和振幅。使用另一个等效功能会有很大帮助:
f(x)=a+N*sin(w*x+p)
这里,相位和振幅是分开的。你仍然可以根据拟合结果来计算你的c,我想,误差要大得多
与我的示例一样,如果数据远离y轴,则w
的微小变化将对p
产生很大影响。所以,我建议移动你的数据,使它的齿轮在y轴上,这样就可以几乎消除这个问题
这个班次可以吗?
对。您不需要更改数据,只需更改坐标系即可获得更好的错误。此外,拟合函数应该描述数据,因此它应该在数据所在的范围内非常准确。在我的第一个图中,最高精度在y轴,而不是数据所在的位置
重要的
你应该经常注意你使用了哪些技巧。否则,有些人可能会检查你的结果并拟合数据而不使用技巧,看到的是红色曲线而不是绿色曲线,可能会指责你作弊……尽管你也可以在这里告诉我们-如果我熟悉这个主题,我可能可以帮你解决。这是CFD数据。该模型代表了我的物理系统,但它当然只是模拟数据。没有可与之比较的测量数据,因此我必须坚持使用我的CFD数据。因此,没有必要在物理论坛上问这个问题。我所拥有的只是一个从t=0.5024开始的更大数据集的剪切图。@Jan但这并没有真正解决这个问题:你只是想得到一条尽可能接近你的结果的曲线(不管它是什么形状),还是你正在建模的物理现象是由一个特定的拟合函数描述的,你需要拟合这个函数?如果这是第一种选择,那么就使用任何有效的方法,如果这是第二种选择,那么你就要坚持你所拥有的。