Mathematica Dealing with a Discontinuous ArcTan[] Function in Mathematica

  • Thread starter Thread starter guerom00
  • Start date Start date
  • Tags Tags
    Bug Mathematica
AI Thread Summary
The discussion revolves around the behavior of the ArcTan function in Mathematica when dealing with complex numbers. The user encounters unexpected results when using ArcTan with complex inputs, noting discrepancies between numerical outputs and theoretical expectations. It is suggested that ArcTan[x, y] assumes both arguments are real, leading to issues when they are complex, particularly near branch cuts. The conversation highlights the importance of being cautious with numerical computations near special values, as they can yield misleading results. Ultimately, the user acknowledges the need for a workaround to handle the discontinuity in their calculations.
guerom00
Messages
90
Reaction score
0
Hello everyone,

I copy-paste here a little bit of code:
Code:
In[4417]:= x = (1.5` + 0.` I);
y = (0.` + 0.` I);

(* 1 *) ArcTan[x, y]
(* 2 *) ArcTan[x // Chop, y // Chop]
(* 3 *) -I Log[(x + I y)/Sqrt[x^2 + y^2]]
{y == 0, Re[y] == 0, Im[y] == 0, Im[x] == 0}

Out[4419]= -1.5708 + 0. I

Out[4420]= 0

Out[4421]= 0. + 0. I

Out[4422]= {True, True, True, True}

The quantities x and y are calculated elsewhere.
The expression 1 for the arctangent is wrong since it gives me -pi/2 :confused:
In expression 2, I chop the arguments and the result is right.
Expression 3 is used when x or y is complex and gives the right answer as well.
Finally, some tests…

Any thoughts ?
TIA
 
Physics news on Phys.org
I agree it looks wrong, but I think ArcTan[x,y] is assuming x and y are both real. It must have a problem when thy are complex.
 
The help page of ArcTan[x,y] indicates that it can handle complex arguments. It then uses the expression which involves the Log[] I gave.
Problem is: my quantities x and y are not complex according to the tests I make… Which is strange because I thought that the number 0.` is different from 0 (== wise)…
 
ArcTan[x] should handle complex arguments, but what does ArcTan[x,y] even mean when the arguments are complex?
 
guerom00 said:
WTF ?! This is clearly broken, no ?
No and yes.

No, in the sense that you should expect numerical algorithms to misbehave at special values. Yes, in the sense that it's a little surprising these values are special.


What's most likely happening internally is that there is an algebraic identity being used and your point is right on a branch cut of the terms involved. And because your numbers are approximate, different sides of the branch cut wind up being used in different terms.
 
  • #10
I see now… :)
Well, that doesn't solve my problem: I now have a function of this angle (I use this ArcTan[] to calculate an angle, obviously) which is discontinuous at one point… I'll have to make a specific test to avoid this very point.

Thanks :)
 

Similar threads

Replies
1
Views
2K
Replies
1
Views
2K
Replies
9
Views
3K
Replies
13
Views
2K
Replies
1
Views
2K
Replies
1
Views
2K
Replies
2
Views
2K
Back
Top