1

我有一个有时在某一点上不可微分的函数。当我现在使用样条曲线(degrafa 中的 Bezierspline)进行插值时,此时的插值不能按预期工作(此时我的函数有扭结)。现在,当用样条插值时,它会围绕该点绘制某种循环。我认为发生这种情况是因为样条曲线需要函数的导数,这在这一点上不是唯一的。

是对的吗?在这种情况下,你会建议我怎么做?

提前致谢

塞巴斯蒂安

4

2 回答 2

1

听起来不错。自从我查看样条曲线已经有一段时间了,但我很确定如果函数不连续,那么你的样条曲线在相同点也应该是不连续的。尽管我已经看到在这样的点上给出近似曲线的插值......如果没有其他人提出更好的答案,我会检查我的教科书。

但是循环是一个很好的尝试。感谢您的功能。

于 2009-06-16T07:26:44.083 回答
1

您无法计算“扭结”的梯度(正如您雄辩地所说的那样)。如果您真的需要在这样的点 (x) 处的梯度,我只需在 (xd) 和 (x+d) 处平均梯度,其中 d 是一个足够小的增量。它在数学上与您可能得到的任何其他单一答案一样有效。

例如,函数:

f(x) = |x|

将产生:

\   |   /
 \  |  /
  \ | /
   \|/
----+----

原点 (0,0) 没有梯度。但是,在 -0.0001(梯度 = -1)和 +0.0001(梯度 = +1)处平均梯度会得到零梯度(平线)。

对于在 (xd) 和 (x+d) 处产生非对称梯度的其他方程,这应该给出一个不错的答案。

由于它在 MIT 下获得许可,我会做的是修改源代码以允许 Bezierspline 使用该 +/- delta 方法来计算非连续点处的梯度。如果您认为这是一个值得添加的内容,甚至可以将源代码更改推回给开发人员。

于 2009-06-16T07:36:52.943 回答