标签: mathematica-8

如何在Python程序中使用Mathematica函数?

我想知道如何从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程序的好方法并且可以给我一个例子吗?

python unix wolfram-mathematica mathematica-8 mathlink

10
推荐指数
1
解决办法
3428
查看次数

Mathematica:3D线框

Mathematica是否支持线框图像的隐藏线移除?如果情况并非如此,那么有没有人遇到过这样的方法呢?让我们从这开始:

Plot3D[Sin[x+y^2], {x, -3, 3}, {y, -2, 2}, Boxed -> False]
Run Code Online (Sandbox Code Playgroud)

产量

要创建线框,我们可以:

Plot3D[Sin[x+y^2], {x, -3, 3}, {y, -2, 2}, Boxed -> False, PlotStyle -> None]
Run Code Online (Sandbox Code Playgroud)

产量

我们可以做的一件事就是将所有表面着色为白色.然而,这是不希望的.原因是因为如果我们将这个隐藏的线框架模型导出为pdf,我们将拥有Mathematica用于渲染图像的所有白色多边形.我希望能够以pdf和/或eps格式获得隐藏线移除的线框.


更新:

我已经发布了这个问题的解决方案.问题是代码运行速度很慢.在当前状态下,它无法在此问题中为图像生成线框.随意玩我的代码.我在帖子的末尾添加了一个链接.您也可以在此链接中找到代码

plot wolfram-mathematica wireframe mathematica-8

9
推荐指数
1
解决办法
4844
查看次数

使用NProbability []或Probability []来计算4次投掷掷骰中3个或更多头的概率

是否有可能使用概率函数或NProbability函数计算4次投币的3个或更多头的概率.

这不是关于这个问题的微不足道的答案的问题,更多的是要了解如何使用分布来解决Mathematica的这类问题.

所以使用分布P的4个随机变量

我希望这样的东西可以解决问题,但它不起作用.我得到0.

P = BernoulliDistribution[0.5];
vars = List[Distributed[a,P],Distributed[b,P],Distributed[c,P],Distributed[c,P]];
NProbability[Count[ {a,b,c,d}, 1] >= 3,  vars]
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激.

wolfram-mathematica mathematica-8

9
推荐指数
2
解决办法
401
查看次数

是否可以控制Mathematica中的数字样式?

我为我的书使用Constantia字体(随Windows 7一起提供),并希望使用Mathematica中的相同字体为本书准备图形.问题是Constantia默认输出旧式数字.我知道,例如在XeTeX中,可以控制旧式或普通数字是否用于输出.

是否可以控制Mathematica中的数字样式?

fonts wolfram-mathematica mathematica-8

8
推荐指数
2
解决办法
321
查看次数

在Mathematica的3D绘图中将图像放置在XY平面上

请从以下内容考虑以下内容

我们可以在Mathematica中生成"foveated Image"吗?

Clear[acuity];

acuity[distance_, x_, y_, blindspotradius_] :=

 With[{\[Theta] = ArcTan[distance, Sqrt[x^2 + y^2]]},
      Clip[(Chop@Exp[-Abs[\[Theta]]/(15. Degree)] - .05)/.95, 
                     {0,1}] (1.-Boole[(x + 100.)^2 + y^2 <= blindspotradius^2])]

Plot3D[acuity[250., x, y, 9], {x, -256, 256}, {y, -256, 256}, 
PlotRange -> All, Axes -> False, PlotPoints -> 40, 
ExclusionsStyle -> Automatic, Boxed -> False, Mesh -> None]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我怎么能在X和Y平面上添加下面的照片.然后将表面绘制成透明的.可能吗 ?(用上述问题中的解决方案获得的图像).

在此输入图像描述

3d plot wolfram-mathematica image mathematica-8

8
推荐指数
1
解决办法
1320
查看次数

避免重复调用插值

我想在mathematica中插入一个函数.

函数取决于一个参数a,实际上它是一个函数的反函数F,它也取决于a,所以我建立我的近似如下,

approx = Interpolation[Table[{F[0.1 n, a], 0.1 n}, {n, -100, 100}]]
Run Code Online (Sandbox Code Playgroud)

现在我可以简单地调用一点approx[x]来评估反函数.

相反,我想做这样的事情:定义一个带参数的函数,

G[x_,a_] = "construct the interpolating function,
            and return the value of the function at x"
Run Code Online (Sandbox Code Playgroud)

然后写G [x,a]来评估函数.否则我将不得不为我感兴趣的所有参数重复插值并且有很多变量.我已经尝试将Interpolation []调用放在一个模块中,但每次调用G [x,a]时都只构造插值!我怎么能避免这个?

谢谢阅读.

wolfram-mathematica mathematica-8

8
推荐指数
3
解决办法
735
查看次数

如何在Mathematica 8中以编程方式访问有关"Graph"对象的信息?

我正在尝试访问GraphMathematica 8中对象内的信息.出于某种原因,该Part命令似乎不起作用.

myGraph 是我想要访问的对象.

下面的第一行显示myGraph.其他人则用来检查它.

myGraph

myGraph // FullForm  
myGraph // InputForm  
myGraph // OutputForm    
myGraph[[1]]
myGraph[[2]]  
Run Code Online (Sandbox Code Playgroud)

myGraph

为什么不myGraph[[1]]回来List[1,3,4,2,5] ?[我检查了2级以防万一Graph被一些隐形包装包裹起来. Level[myGraph,1],简单地回来{}.并FullForm[myGraph][[1]]返回图表本身的图片.

我必须忽略一些明显的东西.


编辑

这是我用来生成图表的代码.其中大部分与手头的问题无关.但至少你会使用我正在使用的相同代码.

ClearAll[edges, compatibleQ, adjacentCourses, g];
edges[w_, b_] := 
 Most /@ Accumulate /@ 
   Flatten[Permutations[#] & /@ IntegerPartitions[w, All, b], 1]

compatibleQ[j_, k_, edg_] := 
 If[Intersection[edg[[j]], edg[[k]]] == {}, {j, k}, False]

adjacentCourses[edg_] := 
 Module[{len = Length[edg]},
  Cases[Flatten[Table[compatibleQ[j, k, edg], {j, len}, {k, j, len}], 
    1], …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica mathematica-8

7
推荐指数
3
解决办法
519
查看次数

格式化使用消息

如果您查看Mathematica8中的Combinatorica包,您将找到函数的定义.我有兴趣知道的是Mathematica如何知道如何格式化使用信息.有些东西告诉我,我没有看正确的文件.无论如何,让我们尝试以下方法:(mathematicapath)/AddOns/LegacyPackages/DiscreteMath/Combinatorica.m

Cofactor::usage = "Cofactor[m, {i, j}] calculates the (i, j)th cofactor of matrix m."
Run Code Online (Sandbox Code Playgroud)

该行是上述文件中的682行.现在如果我们在mathematica笔记本中运行它并且我们使用,?Cofactor我们将看到完全相同的消息.但是如果我们得到包,那么消息就被格式化了.这是一个截图:

在此输入图像描述

注意函数中的m,i和j是如何变化的,并且在消息中添加了一个双箭头.我认为箭头已添加到邮件中,因为它存在文档.有人可以解释这种行为吗?


编辑:这是我的笔记本文件的屏幕截图,自动保存到m文件.

在此输入图像描述

正如你所看到的那样,L并且M在斜体时代是新的罗马.现在我将加载包并查看用法.

在此输入图像描述

到现在为止还挺好.现在让我们看一下文档中心.我会寻找这个功能LineDistance.

在此输入图像描述

如您所见,它显示了一个奇怪的消息.在这种情况下,我们只想显示没有任何样式的消息.我仍然无法弄清楚Combinatorica包是如何做到的.我按照这个来制作索引,以便doc中心可以显示摘要.摘要本质上是使用显示.如果我需要更具体,请告诉我.

wolfram-mathematica mathematica-8 usage-message

7
推荐指数
1
解决办法
649
查看次数

用纹理在Mathematica中导出图形

大家好,我一直遇到Mathematica 8.0的问题.

当我将Graphics3D导出为3DS或任何其他格式时,纹理总是丢失.例如在附带的屏幕截图中,截图,你会看到我创建了一个平面,将其纹理化并导出到3DS然后当我将其导回时,没有纹理.

有没有一种方法可以导出,同时保留纹理?谢谢.

wolfram-mathematica mathematica-8

7
推荐指数
1
解决办法
412
查看次数

如何使用权重标记图边

警告!当Mathematica v 8.0是最酷的孩子时,我发布了这个问题.从版本9.0.1开始,该错误已得到解决

The help for EdgeLabels 状态:

在此输入图像描述

然而:

CompleteGraph[4,
 EdgeWeight -> Range@6,
 VertexShapeFunction -> "Name",
 EdgeLabels -> "EdgeWeight"]
Run Code Online (Sandbox Code Playgroud)

结果是:

在此输入图像描述

所以,没有Edge Labels ......我想这是一个bug.

我使用了一个讨厌的结构,如:

adj = {{\[Infinity], 1, 1, 1, 1}, {1, \[Infinity], 2, 2, 2}, 
       {1, 2, \[Infinity], 2, 2}, {1, 2, 2, \[Infinity], 2}, 
       {1, 2, 2, 2, \[Infinity]}};

WeightedAdjacencyGraph[adj,
    VertexShapeFunction -> "Name", 
    EdgeLabels -> 
     MapThread[Rule,{EdgeList@#,AbsoluteOptions[#, EdgeWeight]/.{_ -> x_}-> x}], 
    GraphHighlight -> FindEdgeCover[#]]  
                                        &@ WeightedAdjacencyGraph[adj]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

好主意?

wolfram-mathematica mathematica-8

7
推荐指数
2
解决办法
4883
查看次数