计算化学公社

标题: 怎么求解两条曲线的差值? [打印本页]

作者
Author:
wxhwbh    时间: 2020-6-3 17:01
标题: 怎么求解两条曲线的差值?
本帖最后由 wxhwbh 于 2020-6-3 17:40 编辑

自己有一些计算数据,和标准的数据对照。画出图来就是两条XY曲线。我想比较两条曲线的差异,想到把两条曲线做差,于是动手写程序。但发现两组数据的自变量并不同(也就是两条曲线的X 不是一一对应的,甚至数据点数目或者范围都不一定一样),这样直接做差是没有意义的。虽说origin可以做出两条曲线的差,但由于我有大量的数据,觉得自己写程序处理比较方便。网上查了一下基本都是说做非线性拟合,但不同的数据曲线形状完全不同,感觉拟合的效果可能不是很好。所以想问问如何处理这种自变量不统一的两条曲线做差问题?或者有什么库可以解决的吗?
作者
Author:
thanhtam    时间: 2020-6-3 17:07
本帖最后由 thanhtam 于 2020-6-3 17:16 编辑

标题“插值”应该是打错了。

但是巧合的是,这个问题可以用插值来解决。例如本来两条曲线的x值为
x1: 10,20,40,50.
x2:10,30,45,50.
通过插值,把x1,x2都变成10,15,20,...,40,45,50
原理就是在原来的数据点之间插入新的数据点。这样当然会产生误差,但是对于不适合拟合的情况,比拟合好一点。

具体怎么做取决于你用的工具,搜索interpolation即可。




作者
Author:
wxhwbh    时间: 2020-6-3 17:42
thanhtam 发表于 2020-6-3 17:07
标题“插值”应该是打错了。

但是巧合的是,这个问题可以用插值来解决。例如本来两条曲线的x值为

谢谢你,请问你了解有什么插值的库好用吗?最好是fortran的,或者python的。
作者
Author:
thanhtam    时间: 2020-6-3 17:53
wxhwbh 发表于 2020-6-3 17:42
谢谢你,请问你了解有什么插值的库好用吗?最好是fortran的,或者python的。

python的scipy
作者
Author:
sobereva    时间: 2020-6-3 20:22
用B-spline插值。彭国伦的Fortran95的书靠后部分就有介绍,也给了现成代码。还有好多现成的B-spline库
https://github.com/Takayuki-Miyagi/NdSpline
https://github.com/pyccel/splf2003
https://github.com/jacobwilliams/bspline-fortran
作者
Author:
akber123    时间: 2020-6-4 02:00
origin 做图可以解决的吧
作者
Author:
卡开发发    时间: 2020-6-4 02:23
可能是先插值,让两条线上的点对应且数量相同。然后曲线的相似性我觉得可以用Fréchet distance之类的方式来衡量。
作者
Author:
hxd_yi    时间: 2020-6-4 09:41
插值后,我还建议可以使用内积来度量两个曲线的平局差异。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3