differential operator in maxima



Thanks for your interest in Maxima.  The questions are not at all
stupid!!

I am not a Maple user, so I may be misunderstanding the issue, but....

It appears that Maple generally manipulates functions with explicit
arguments, e.g. f(x).  Maxima on the other hand generally works on
expressions, which are implicitly functions of all variables they
include.

Rather than defining a function F(x), in Maxima you would typically name
an expression, e.g.

    expr: sin(asin(x)+e);

You can now differentiate it with respect to x:

    expr1: diff(expr,x);

yielding

    cos(asin(x)+e)/sqrt(1-x^2)

To evaluate this at x=0, there are three possible mechanisms:

Substituting:

    subst([x=0],expr1) => cos(e)

Evaluating:

    ev(expr1,x=0) => cos(e)

At:

    at(expr1,x=0) => cos(e)

Substitution is the normal way.

The "at" mechanism is specifically designed for unevaluated
differentials, e.g.

    qdif: at(diff(q(x),x=0)

which yields

            !
   d        !
   -- (q(x))!
   dx       !
            !x = 0


You can than substitute some other function in for q and carry out the
differentiation and at-operation:

   subst(sin,q,qdif),diff,at

yielding 1.

-------------------------------

As for A:=F->unapply(1/2*(F(x)+F(-x)),x), again Maxima prefers to
manipulate expressions rather than functions.

What you might do is the following:

   AF :  1/2 * (F(x) + F(-x));

subst(exp,F,AF) => ...

If you follow the Maple example more literally:

   A(x):= lambda([F],1/2*(F(x)+F(-x)));

you unfortunately run into problems, because A(3) does NOT substitute
into the lambda expression.  That is, Maxima does not support lexical
scope, and it also treats lambda as a quoting operation....

Hope this helps.

      -s