MathGroup Archive 2007

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

Search the Archive

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


  • Prev by Date: Using Locators in Mathematica v6
  • Next by Date: Re: Image rotation?
  • Previous by thread: Re: Weird result in Mathematica 6
  • Next by thread: Re: Re: Weird result in Mathematica 6