MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Controlling inverses of functions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg58437] Re: Controlling inverses of functions
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Sat, 2 Jul 2005 04:06:54 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, England
  • References: <200506300837.EAA15843@smc.vnet.net> <da2mim$928$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Josef Karthauser wrote:
> I've got some functions (Tensor's actually) which aren't trivially
> inverted and I want to either control their inverse form, or prevent
> mathematica from inverting them altogether, so that I can use Solve
> in safety on expressions containing them.  Is there anyway of doing
> that?
> 
> For example:
> 
>     In: F[a] == F[b] F[c]
>     In: Solve[%, F[b]]
>     Out: {F[b] -> F[a] / F[c]}
> 
> This is incorrect because 1 / F[c] is an invalid statement (as the
> inverse isn't defined).  The "correct" answer is that an answer can't be
> derived.
> 
> Any help on this would be wonderful.
> 
> Thanks,
> Joe
> --
> Josef Karthauser (joe at tao.org.uk)	       http://www.josef-k.net/
> FreeBSD (cvs meister, admin and hacker)     http://www.uk.FreeBSD.org/
> Physics Particle Theory (student)   http://www.pact.cpes.sussex.ac.uk/
> ================ An eclectic mix of fact and theory. =================
> 
> 
Hi Josef,

One approach might be to use _non commutative multiplication_ 
{represented by a double star **), as in the following example:

In[1]:=
F[a] == F[b]*F[c]

Out[1]=
F[a] == F[b]*F[c]

In[2]:=
Solve[%, F[b]]

Out[2]=
{{F[b] -> F[a]/F[c]}}

In[3]:=
F[a] == F[b]**F[c]

Out[3]=
F[a] == F[b]**F[c]

In[4]:=
Solve[%, F[b]]

Solve::ifun: Inverse functions are being used by Solve, so some 
solutions may not be found; use Reduce for complete solution information.

Out[4]=
{{F[b] -> InverseFunction[NonCommutativeMultiply, 1,
       2][F[a], F[c]]}}

In[5]:=
Reduce[%%, F[b]]

Reduce::nsmet: This system cannot be solved with the methods available 
to Reduce.

Out[5]=
Reduce[F[a] == F[b]**F[c], F[b]]

Hope this helps,
/J.M.


  • Prev by Date: Re: Sudoku puzzle
  • Next by Date: Re: a question about the UnitStep function
  • Previous by thread: Controlling inverses of functions
  • Next by thread: Can't assign value to symbols