bluescarni / obake

A C++20 library for the symbolic manipulation of sparse polynomials & co.
https://bluescarni.github.io/obake
Mozilla Public License 2.0
22 stars 8 forks source link

Operators for quantum mechanics #151

Open bingao opened 1 year ago

bingao commented 1 year ago

Hi! I want to develop a new C++ project using obake. The project will compute derivatives of an expression of some operators in quantum mechanics, and afterward evaluate the derivatives numerically by using some external numerical functions. So my questions are:

  1. Operators in quantum mechanics usually do not commute, i.e. A*B is not equal to B*A where A and B are two operators, and * is multiplication. Moreover, an operator A can be a "function" of multi-variables, e.g. x, y, z, etc.. Is there any class in obake that I can use to represent these operators? If not, can I make a derived class for these operators?
  2. Take A*B as an example. When a derivative with respect to a variable x is computed, I want Derivative(A, x)*B + A*Derivative(B, x) to return as a result. Afterwards, I can evaluate this result numerically by replacing Derivative(A, x), B, A and Derivative(B, x) with external numerical function(s). Is it possible and how?

Thank you in advance.