Algebra of differential operators

Will Woods will at brain.ncl.ac.uk
Thu Apr 19 18:42:05 CEST 2001


Hi,

I am working on a problem that requires manipulation and differentiation
of large numbers of Lie derivative operators, followed by collecting
coefficients of like orders of the operators. Since Ginac does not
currently seem to be able to handle this, I have added a (fairly horrible)
hack to the Symbol class to to make a Symbol behave as a differential
operator under certain circumstances. In outline, what I did was:


If the label for a newly defined symbol is "D" then give that symbol a
fixed serial number which is identical for every operator defined.

For symbols which are operators, keep track of the symbols with respect to
which it is differentiating in an ordered vector. Symbols passed to the
derivative method are inserted into the vector.

Modified the compare_same_type method so that two operator symbols are
compared by comparing the contents of their associated vectors of symbols.

Modified the printing to print out something like 'D[x x y]' for a
third order operator.


Limitations:

Currently the operators do not 'act' on anything - I assume this would
require modification of the mult class and carefull consideration of
ordering in expressions. I don't need this functionality, so I haven't
looked into it.


It may well be much better to have a new class derived from Symbol, but
I'm new to Ginac (and was in a hurry!) and wasn't sure what this would do
to comparisons between Symbols and Operators, so I went the 'quick and
dirty' route.

I think perhaps the general concept may be of use to other people, but my
modifications are far to sloppy to be incorporated into the main code. I
would be interested to know what other people think about the general idea
of extending Ginac properly in this direction.

Regards,

Will






More information about the GiNaC-devel mailing list