Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

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

Search the Archive

Re: Re: Weird result in Mathematica 6


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


  • Prev by Date: I Need to Have These Equations Solved!
  • Next by Date: Re: [Mathematica 6]3 lines of code which crashes Mathematica every time
  • Previous by thread: Re: Weird result in Mathematica 6
  • Next by thread: Re: Re: Weird result in Mathematica 6