19

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

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

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

类似地,Mathematica 知道如何找到一个函数的 5 阶导数,该函数仅用符号定义,但它并不适合找到r阶导数(请参阅“当 r 是 Mathematica 中的符号时如何找到函数的 r 阶导数? ”的问题)。

此外,Mathematica 具有广泛的布尔代数功能,有些是石器时代的,但许多是最近在版本 7 中获得的。在版本 8 中,我们得到了Probability和朋友(例如Conditioned),这使我们能够对具有给定分布的随机变量的概率进行推理。这是一个非常棒的补充,它帮助我熟悉这个领域,我非常喜欢使用它。然而,...

我正在和一位同事讨论某些概率逻辑规则,比如熟悉的

在此处输入图像描述

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

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

在此处输入图像描述

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

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

4

2 回答 2

4

>> 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 -可能吗

于 2011-12-12T19:54:06.587 回答
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并对应于您给出的第一个示例的不太通用的版本。

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

于 2011-11-28T03:23:04.213 回答