       simplifing inverse functions

• To: mathgroup at christensen.cybernetics.net
• Subject: simplifing inverse functions
• From: Jack Goldberg <Jack.Goldberg at math.lsa.umich.edu>
• Date: Wed, 19 Oct 1994 12:26:20 -0400 (EDT)

```I was stimulated by my previous note to see if I could generalized
PowerExpand to cover cases such as ArcCos[Cos[x]].  I have come up with
a modest first step which I offer specifically to see how much better
others might do.  Here is my function:
simplifyInverse[expr_,f_] :=
Module[ {inv},
inv = InverseFunction[f];
expr //. inv[f[x_]] -> x
]

This command does work fairly well.  For example it will simplify
1+1/(1+ArcCos[Cos[x^2]])
to
1+1/(1+x^2)
It works with ArcTrig[Trig[x]] where Trig is Tan,Cos,Sin. (I have not
tested it with other trig functions yet.) It works with Log (as does
PowerExpand).  It also works for user defined functions, at least as far
as I could check.  However:
(1) It does not simplify  Sqrt[x^2] and seems to fail for all cases
x^(1/integer).  Since I am somewhat of a beginner with programming Mma,
I am having a good deal of trouble figuring out what went wrong.  I might
add that if I define  square[x_] := x^2 and
newroot[x_] := InverseFunction[square[x]]
it does work!
(2) Ideally, f_ should not be an argument to this function.  I can
imagine a module which would search expr until if finds  f[g]; tests
whether g[f[x] = x  and if so, replaces f[g[x]] with x.  I have no idea
how to do this.
(3) It does seem that such an extension to PowerExpand is useful,
and I believe important.  Does anyone agree?

```

• Prev by Date: function definition
• Next by Date: Library of Signal processing routines
• Previous by thread: RE: function definition
• Next by thread: Library of Signal processing routines