Re: [GiNaC-list] question about quantum operator algebra
Date: Sat, 5 May 2007 11:13:49 +0200 (CEST) From: Chris.Dams@mi.infn.it Subject: Re: [GiNaC-list] question about quantum operator algebra To: "GiNaC discussion list" <ginac-list@ginac.de> You can declare those operators as noncommutative symbols. I assume that you are using version 1.3.x. Then it goes as e.g.,
const unsigned my_tinfo = 2; symbol a("a", return_types::noncommutative, my_tinfo); symbol adag("adag", return_types::noncommutative, my_tinfo); H = epsilon*adag*a; ex commu = a*H - H*a commu = rewrite_operators(commu);
The global constant my_tinfo is arbitrary, but for safety it should not be one that is already in use (see http://www.ginac.de/viewcvs/GiNaC/ginac/tinfos.h?hideattic=0&rev=1.27.2.3&view=markup). You would have to define the function rewrite_operators yourself. It could be something like
ex rewrite_operators(const ex &x) { if (is_a<ncmul>(x)) { ... constructing the result of rewriting is done here ...
Sorry, but I have no idea what goes here. Could you show me somewhere to find examples? Thank you.
return result; } else return x.map(rewrite_operators); }
Best regards, Can-Hua Chen
participants (1)
-
Canhua