c ++ Boost中的Hermite插值算法

时间:2017-09-27 05:52:54

标签: c++ boost interpolation hermite

我试图使用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,...

可以提升对我有帮助吗?我在网上发现了更多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的经历并且有类似的情况?

2 个答案:

答案 0 :(得分:1)

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

其次,当你有几个函数导数的值以及每个点的函数值时,会应用Hermite插值,所以它在你的情况下并不适用。

特别是在Boost中,我只能找到非均匀插值的算法:http://www.boost.org/doc/libs/1_65_0/libs/math/doc/html/math_toolkit/interpolate/barycentric.html - 这对于你的目的来说已经足够了。

答案 1 :(得分:0)

Boost为非均匀间隔插值提供barycentric rational interpolation。这个变化降到1.65,因此它相当新,你可能需要更新你的提升。如果需要均匀的间距和导数,请评估此插值和等间距点并使用cubic_b_spline插值。