小编dbj*_*ohn的帖子

Mathematica 7中Un/Comment out代码的键盘快捷键?

注释/取消注释一段代码的键盘快捷键在其他编程IDE中常用于Java,.Net等语言.我发现它是一种非常有用的技术,在通过试验和错误进行实验时,可以暂时注释掉并取消注释代码的行,单词和部分,以找出什么是无效的.

我在版本7的Mathematica前端找不到任何这样的键盘快捷键.我知道可以通过选择代码注释掉代码,单击鼠标右键并从出现的菜单中选择取消/注释但这太慢了编码.

我尝试使用键盘上的菜单键 访问它,Menu但Mathematica前端不响应或识别此键与其他应用程序不同,这可能允许用于评论的组合键.其他人可以验证这不是我的机器所独有的,并且mathematica无法识别该密钥.我查看了这个问题并查看了KeyEventTranslations.tr文件,但我认为没有办法创建一个快捷方式来执行此操作(?).我应该忍受它吗?

还有其他建议吗?

(我已经看到有一个Emacs版本的mathematica,我从来没有尝试过Emacs或者这个Mma版本,并且想象它会有这种能力但是不想去安装它的麻烦和不确定性.我也猜想Wolfram Workbench可以做到这一点,但这可能不值得投资.)

wolfram-mathematica keyboard-shortcuts commenting mathematica-frontend

11
推荐指数
3
解决办法
1万
查看次数

在Mathematica中的Hold中评估超出一个级别

有关可能问题的评估的mathematica文档说:

评估仅在第一级工作,直接在保持的函数内

为什么Mathematica有此限制?因此,如果我有一个包含多个级别的表达式,请使用以下简单示例:

保持[加[加[2,2],2]]]

现在假设我想看看第二个Plus的答案是什么,而不评估它下面的任何级别.我尝试了不同的东西,比如:

In[290]:= Hold[Plus[Evaluate[Plus[2, 2]], 2]]
Out[290]= Hold[Evaluate[2+2]+2]

In[287]:= Hold[Plus[ReleaseHold[Hold[Plus[2, 2]]], 2]]
Out[287]= Hold[ReleaseHold[Hold[2+2]]+2]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,第一个Hold将所有未评估的值保持在第一级以及超出第一级.目标是使用连续的Hold,ReleaseHold和Evaluate函数来控制从最内部嵌套函数到外部函数的每个阶段的表达式的评估,以实现该目标.我知道我可以使用trace来查看表达式中第一级以外发生的事情,但这种情况有所不同,有时候使用较长的表达式会很复杂.

似乎唯一的方法是使用Extract,Part或Level提取并完全拆除表达式到列表中; 评估我想要的部分表达; 然后为每个阶段重新构建并重新映射表达式.是否有其他方法或功能可以实现这一点我可以考虑?

编辑:这可能是一个更好的例子来看待释放第一次保持的方法.用表达式:

Hold[Plus[Plus[2, Plus[2,2]], 2]]]
Run Code Online (Sandbox Code Playgroud)

如果您释放第一个保留并在第三个Plus的表达式中保持较高级别,则如下所示:

in = Plus[Plus[2, Hold[Plus[2,2]]], 2]]]
out = Hold[2+2]+4
Run Code Online (Sandbox Code Playgroud)

您发现当您真正希望它等待时,Mathematica将在后台评估较低级别.

wolfram-mathematica

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

重复的组合

我正在使用Mathematica 7和一个combinatorica包函数我可以从一个元素列表获得一定数量的所有组合,其中顺序无关紧要且没有重复.eg:

in: KSubsets[{a, b, c, d}, 3]
out: {{a, b, c}, {a, b, d}, {a, c, d}, {b, c, d}}
Run Code Online (Sandbox Code Playgroud)

我无法找到一个功能,这将使我一定数目的所有组合从元素,其中的顺序并不重要,那里的名单重复的.即,上面的示例将在输出中包含{a,a,b},{a,a,a},{b,b,b}等元素.

它可能需要自定义功能.如果我能拿出一个,我会发一个答案但是现在我没有看到明显的解决方案.

编辑:理想情况下,输出将不包含组合的重复,例如元组[{a,b,c,d},3]将返回包含两个元素的列表,如{a,a,b}和{b,a,a从组合的角度来看,它们是相同的.

combinations wolfram-mathematica repeat

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

Mathematica:获取传递给函数的参数数量?

如何获取传递给函数的参数数量,例如Plus[2,3,4,5]传递给它的4个参数.我在想它可能涉及使用函数Length并将参数放入列表中.目的是基于函数的参数数量迭代操作.可能有一个简单的解决方案或功能,但我还没有遇到它.还欢迎任何其他方式或建议吗?

arguments wolfram-mathematica function count

6
推荐指数
1
解决办法
3521
查看次数

在Mathematica中创建具有不同颜色边缘的图形

我想创建一个图形(图形理论),其中某些边缘与其他边缘具有不同的颜色,这将用于突出图形中从一个顶点到另一个顶点的路径.

以下是一些具有不同颜色边缘的示例http://demonstrations.wolfram.com/AGraphTheoryInterpretationOfTheSumOfTheFirstNIntegers/http://demonstrations.wolfram.com/Ramsey336/.我查看了这些的源代码,但这些解决方案似乎很复杂.我需要一个简单的例子来工作.我估计我需要使用EdgeRenderingFunction作为其中一个选项GraphPlot.

此外,在"更多信息"部分的EdgeRenderingFunction文档中,它说:

Mathematica图形

这看起来很有用,但遗憾的是没有编码示例可供尝试.

从字面上看,我尝试了类似的东西

GraphPlot [{1 - > 2,2 - > 3,3 - > 4,4 - > 1,2 - > 4,4 - > 5,4 - > 6},VertexLabeling - > True,
EdgeRenderingFunction - > g [{ 1,2},{1,2},红色]]

但那不行.它需要更聪明的东西.

wolfram-mathematica graph-theory colors edges

5
推荐指数
1
解决办法
2399
查看次数

基本Python While循环复合条件评估

在Python IDLE Shell中,似乎我不能使用复合条件表达式和while循环.我也在括号内尝试过它.拿这两个例子:

k=0
m=0
while k<10 & m<10:
    print k
    k +=1
    m+=1
Run Code Online (Sandbox Code Playgroud)

这不会评估第二个条件.但如果我写

 while k<10:
    print k
    k+=1
Run Code Online (Sandbox Code Playgroud)

这确实有效.有没有办法用"和"运算符实现第一个代码块.我用Java做过.我是否只需要将"if"语句放在一起以在Python中实现相同的功能?

python conditional-operator while-loop

0
推荐指数
1
解决办法
1621
查看次数