On 1/20/08, Jan Bessai <jan.bessai at tu-dortmund.de> wrote:
> Maxima is able to differentiate asinh(x) correctly, but does not know
> the equation cosh(asinh(x)) = sqrt(x^2 + 1) (at least not in 5.13.0)
> which is usually needed to do that.
tellsimpafter as mentioned by Barton is one way to implement that Identity.
Here is another way.
matchdeclare(x,true)$
defrule (r1, cosh(asinh(x)) , sqrt(x^2 + 1));
Now the rule r1 is applied only when specifically requested
(while tellsimp / tellsimpafter rules are always applied).
1/(1+cosh(asinh(1-u)));
=> 1/(1+cosh(asinh(1-u)));
apply1 (%, r1);
=> 1/(sqrt((u-1)^2+1)+1)
If you have a collection of identities r1, r2, r3, ... you could make up
a function to apply all of them, e.g.
simplify_hyperbolic_fcns (expr) := apply1 (expr, r1, r2, r3, ...)
Note the function to apply rules is named apply1.
There is also a function "apply" which is different.
Hope this helps,
Robert