2009-06-16 36 views
1

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

是吗?你会建议我在这种情况下做什么?

在此先感谢

塞巴斯蒂安

回答

1

你不能计算“扭结”的梯度(正如你雄辩地说的那样)。如果你真的需要这样一个点(x)的梯度,我只是平均在(x-d)和(x + d)的梯度,其中d是一个足够小的三角洲。这与您可能获得的任何其他单一答案在数学上有效。

例如,功能:

f(x) = |x| 

会产生:

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

那里是在原点(0,0)没有梯度。然而,对-0.0001(梯度= -1)和+ 0.0001(梯度= +1)的梯度进行平均会得到零梯度(扁平线)。

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

我会做什么,因为它在MIT的许可下,是修改源以允许Bezierspline选项使用+/- delta方法计算非连续点处的梯度。如果您认为这是一个值得的补充,甚至可能会将源代码更改推回给开发人员。

+0

对不起,我不知道这个好词。这肯定是可能的,但首先我必须找到这些点{x}。也许我应该切换到线性插值,因为我的功能非常流畅。 – 2009-06-16 07:41:34

1

这听起来很正确的。自从我看了样条曲线之后已经有一段时间了,但我很确定如果函数不连续,样条也应该在相同点上不连续。虽然我已经看到在这样的点上给出近似曲线的插值...如果没有其他人提出更好的答案,我会检查我的文本书籍。

但是一个循环是一个很好的尝试。荣誉您的功能。