Re: Weird result in Mathematica 6
- To: mathgroup at smc.vnet.net
- Subject: [mg76432] Re: [mg76393] Weird result in Mathematica 6
- From: Adam Strzebonski <adams at wolfram.com>
- Date: Tue, 22 May 2007 02:48:10 -0400 (EDT)
- References: <200705211001.GAA10071@smc.vnet.net> <EB6D3224-597F-4DD6-B05D-08B9F6A05D2D@mimuw.edu.pl>
- Reply-to: adams at wolfram.com
Andrzej Kozlowski wrote: > *This message was transferred with a trial version of CommuniGate(tm) Pro* > > On 21 May 2007, at 19:01, Sebastian Meznaric wrote: > >> I was playing around with Mathematica 6 a bit and ran this command to >> solve for the inverse of the Moebius transformation >> >> FullSimplify[ >> Reduce[(z - a)/(1 - a\[Conjugate] z) == w && a a\[Conjugate] < 1 && >> w w\[Conjugate] < 1, z]] >> >> This is what I got as a result: >> -1 < w < 1 && -1 < a < 1 && z == (a + w)/(1 + w Conjugate[a]) >> >> Why is Mathematica assuming a and w are real? The Moebius >> transformation is invertible in the unit disc regardless of whether a >> and w are real or not. Any thoughts? >> >> > > > Reduce and FullSimplify will usually deduce form the presence of > inequalities in an expression like the above that the variables > involved in the inequalites are real. In your case it "sees" > a*Conjugate[a]<1 and "deduces" that you wanted a to be real. This was > of coruse not your intention but you can get the correct behaviour by > using: > > FullSimplify[ > Reduce[(z - a)/(1 - Conjugate[a]*z) == w && Abs[a]^2 < 1 && Abs[w] ^2 < > 1, z]] > > > -1 < Re[w] < 1 && -Sqrt[1 - Re[w]^2] < Im[w] < Sqrt[1 - Re[w]^2] && -1 < > Re[a] < 1 && > -Sqrt[1 - Re[a]^2] < Im[a] < Sqrt[1 - Re[a]^2] && > z == (a + w)/(w*Conjugate[a] + 1) > > Mathematica knows that the fact that an inequality involves Abs[a] does > not imply that a is real but it does not "know" the same thing about > a*Conjugate[a]. This is clearly dictated by considerations of > performance than a straight forward bug. > Andrzej Kozlowski > By default, Reduce assumes that all algebraic level variables appearing in inequalities are real. You can specify domain Complexes, to make Reduce assume that all variables are complex and inequalities expr1 < expr2 should be interpretted as Im[expr1]==0 && Im[expr2]==0 && Re[expr1]<Re[expr2] For more info look at http://reference.wolfram.com/mathematica/ref/Reduce.html http://reference.wolfram.com/mathematica/tutorial/RealReduce.html http://reference.wolfram.com/mathematica/tutorial/ComplexPolynomialSystems.html In your example we get In[2]:= Reduce[(z - a)/(1 - a\[Conjugate] z) == w && a a\[Conjugate] < 1 && w w\[Conjugate] < 1, z, Complexes] 2 2 Out[2]= -1 < Re[w] < 1 && -Sqrt[1 - Re[w] ] < Im[w] < Sqrt[1 - Re[w] ] && 2 2 > -1 < Re[a] < 1 && -Sqrt[1 - Re[a] ] < Im[a] < Sqrt[1 - Re[a] ] && a + w > z == ------------------ 1 + w Conjugate[a] Evaluate Reduce[x^2+y^2<=1, {x, y}, Complexes] to see why I think that assuming that variables appearing in inequalities are real is a reasonable default behaviour. Best Regards, Adam Strzebonski Wolfram Research
- Follow-Ups:
- Re: Re: Weird result in Mathematica 6
- From: Andrzej Kozlowski <akoz@mimuw.edu.pl>
- Re: Re: Weird result in Mathematica 6
- References:
- Weird result in Mathematica 6
- From: Sebastian Meznaric <meznaric@gmail.com>
- Weird result in Mathematica 6