1

所以,我有以下用 Python 绘制的数据。 温度与天

数据是我正在使用的微分方程系统中强制项的输入。因此,我需要为这些数据拟合一个连续函数,这样我就不必处理逐步函数的不连续性可能带来的稳定性问题。不幸的是,这是一个相当大的数据集。

我试图最终得到一个拟合函数,它是可能的,并且不太繁琐,无法翻译成 Stan,这是我编写微分方程的语言,所以更喜欢分段多项式形式的东西,最多只有几个我可以手动编码的部分。

polyfit从 from开始numpy,这不是很好。使用UnivariateSplinefromscipy给了我一个不错的选择,但它并没有给我一些看起来易于翻译成 Stan 的东西。因此,我一直在寻找其他适合的建议,我可以尝试返回更容易翻译成其他语言的函数?查看我的数据的形状,是否有可能有用的周期性样条拟合?

4

2 回答 2

1

UnivariateSpline 对象具有 get_knots 和 get_coeffs 方法。它们为您提供 b 样条基础中拟合的节点和系数。

另一种等效的方法是splrep用于拟合(和splev评估)。

要转换为分段多项式表示,请使用 PPoly.from_spline (检查文档以了解后者的确切格式)

如果你想要的是傅立叶空间表示,你可以使用 leastsq 或 least_squares。必须为 NLSQ 拟合参数提供合理的起始值。至少我会从例如周期的最大到最大距离估计和幅度的最大到最小估计开始。

然而,与非线性拟合一样,YMMV。

于 2016-05-20T11:20:55.717 回答
0

从方向场看来,可能是涉及多个正弦函数之和或组合的拟合。例如:sin(cos(2x))、sin(x)+2cos(x) 等。我会使用 Wolfram Alpha、Mathematica 或 Matlab 来创建方向场。

于 2016-05-20T04:23:45.020 回答