我想尝试制定规范平方积分。例如,而不是以下内容:
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页]中找到的示例,但它对我不起作用。
答案 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]}]
通过这种方式,您可以完全按照预期编写期望值。