【问题标题】:Differentiable approximation of the round() Matlab functionround() Matlab 函数的可微近似
【发布时间】:2012-08-14 12:07:20
【问题描述】:

您能否建议round Matlab 函数的可微近似?

round 函数如下所示:

我想要一个 [非常] 类似于图中的可微函数。

【问题讨论】:

    标签: matlab approximation calculus


    【解决方案1】:

    您可以使用dirac delta 编写导数 - 它称为“狄拉克梳子”。

    您还可以将轮函数编写为Heaviside step functions 的总和。

    两者都有很多近似值 - 只需选择一个可微分的。

    【讨论】:

    • 例如 cos(Pix)^100 看起来像一个(未归一化的)狄拉克梳,那么 integrals.wolfram.com/index.jsp?expr=cos%28PIx%29^100&random=false 给出一个原始 f(x ) 和 (f(x)-f(0.5))/(f(1.5)-f(0.5)) 给出了相当陡峭的楼梯。
    • 您能否具体说明一下可以使用哪种狄拉克三角洲?
    • 非常感谢!
    • 我几乎总是会选择近似值作为高斯之和。但这完全取决于您进一步的工作流程 - 一个错误的选择可能会让它变得非常困难。
    【解决方案2】:

    嗯,y=x 是可微的,如果你站在足够远的地方,它看起来就像你的目标函数。它与round 的不同之处在于它将实数映射到实数,而不是将实数映射到整数。

    除了诸如f(r) = 1 for all r in Reals 之类的微不足道的函数之外,我认为谈论函数从实数到整数的可微性是没有意义的。

    通过明智地选择三角函数,您可能会得到更接近阶跃函数的东西。比如这个

    sin(x)+x 的图。如果我有更多时间,我可能会调整它以通过 (k,k) 传递所有整数 k,但我没有,所以我将把它留给你或其他路人。

    【讨论】:

    • 要添加到答案中,您实际上可以将三角波en.wikipedia.org/wiki/Triangle_wave 添加到 x。这样你就可以尽可能接近阶梯函数。
    • 嗯,三角波在无限个点上不可微分,或者在任何范围内的有限个点上都不可微。
    • True - 写得太快了:)。我的意思是你可以将它的傅里叶变换添加到某个顺序。
    • x - sin(2pi x)/(2pi)
    【解决方案3】:

    你的函数的导数几乎在所有地方都是 1。如果可能,仅使用 1。

    如果确实需要使函数平滑,可以考虑使用低通滤波器。

    【讨论】:

    • 就像我最初所说的y=x,如果你从远处看的话!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2023-03-06
    • 2015-04-15
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多