我想计算一个有限差分(类似这样的SO Post)。我的数据如下:我的 x 值是 2 的幂(4、8、16、32 和 64)。对应于它们的是 y 值,这样
在哪里是单调函数。我的兴趣是计算有限差分,例如
有人可以指出解决此问题的方法。我需要使用 C/C++ 来解决这个问题,我不能使用 matlab。我只有五个 X 值,所以任何复杂的解决方案都是可以接受的。谢谢您的帮助。
我想计算一个有限差分(类似这样的SO Post)。我的数据如下:我的 x 值是 2 的幂(4、8、16、32 和 64)。对应于它们的是 y 值,这样
在哪里是单调函数。我的兴趣是计算有限差分,例如
有人可以指出解决此问题的方法。我需要使用 C/C++ 来解决这个问题,我不能使用 matlab。我只有五个 X 值,所以任何复杂的解决方案都是可以接受的。谢谢您的帮助。
在这种情况下,一种简单而准确的方法是使用标准差空间。
自从等距,很容易使用任何标准差分来近似底线上的导数。
您不想拟合一般多项式,而是考虑使用分段三次样条在每个网格点之间的间隔内插值函数。三次样条的一个好的特性是它们可以最小化拟合曲线的弯曲能量,这可能会导致更少的激进振荡(这可能是您之前尝试过的二次方法遇到的负值的原因)。
您可以通过提出一个单独的三次多项式来获得分段三次样条
在每个区间
其端点是您选择的网格点。然后,您可以施加以下条件: 1. 所有函数必须与每个节点处的数据一致 2. 函数必须在每个节点点处连续 3. 每个函数的一阶和二阶导数必须在每个节点处连续的节点点
您可以通过施加所谓的“自然样条”条件来获得两个额外的方程,即二阶导数在第一个和最后一个节点处必须为零。这应该为您提供足够的信息来解决每个间隔中每个三次多项式的每个系数。