在Mathematica 8中,我想定义一个离散分布,其密度质量作为列表给出.例如,
In[1] f = ProbabilityDistribution[{2/3, 1/3}[[x]], {x, 1, 2, 1}];
Run Code Online (Sandbox Code Playgroud)
这似乎有效.然而,这发出了两次重复的警告:
"Part::pspec: Part specification x is neither an integer nor a list of integers."
Run Code Online (Sandbox Code Playgroud)
然而,f似乎正常工作.这条消息让我觉得可能有更好的方法来定义相同的分布.如何使用列表定义离散分布但不调用警告?
这很可能是Mathematica 8.0.1中的一个错误,也可能是其他版本.让我们尝试以下方法:
Table[
Export[
"Res_" <> ToString[r] <> ".png", Rasterize[
Style[x^2 + y^2, 40],
Background -> None,
ImageResolution -> r
],
Background -> None],
{r, {20, 40, 100, 300, 400, 500, 600}}
]
Run Code Online (Sandbox Code Playgroud)
这是我获得的屏幕截图:

首先要注意的是,最后两张图片的尺寸错误.这在某种程度上是好的,因为我对300或以上的分辨率感到满意.现在看看这个:
in = 72;
G3D = Graphics3D[AspectRatio -> 0.925, Axes -> {True, True, True},
AxesEdge -> {{-1, -1}, {1, -1}, {-1, -1}}, AxesStyle -> Directive[10, Black],
BaseStyle -> {FontFamily -> "Arial", FontSize -> 12}, Boxed -> False,
BoxRatios -> {1, 1, 1}, LabelStyle -> Directive[Black],
ImagePadding …Run Code Online (Sandbox Code Playgroud) 我目前正在对大量文本进行操作(在一个文件中大约290MB的纯文本).在将其导入Mathematica 8之后,我现在开始将其分解为小写单词等,因此我可以开始进行文本分析.
问题是这些过程需要很长时间.有没有办法通过Mathematica监控这些操作?对于带变量的操作,我使用了ProgressIndicator等.但这是不同的.我搜索文档和StackOverflow没有发现类似的东西.
在下面,我想监视Cases []命令的过程:
input=Import["/users/USER/alltext.txt"];
wordList=Cases[StringSplit[ToLowerCase[input],Except[WordCharacter]],Except[""]];
Run Code Online (Sandbox Code Playgroud) 我最近从mathematica 7.0更新到8.0,现在遇到使用psfrag包用LaTeX代码替换我的绘图标签的问题.一切都与早期版本和完全相同的图表完美配合,但现在psfrag保持所有标签不变.我在Ubuntu 11.04上使用Kile进行LaTeX编辑.
例如,在Mathematica中:
plot = Plot[x, {x, -0.1, 0.1},
AxesLabel -> {eps, SUM}, BaseStyle -> {FontSize -> 10}]
Export["plot.eps", plot]
Run Code Online (Sandbox Code Playgroud)
然后在LaTeX:
\begin{figure}
\psfrag{eps}{$\epsilon$}
\psfrag{SUM}{$\Sigma$}
\includegraphics{plot.eps}
\end{figure}
Run Code Online (Sandbox Code Playgroud)
现在应该用LaTeX排版替换标签,但没有任何反应.有什么建议如何解决这个问题?有谁知道Mathematica 8如何编码eps文件中的文本与早期版本相比有何不同?
我在MacOSX上运行Mathematica 8,尝试将最简单的程序编译为C.任何与C有关的东西都不能在Mathematica中运行.我安装了GCC 4.2; 我甚至用XCode多次重新安装它.这就是我正在做的和我得到的错误:
首先,我总是评估命令
Needs["CCompilerDriver`"]
Run Code Online (Sandbox Code Playgroud)
如果我将编译目标设置为C,
c = Compile[ {{x}}, x^2 + Sin[x^2], CompilationTarget -> "C"];
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,其中包含:Compile :: nogen:无法从已编译的函数创建库.
如果我尝试创建一个库,
demoFile = FileNameJoin[{$CCompilerDirectory,"SystemFiles","CSource","createDLL_demo.c"}];
lib = CreateLibrary[{demoFile},"testLibrary"]
Run Code Online (Sandbox Code Playgroud)
我收到消息$ Failed.Wolfram说这是因为我没有安装C编译器.我觉得很难相信因为我跑的时候
CCompilers[]
Run Code Online (Sandbox Code Playgroud)
它告诉我我已经安装了GCC:{{"Name" - >"GCC","Compiler" - > CCompilerDriver'GCCCompiler`GCCCompiler,"CompilerInstallation" - >"/ usr/bin","CompilerName" - >自动}}
更重要的是,终端说我也安装了GCC !! 任何帮助,将不胜感激.我真的很想将Mathematica编译成C.
c compiler-construction gcc wolfram-mathematica mathematica-8
使用Mathematica 7和8,我们发现Mathematica无法正确保存并获得适合例程的结果.我希望有人知道:这个bug的最佳实践解决方法是什么?
我们的任务是使用NonlinearModelFit拟合大量数据集,该模型为每个数据集返回一个FittedModel.这些配合需要一段时间,我们尝试使用Save和DumpSave将结果记忆到文件中.随后的分析使用Get将FittedModel拉回来.
Mathematica在没有警告的情况下执行Save&Get,但返回的FittedModel是错误的.我们调用Get并从磁盘加载一个FittedModel,调用结果"foo".尝试foo [10]用输入10来评估拟合模型.我们看到的错误是foo ["BestFitParameters"]应该返回一个列表规则,而是将字符串插入到函数中,因为它是一个类似10的数字.尝试foo [{"BestFitParameters","BestFitParameters"}]应该在列表中给出两次规则,但是对于有缺陷的foo仍然没有评估.
根据我们是否删除/清除foo或退出内核,在此基础上存在一种奇怪且误导性的行为:
但是如果我们重新启动内核就会失败
以前有没有人见过这种行为?
这个bug背后有一个很好的解释吗?
有一个很好的解决方法吗?
Mathematica可以进行贝叶斯规则条件概率计算,而无需手动计算吗?如果是这样的话?
我一直在搜索Mathemtaica doco和网络上的提示,但找不到任何东西.我不是在如何通过Mathematica手动执行贝叶斯规则,我想知道是否有一种方法来定义条件概率并自动计算其他概率.
因此,使用假设伯努利分布的玩具示例
P(Cancer+) = 0.01
P(Cancer-) = 0.99
P(Test+|Cancer+) = 0.9
P(Test-|Cancer+) = 0.1
P(Test+|Cancer-) = 0.2
P(Test-|Cancer-) = 0.8
Run Code Online (Sandbox Code Playgroud)
是否有可能解决问题
P(Cancer+|Test+) = 0.0434
Run Code Online (Sandbox Code Playgroud)
所以使用下面的内容.
Print["P(C+) = ", PCancerT=BernoulliDistribution[0.01]];
Print["P(C-) = ", PCancerF=BernoulliDistribution[0.99]];
Print[]
Print["P(T+|C+) = ", PTestTGivenCancerT=BernoulliDistribution[0.9]];
Print["P(T-|C+) = ", PTestFGivenCancerT=BernoulliDistribution[0.1]];
Print["P(T+|C-) = ", PTestTGivenCancerF=BernoulliDistribution[0.2]];
Print["P(T-|C-) = ", PTestFGivenCancerF=BernoulliDistribution[0.8]];
Print[]
Print["P(T+,C+) = ", PTestTAndCancerT = Probability[vCT&&vTTCT,{vCT\[Distributed]PCancerT,vTTCT\[Distributed]PTestTGivenCancerT}]];
Print["P(T-,C+) = ", PTestFAndCancerT = Probability[vCT&&vTFCF,{vCT\[Distributed]PCancerT,vTFCF\[Distributed]PTestFGivenCancerT}]];
Print["P(T+,C-) = ", PTestTAndCancerF = Probability[vCF&&vTTCF,{vCF\[Distributed]PCancerF,vTTCF\[Distributed]PTestTGivenCancerF}]];
Print["P(T-,C-) = ", PTestFAndCancerF = Probability[vCF&&vTTCF,{vCF\[Distributed]PCancerF,vTTCF\[Distributed]PTestFGivenCancerF}]];
Print[]
Print["P(C+|T+) = …Run Code Online (Sandbox Code Playgroud) 鉴于两个列表A={a1,a2,a3,...an}和B={b1,b2,b3,...bn},我会说A>=B,当且仅当所有ai>=bi.
有两个列表的内置逻辑比较A==B,但没有A>B.我们需要像这样比较每个元素吗?
And@@Table[A[[i]]>=B[[i]],{i,n}]
有什么更好的技巧吗?
编辑: 非常感谢大家.
这是另一个问题:
如何在N个列表中找到最大列表(如果存在)?
我想在演示文稿中显示一些动态内容.但是,我不确定到星期四我有时间在Mathematica中以我想要的方式制作幻灯片.
是否可以在A Powerpoint(Microsoft)或Keynote(Apple)演示文稿中使用Mathematica构建动态对象?
wolfram-mathematica mathematica-8 mathematica-cdf wolfram-cdf
我想知道如何从Python调用Mathematica函数.
我很欣赏一个例子,例如,使用Mathematica函数Prime.
我搜索过MathLink但是如何在Python中使用它对我来说有点模糊.
我试图使用一个名为pyml的Mathematica-Python库,但我没有成功,也许是因为这个lib看起来很旧(在教程中说Mathematica 2或3).
尝试编译源代码Wolfram/Mathematica/8.0/SystemFiles/Links/Python但在使用python 2.6时出现了几个错误(文档说只应该对python 2.3起作用).
Pythonika很有趣,但看起来只是在Mathematica笔记本中使用,我想编写.py调用Mathematica函数的文件.
那么,有人知道编写使用Mathematica函数的python程序的好方法并且可以给我一个例子吗?
mathematica-8 ×10
arrays ×1
c ×1
gcc ×1
image ×1
latex ×1
list ×1
mathlink ×1
monitoring ×1
plot ×1
python ×1
text ×1
unix ×1
wolfram-cdf ×1