1

我正在尝试使用 Boost c++ 库进行 Hermite 插值,但它没有很好的文档记录,我也不太了解。

我的情况是从数据点计算某个 x 位置的 y 值,例如:

X: 0.9, 1.7, 2.55, 3.39...
Y: 0.9, 0.8, 0.85, 0.84...

并获得具有相等 x 空间(x 空间 0.5)的结果:

X: 0.5, 1.00, 1.5, 2.00, 2.5, 3.0,...
Y: 0.8, 0.95, 0.8, 0.85, 0.9, 0.9,...

boost对我有帮助吗?我在 web 中找到了更多 Hermite 的实现,但是示例及其结果输出并不是我想要的。我认为那是因为我不明白它是如何工作的。当我读到关于 Hermite 的文章时,我认为算法应该要求一些点、间距值以及可能很少的其他输入值,然后计算并返回新点,但我错了,现在迷路了..

http://www.boost.org/doc/libs/1_47_0/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html

也许有人有使用 Hermite 的经验并有类似的情况?

4

2 回答 2

1

嗯,首先,Hermite 是一位多产的数学家,所以Hermite 多项式(一个正交族)与插值法中出现的 Hermite 插值多项式无关。

其次,当您具有前几个函数导数的值以及每个点的函数值时,将应用 Hermite 插值,因此它并不真正适用于您的情况。

特别是在 Boost 中,我只能找到这种用于非均匀插值的算法:http://www.boost.org/doc/libs/1_65_0/libs/math/doc/html/math_toolkit/interpolate/barycentric.html -希望它足以满足您的目的。

于 2017-09-27T06:18:45.340 回答
0

Boost为非均匀间隔插值提供重心有理插值。此更改出现在 1.65 中,因此它相当新,您可能需要更新您的提升。如果您需要均匀间距和导数,请评估此插值和等间距点并使用cubic_b_spline插值。

于 2017-09-29T00:10:47.407 回答