开发者

How to fix syntax to nest functions in mathematica?

开发者 https://www.devze.com 2023-04-09 21:07 出处:网络
I wanted to try to make a rule to do norm squared integrals.For example, instead of the following: Integrate[ Conjugate[Exp[-\\[Beta] Abs[x]]]Exp[-\\[Beta] Abs[x]],

I wanted to try to make a rule to do norm squared integrals. For example, instead of the following:

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

I tried creating a function to do so, but require the function to take a function:

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

Mathematica doesn't have any trouble doing the first integral, but the final result of the trace when my helper function is used, shows just:

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

with no evaluation of the desired integral?

The syntax closely follows an example I found in http://www.mathprogramming-intro.org/download/MathProgrammingIntro.pdf [page 155], but it doesn't work for me.


The reason why your expression doesn't evaluate to what you expect is because complexNorm is expecting a pattern of the form f_[x_]. It returned what you put in because it couldn't pattern match what you gave it. If you still want to use your function, you can modify it to the following:

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

Notice that you're just matching with anything now. Then, you just call it as complexNorm[expr]. This requires expr to have x in it somewhere though, or you'll get all kinds of funny business.


Also, can't you just use Abs[x]^2 for the norm squared? Abs[x] usually gives you a result of the form Sqrt[Conjugate[x] x].

That way you can just write:

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


Since you're doing quantum mechanics, you may find the following some nice syntatic sugar to use:

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

That way you can write your expectation values exactly as you would expect them.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号