如何计算带有模运算符的表达式的敏感度指数?

计算科学 调理
2021-11-28 19:59:56

我有一组形式的方程:

x1=(ax0+c)mod(m)x2=(ax1+c)mod(m)x3=(ax2+c)mod(m)xn=(axn1+c)mod(m)

我想计算每个方程关于参数的灵敏度指数。也就是说,为每个然而,让我失望了......我不认为我们可以对这样一个方程求导......在这种情况下,我不知道是否有任何其他方法来计算这些方程的灵敏度指数。acmdxidadxidcdxidmi=1,,nmod(m)

3个回答

我的解释在这里变得冗长,但答案是,尝试使用敏感性指数的连续定义对您的问题没有意义。

可以找到不连续函数相对于特定不连续点处参数的灵敏度,因此如果问题可以用域超过实数的函数提出,那么问题将是适定的;存在数学来处理这些类型的问题。(我很难找到一个好的来源,因为规范的来源似乎是 EN Rozenvasser,“不连续系统的一般灵敏度方程”,Automat。远程控制(1967),400-404,以及我所有的其他论文看到的似乎引用了这个。)

问题是模数具有整数值参数,并且您试图获得对参数的差异(即非常小的)变化的响应。不可能有意义地定义极限内发生的事情,因为你在m归零,所以这个敏感度的定义不会让你到任何地方。我不相信切换到离散微分算子会以有意义的方式解决这个问题。但是,您可以搜索文献,看看是否有任何内容;我发现了一些关于存在的离散随机动力系统的敏感性分析的工作,但是快速阅读后,我认为它不能轻易地推广到你的工作。(您的里程可能会有所不同。)如果您想对此问题进行敏感性分析,可能有更适合您的问题的方法,例如采样。

mod 操作导致函数的不连续性。这当然意味着您不能对值求导,其中的倍数。在所有其他地方,mod 操作除了移动它的左操作数之外什么都不做,所以导数就好像 mod 操作不存在一样。xiaxi+cm

要查看这里到底发生了什么,只需将绘制为给定的函数这是一个锯子功能。x1x0a,c

你需要使用一个技巧。在您的示例中,模函数仅在连续语句中引入周期性。您没有指定变量是否为整数,即使如此,您也可能希望将问题放宽到连续变量。您可以使用等式的指数来转换函数: 显然,这方程是可微的和周期性的现在你的衍生品是

e2πxi/m=e2π(axi1+c)/m
mod m
dxidae2πxi/m=(adxi1da+xi1)e2π(axi1+c)/m(dxidmxim)e2πxi/m=(adxi1dmaxi1+cm)e2π(axi1+c)/mdxidce2πxi/m=(adxi1dc+1)e2π(axi1+c)/m