我的功能有时在某些时候是不可微分的。当我现在使用样条曲线(降级中的Bezierspline)进行插值时,此时的插值不能按预期工作(此时我的函数有一个扭结)。现在,当使用样条插值时,它会围绕此点绘制某种循环。我认为这是因为样条函数需要函数的导数,而这些函数在这一点上并不是唯一的。
是吗?在这种情况下,你建议我做什么?
提前致谢
塞巴斯蒂安
答案 0 :(得分:1)
听起来不错。我看了样条已经有一段时间了,但我很确定如果函数不是连续的,你的样条曲线也应该在同一点上不连续。虽然我已经看过在这样的点上给出近似曲线的插值......如果其他人没有得到更好的答案,我会查看我的教科书。
但循环是一个非常好的尝试。感谢你的功能。
答案 1 :(得分:1)
你无法计算“纠结”的渐变(正如你雄辩地说的那样)。如果你真的需要在这个点(x)处有一个梯度,我只是在(x-d)和(x + d)处平均梯度,其中d是一个足够小的delta。它在数学上与你可能获得的任何其他答案一样有效。
例如,函数:
f(x) = |x|
将产生:
\ | /
\ | /
\ | /
\|/
----+----
原点(0,0)没有渐变。但是,对-0.0001(渐变= -1)和+0.0001(渐变= +1)的渐变进行平均会得到一个零(平线)的渐变。
对于在(x-d)和(x + d)处产生非对称梯度的其他方程,这应该给出一个不错的答案。
我会做的,因为它是在MIT下获得许可的,是修改源以允许Bezierspline的选项使用该+/- delta方法来计算非连续点的渐变。如果您认为这是值得添加的话,甚至可以将源代码更改推回给开发人员。