On 1/31/08, Edwin Woollett <woollett at charter.net> wrote:
> I want to teach maxima how to properly treat the derivative of the conjugate
> function, with the end result that I will get the behavior:
>
> diff( conjugate( f(x) ), x ); ==> conjugate( 'diff( f( x ), x, 1) )
Here is such a rule.
declare (e, complex);
matchdeclare (e, all, u, mapatom);
tellsimpafter ('diff (conjugate (e), u), conjugate (diff (e, u)));
This depends rather sensitively on Maxima's assumptions about
how diff and conjugate work; e.g. there must be a quote mark on diff
but not on conjugate. I hope we can eventually regularize some things
so that making up basic rules like this doesn't depend on peculiar
factoids ... Anyway here are a couple of examples of the rule in action.
diff (conjugate (f(x)), x);
=> conjugate('diff(f(x),x,1))
diff (conjugate (f(x) + g(x)), x);
=> conjugate('diff(g(x),x,1))+conjugate('diff(f(x),x,1))
Is that the intended effect?
> Is there a way to "unprotect" system functions like conjugate so this rule
> can be implemented for any function f(x)?
As it happens, Maxima doesn't protect built-in functions.
You can make rules for or redefine any built-in function.
HTH
Robert Dodier