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.