我试图使用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时,我认为算法应该要求一些点,间隔值和可能很少的其他输入值,然后计算并返回新点,但我错了,现在丢失..
也许有人有使用Hermite的经历并且有类似的情况?
答案 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插值。