Re: Re: Weird result in Mathematica 6
- To: mathgroup at smc.vnet.net
- Subject: [mg76510] Re: [mg76432] Re: [mg76393] Weird result in Mathematica 6
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Wed, 23 May 2007 05:26:44 -0400 (EDT)
- References: <200705211001.GAA10071@smc.vnet.net> <EB6D3224-597F-4DD6-B05D-08B9F6A05D2D@mimuw.edu.pl> <200705220648.CAA19836@smc.vnet.net>
On 22 May 2007, at 15:48, Adam Strzebonski wrote: > 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 > Still, it seems to me that there is a certain problem with this, not very important but still, a "logical difficulty". It concerns not Reduce, where you can specify the domain to be Reals or Complexes etc, but Simplify, where you can't. So for example: Simplify[Re[x], x*Conjugate[x] > 1] x folowing the principle also used by reduce, Simplify assumed that x is real. On the other hand: Simplify[Re[x], Abs[x] > 1] Re(x) which also agrees with the principle, sicne Abs in non-algebraic. But, unlike in the case of Reduce, there seems to be no way to make Simplify treat the first assumption as taking place over the Complexes as in the Reduce example: Simplify[Re[x], x*Conjugate[x] > 1 && Elment[x, Complexes]] x Simplify[Re[x] && Element[x, Complexes], x*Conjugate[x] > 1] x In other words, it seems that when using Simplify one really needs to use Abs in inequalities, if one does not want to force the assumption that a variable is real. (?) Andrzej Kozlowski
- References:
- Weird result in Mathematica 6
- From: Sebastian Meznaric <meznaric@gmail.com>
- Re: Weird result in Mathematica 6
- From: Adam Strzebonski <adams@wolfram.com>
- Weird result in Mathematica 6