【问题标题】:Sympy: Howto to rewrite erf functionSympy:如何重写 erf 函数
【发布时间】:2014-07-28 12:11:29
【问题描述】:

我在 SymPy 中有一个表达式,它涉及正常的累积函数 N(x),它通过等式 N(x)=0.5*erf(x/sqrt(2)) + 0.5 直接链接到误差函数。 当我使用 SymPy 的 Normal(0,1).cdf(x) 函数时,它是使用误差函数编写的。因此,当我输出一些(复杂)表达式的乳胶字符串时,使用 erf 时似乎更复杂(而不是 N(x),它输出上面提到的方程)。我试图定义一个符号 N=0.5*erf(x/sqrt(2)) + 0.5 并尝试命令“重写”用 N 重写我的表达式,但“重写”似乎只适用于内部定义的函数。 鉴于我事先不知道 some_expression(不能使用 subs),有谁知道如何用 N(some_expression) 重写 erf(some_expression)?

提前致谢

【问题讨论】:

    标签: sympy


    【解决方案1】:

    我从您的问题中得知您正在使用来自 sympy.statistics 的Normal。您应该转到 sympy.stats。 sympy.statistics 已被弃用一段时间,并将在下一版本的 SymPy 中删除。

    要更直接地回答您的问题,您可以将函数替换为使用replace 的函数,例如expr.replace(erf, lambda x: (N(x) - 0.5)/0.5)

    这里的问题是没有函数N。我希望这在 sympy.stats 中做得更好,其中分布是象征性的。但是,我没有找到办法。我为此打开了https://github.com/sympy/sympy/issues/7819

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 2015-09-24
      相关资源
      最近更新 更多