Message Boards Message Boards

4 Replies
1 Total Likes
View groups...
Share this post:

atan(y,x) scilab vs. ArcTan[x,y] mathematica

Posted 10 years ago

Hi everyone, I try to convert a polar plot into cartesian plot. I have a problem with the conversion of the azimuthal angle. I work on [-pi,pi] and I'm in struggle with the inverse tangent function. I stopped to do this on Mathematica and used Scilab for this task. it works well on Scilab but I still want to understand the difference. Hope you can give me a hint. :) The main problem is the conversion between Atan(y,x) (similar to atan2 in Fortran) and ArcTan[x,y]. In Scilab, Atan(y,x) computes the 4-quadrant arctangent. It returns the argument (angle) of the complex number x+i*y. The range of atan(y,x) is [-pi, pi]. But in Mathematica, ArcTan(x,y) computes the 4-quadrant arctangent. It returns the argument (angle) of the complex number x+i*y. BUT the range of ArcTan(x,y) is [-pi/2, pi/2]. I browse in Internet and cannot find a clear statement about the conversion between atan(y,x) and Arctan[x,y]. I tried many piecewise-functions for x>0 and x<0 but still no success. Thanks in advance for the support.

POSTED BY: afreeka b
4 Replies
Posted 10 years ago

Fantastic,it works. I knew it was a small mistake. I spend so many times on it. FYI, the function Psi is quite long and complicated to write as it is a Thebychev-Fourier serie. Many thanks.

POSTED BY: afreeka b
Posted 10 years ago

You are right, I did a mistake in my statement. the interval is for both [-pi,pi]. on x=-1 and y=1, both softwares give same value 3pi/4. My problem is as follow: I'm trying to convert a polar function Psi(r,theta) in cartesian coordinates to do a mapping.

ContourPlot[\[Psi][r, \[Theta]], {r, 0, 1}, {\[Theta], -Pi, Pi}, 
 Contours -> {-0.008, -0.004, -0.006, -0.002, 0.002, 0.004, 0.006, 
   0.008}, PlotPoints -> 30, ContourLabels -> All]

Which gives this contourplot : theta in vertical axis, radius in horizontal axis.

Psi [r,theta in polar coordinates

But when I convert it into Cartesian, there is any loop, the contour plot is completely different and the result is wrong.

r = Sqrt[x^2 + y^2]; \[Theta] = ArcTan[x, y];
ContourPlot[\[Psi][x, y], {x, -1, 1}, {y, -1, 1}, PlotPoints -> 30, 
 AxesLabel -> Automatic, 
 Contours -> {-0.008, -0.004, -0.006, -0.002, 0.002, 0.004, 0.006, 
   0.008}, PlotPoints -> 30, ContourLabels -> All]

It seems it depends on the quadrant and is in the range [-Pi/2,Pi/2].

Psi[x,y] in cartesian coordinates

When I plot this function in Scilab, no more problem, I have 2 nice loops. That's why, I said the problem is likely from the ArcTan[x,y] I'm using during the conversion polar->Cartesian. How to do this? I'm sure it is pretty easy to solve it.

POSTED BY: afreeka b

Difficult to say much without complete code e.g. a definition of the actual function psi[t,theta]. My guess is you want to define

r[x_,y_]: Sqrt[x^2 + y^2]
theta[x_,y_]:= ArcTan[x, y]

and then plot ContourPlot[\[Psi][r[x,y],theta[x,y]],....

POSTED BY: Daniel Lichtblau

Need to argument form of ArcTan returns angle values between minus pi and pi. Try


The statement that you are quoting from the documentation is referring to the single argument form.

POSTED BY: David Reiss
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract