//在Mathematica中意味着什么?

时间:2011-05-04 12:42:26

标签: syntax operators wolfram-mathematica

示例:

  • CT = Table[Prepend[10^4*x[range2] /.
         NDSolve[{...series of equations here...}, {t, range1, range2}, 
            MaxSteps -> 10000,
            PrecisionGoal -> 11], delay], 
            {delay, delaymin, delaymax, 0.1}]; // Timing
    

分号后的// Timing是什么意思?

  • Dρ = -I*((H0 + V).ρ - ρ.(H0 + V)) - Γ*ρ // Simplify;
    

这是// Simplify吗?

我无法在任何地方找到这个解释!

提前致谢, 蒂亚戈

7 个答案:

答案 0 :(得分:3)

这是Mathematica的postfix符号。 基本上x // f与f [x]

相同

答案 1 :(得分:3)

是的,argument // function是后缀功能应用程序。

有用的是它相对于前缀应用程序(f @ x)具有不同的,更低的绑定能力。

实际上它低于大多数其他内容(例外包括CompoundExpression ;Set =),因此通常可以将其视为“适用于所有内容”在此之前。“

答案 2 :(得分:3)

你说:“我无法在任何地方找到这个解释!”我认为这意味着当您使用Mathematica时,您并不知道文档中心就在您的指尖。

您所要做的就是将光标放在//上并按F1,您将获得某种解释,或者列出相关(希望)匹配的列表。在这种情况下,PostFix页面,这不是非常有用。但是,它底部有一些链接(假设你有版本6,7或8)提供了更多的洞察力,其中包括语法概述页面的链接(单击Mathematica语法链接,或输入“指南/语法”)搜索框)。

答案 3 :(得分:2)

expr // f基本上等同于f[expr]。有时,它被称为后缀表示法。我将expr // f视为“将表达式expr传递给函数f”。

答案 4 :(得分:2)

a // f
我认为,

相同
f[a]

(顺便说一下,我认识的任何理智的数学家都会写为

f(a)

就像在大多数计算机语言中完成一样。)

答案 5 :(得分:2)

正如其他人所提到的,//是后缀表示法,expr//f表示数学中的f[expr]和数学中的f(expr)

虽然可能涉及更多细微之处,但我对//的使用经常出现在我开始编写表达式然后意识到我想在其上运行函数的情况下。因此,不是将光标一直移回到f@exprf[expr]类型,我可以简单地完成我的想法,并使用expr//f

示例:

Plot[Sin[x],{x,0,Pi}]
%//Export["test.pdf",#]&

图形将传递给导出功能,并保存为test.pdf

答案 6 :(得分:2)

由于您的问题已经得到了很好的答案,我想补充说明一下使用情况。

三个表达式

Sin[x]
Sin@x
x // Sin

是等同的。

虽然据我所知,最后两个不能用于具有多个参数的函数。所以

Plot[Sin[x], {x, 0, Pi}]   

如果没有像

这样的技巧,则无法在前缀或后缀表示法中调用
Sin[x] // Plot[#, {x, 0, Pi}] &  

Plot[#, {x, 0, Pi}] &@Sin[x]

通常在使用Sin@xSort@list之类的简单函数时会看到前缀表示法,而后缀的大多数用法都涉及到“像我现在做的任何事情”这样的推理,例如

(Sin@x+ ...) // Timing

你决定要计算什么,然后你也想要它定时。

还有一点需要注意:

真的在幕后还有更多,因为每个功能结构的优先级都不同,但我认为这是一个更深层次的主题,你必须先进行一些实验才能获得微妙之处。