I need to plot the polar equation $r^2=\cos\theta$, but I could not find any built-in command in Mathematica to do so. Is there any (simple) way to plot an implicit polar equation?
2 Answers
-
$\begingroup$ Well, the question is "Is there any way to draw the graph of implicit polar equations?"
PolarPlot
works when the relationship is explicit, but not when it is implicit. However, it can be used for the given example, so still worth to mention. $\endgroup$– C. E.Jul 3, 2017 at 18:46 -
$\begingroup$ @C.E. It could be smth like
PolarPlot[Evaluate[r /. Solve[r^2 == Cos[th], r]], {th, 0, 2 \[Pi]}]
$\endgroup$– garejJul 3, 2017 at 19:09 -
$\begingroup$ @garej I was thinking about implicit relationships in polar coordinates where a corresponding explicit formula is hard or impossible to find. Take f.e.
Solve[r^2 == Cos[r th], r]
, this cannot be solved withSolve
, and hence cannot be plotted withPolarPlot
. But it can be plotted withContourPlot
. $\endgroup$– C. E.Jul 3, 2017 at 19:17 -
$\begingroup$ But this graph does not include when $r$ is negative. $\endgroup$– JamesJul 4, 2017 at 4:33
-
$\begingroup$ true, technically is should be
PolarPlot[{-Sqrt[Cos[th]], Sqrt[Cos[th]]}, {th, 0, 2 \[Pi]}]
$\endgroup$ Jul 10, 2017 at 15:31
You can use Mathematica to figure out what the corresponding relationship is in cartesian coordinates,
r^2 == Cos[th] /. {r -> Sqrt[x^2 + y^2], th -> ArcTan[x, y]}
Using ContourPlot
to plot this:
ContourPlot[
x^2 + y^2 == x/Sqrt[x^2 + y^2],
{x, 0, 1}, {y, -1, 1}
]
-
$\begingroup$ Thanks. I like to have $x$ and $y$-axis in the graph, and I wonder if it is possible using ContourPlot. But there is also a question, that this graph does not seem include the case $r<0$. $\endgroup$– JamesJul 4, 2017 at 4:35
-
$\begingroup$ @James $r$ is always zero or larger in a polar coordinate system... If you have something else in mind, you have to specify what that is. In your coordinate system, how is $r$ related to $x$ and $y$? The options for
ContourPlot
are well documented. Read aboutFrame
(which you'll want to set toFalse
) andAxes
. $\endgroup$– C. E.Jul 4, 2017 at 5:02