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

Pee*_*oot 3 wolfram-mathematica

我想尝试制定规范平方积分.例如,而不是以下内容:

Integrate[ Conjugate[Exp[-\[Beta] Abs[x]]]  Exp[-\[Beta] Abs[x]], 
           {x, -Infinity, Infinity}] 
Run Code Online (Sandbox Code Playgroud)

我尝试创建一个函数来执行此操作,但需要函数来执行函数:

Clear[complexNorm, g, x] 
complexNorm[ g_[ x_ ] ] := Integrate[ Conjugate[g[x]]  * g[x], 
                                      {x, -Infinity, Infinity}]
v = complexNorm[ Exp[ - \[Beta] Abs[x]]]  // Trace
Run Code Online (Sandbox Code Playgroud)

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

complexNorm[E^(-\[Beta] Abs[x])]
Run Code Online (Sandbox Code Playgroud)

没有评估所需的积分?

语法密切关注我发现了一个例子http://www.mathprogramming-intro.org/download/MathProgrammingIntro.pdf [第155页],但它并没有为我工作.

Mik*_*ley 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]}]
Run Code Online (Sandbox Code Playgroud)

这样,您可以完全按照您的预期编写您的期望值.