2011-10-03 92 views
3

我想尝试做一个规则来做范数平方积分。例如,不要使用以下:如何在mathematica中修复嵌套函数的语法?

Integrate[ Conjugate[Exp[-\[Beta] Abs[x]]] Exp[-\[Beta] Abs[x]], 
      {x, -Infinity, Infinity}] 

我试图创建一个函数,这样做,但要求功能采取的函数:

Clear[complexNorm, g, x] 
complexNorm[ g_[ x_ ] ] := Integrate[ Conjugate[g[x]] * g[x], 
             {x, -Infinity, Infinity}] 
v = complexNorm[ Exp[ - \[Beta] Abs[x]]] // Trace 

数学不会有任何麻烦,在做第一积分,但是当使用我的帮助函数时,追踪的最终结果仅显示:

complexNorm[E^(-\[Beta] Abs[x])] 

没有评估期望的积分?

语法与我在http://www.mathprogramming-intro.org/download/MathProgrammingIntro.pdf [第155页]中找到的示例紧密相关,但它对我无效。

+0

我应该在该页面上添加一些关于该模式适用性的评论。这个例子的目标虽然有些不同。每当我拿出本书的新版本时,都会使这一部分更加清晰。 –

回答

6

您的表达不会评估您的预期的原因是因为complexNorm预计的格式为f_[x_]。它返回了你放入的内容,因为它无法匹配你给出的内容。如果你仍然想使用的功能,您可以将其修改为以下内容:

complexNorm[g_] := Integrate[ Conjugate[g] * g, {x, -Infinity, Infinity}]

注意,你只是用任何符合现在。然后,您只需将它称为complexNorm[expr]。这需要exprx在某个地方,或者你会得到各种有趣的业务。


另外,你不能只使用Abs[x]^2作为规范的平方吗? Abs[x]通常会给你一个形式Sqrt[Conjugate[x] x]的结果。

这样,你可以这样写:

complexNorm[g_] := Integrate[Abs[g]^2, {x, -Infinity, Infinity}]


既然你在做量子力学中,你可能会发现以下一些不错的语法糖使用:

\[LeftAngleBracket] f_ \[RightAngleBracket] := 
Integrate[Abs[f]^2, {x, -\[Infinity], \[Infinity]}] 

这样你就可以完全按照你所期望的写出你的期望值。

+0

Re:也。是的,但我想要做的是g^* d g的积分,其中d是二阶导数算子。 –

+0

@PeterJoot:我在文章的最后添加了一些额外的东西。你可能会觉得它很有趣。 –

+0

谢谢。这是一个很好的糖。 –