如何在mathematica中修复嵌套函数的语法?

时间:2011-10-03 02:24:01

标签: wolfram-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

Mathematica在执行第一个积分时没有任何问题,但使用辅助函数时跟踪的最终结果只显示:

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

没有评估所需的积分?

语法紧跟我在http://www.mathprogramming-intro.org/download/MathProgrammingIntro.pdf [第155页]中找到的示例,但它对我不起作用。

1 个答案:

答案 0 :(得分:6)

您的表达式未按预期评估的原因是因为complexNorm期望格式为f_[x_]。它返回了你输入的内容,因为它无法模仿你给它的模式。如果您仍想使用您的功能,可以将其修改为以下内容:

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

请注意,您现在只是与任何内容匹配。然后,您只需将其称为complexNorm[expr]。这需要expr在其中某处x,否则您将获得各种有趣的业务。


另外,你不能只用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]}]

通过这种方式,您可以完全按照预期编写期望值。