MathGroup Archive 2007

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

Search the Archive

Re: Re: Weird result in Mathematica 6

  • To: mathgroup at smc.vnet.net
  • Subject: [mg76511] Re: [mg76432] Re: [mg76393] Weird result in Mathematica 6
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Wed, 23 May 2007 05:27:15 -0400 (EDT)
  • References: <200705211001.GAA10071@smc.vnet.net> <EB6D3224-597F-4DD6-B05D-08B9F6A05D2D@mimuw.edu.pl> <200705220648.CAA19836@smc.vnet.net> <63B2BBD7-455D-42F6-AFB2-63F7D37D62D3@mimuw.edu.pl>

On 22 May 2007, at 23:44, Andrzej Kozlowski wrote:

> *This message was transferred with a trial version of CommuniGate 
> (tm) Pro*
>
> 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

Furthermore:

Simplify[Re[x] && ! Element[x, Reals], x*Conjugate[x] > 1]
False

Andrzej Kozlowski



  • Prev by Date: Style Sheed Documentation
  • Next by Date: Re: Problem with Animate in Mathematica 6.0
  • Previous by thread: Re: Re: Weird result in Mathematica 6
  • Next by thread: Re: Re: Weird result in Mathematica 6