【问题标题】:Doing probabilistic calculations on a higher abstraction level在更高的抽象级别上进行概率计算
【发布时间】:2011-11-26 22:48:17
【问题描述】:

致反对者:这不是关于数学的问题,而是 关于编程语言Mathematica的问题。

Mathematica 的主要特点之一是它可以象征性地处理许多事情。但如果你仔细想想,许多象征性的特征实际上只是象征性的一半。

以向量为例。我们可以有一个像 {x,y,z} 这样的符号向量,用一个充满符号的矩阵进行矩阵乘法,最终得到一个符号结果,因此我们可以考虑 那个 符号向量代数。但是我们都知道,开箱即用,Mathematica 不允许您说符号 x 是一个向量,并且给定一个矩阵 A, 一个x 也是一个向量。这是更高层次的抽象,Mathematica(目前)不能很好地处理。

同样,Mathematica 知道如何找到仅以符号定义的函数的 5 阶导数,但它并不适合找到 r 阶导数(请参阅“How to find a function's rth derivative when r is symbolic in Mathematica? "问题)。

此外,Mathematica 有大量的Boolean algebra capabilities,有些是石器时代的,但最近在第 7 版中获得了很多。在第 8 版中,我们得到了Probability 和朋友(例如Conditioned),这使我们能够推理具有给定分布的随机变量。这是一个非常棒的补充,它帮助我熟悉这个领域,我非常喜欢使用它。不过……

我正在和一位同事讨论某些概率逻辑规则,就像熟悉的那样

即,给定事件/状态/结果A,事件/状态/结果C的条件概率为真。

具体来说,我们正在研究这个:

虽然我曾高度评价 Mathematica 的 Probability,但在我意识到我不知道如何立即使用 Mathematica 解决这个问题之前。同样,就像抽象向量和矩阵以及符号导数一样,这似乎是一个太高的抽象级别。或者是吗?我的问题是:

您能找到一种方法来使用 Mathematica 程序找出上述等式和类似等式中的真假吗?

【问题讨论】:

    标签: wolfram-mathematica mathematica-8


    【解决方案1】:

    >> Mathematica 不允许你说符号 x 是向量

    确实如此...无论如何都足够接近...这是Reals的集合。这称为假设或条件反射,具体取决于您想要做什么。

    Refine[Sqrt[x]*Sqrt[y]]
    

    上面没有细化,因为它假设 X 和 Y 可以是任何符号,但是如果你缩小它们的范围,你会得到结果:

    Assuming[ x > 0 && y > 0, Refine[Sqrt[x]*Sqrt[y]]]
    

    如果有能力说:Element[x,Reals^2](二维实向量),可能在 Mathematica 9 中,那就太好了。:-)


    至于这个问题:

    >> 你能找到一种方法来使用 Mathematica 程序找出上述和类似方程式中的真假吗?

    请参阅我对这个问题的回答(第一个),以了解贝叶斯定理的符号方法: https://stackoverflow.com/questions/8378336/how-do-you-work-out-conditional-probabilities-in-mathematica-is-it-possible

    【讨论】:

      【解决方案2】:

      看了一眼,从Condition的文档中找到了一个例子:

      In[1]:= c = x^2 < 30; a = x > 1;
      

      (抱歉这里的格式...)

      In[2]:= Probability[c \[Conditioned] a, x \[Distributed] PoissonDistribution[2]] == 
      Probability[c && a, x \[Distributed] PoissonDistribution[2]] / Probability[a, x \[Distributed] PoissonDistribution[2]]
      

      计算结果为True,对应于您给出的第一个示例的不太通用的版本。

      如果我有时间的话,我会在今晚晚些时候重温这个。

      【讨论】:

      • 这是我一直在谈论的中级抽象的一个例子。我在问题中使用的第一个等式是正确的,没有任何分布和其他关系的规范。这就像拥有 a==b、b==c 并得出 a==c 的结论。您可以通过提供 a、b 和 c 的 实例 并显示其真实性来做到这一点。不太一样,但我想你明白我的意思。
      • @SjoerdC.deVries - 当我阅读您的 Q 时,我想到了另一个更高层次的抽象示例,但我没有时间(或不想提出它)。我最初是在阅读一本关于 Haskell (learnyouahaskell.com/starting-out) 的书时遇到的,特别是关于“列表理解”的部分。这是一个排版图像的链接,说明了我希望 MMA 可以用“数学符号”做的事情:s3.amazonaws.com/lyah/setnotation.png 又一个例子?符号矩阵代数结果/推导/简化。 (我知道不久前有人确实在这方面工作过……现在找不到了。)
      猜你喜欢
      • 2013-06-18
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多