Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm (very!) new to Mathematica, and trying to use it plot a set in $\mathbb{R}^3$. In particular, I want to plot the set

$$ \big\{ (x,y,z) : (x,y,z) = \frac{1}{u^2+v^2+w^2}(vw,uw,uv) \text{ for some } (u,v,w) \in \mathbb{R}^3\setminus\{0\} \big\}. $$ This is just the image of function from $\mathbb{R}^3\setminus\{0\} \to \mathbb{R}^3$. I haven't been able to make any of the plot functions display this. Any advice would be greatly appreciated.

If it makes it easier, the set above is also $$ \big\{ (x,y,z) : (x,y,z) = \frac{1}{u^2+v^2+w^2}(vw,uw,uv) \text{ for some } (u,v,w) \in \mathbb{S}^2 \big\}. $$ Alternatively, one could plot the three sets $$ \big\{ (x,y,z) : (x,y,z) = \frac{1}{1+v^2+w^2}(vw,w,v) \text{ for some } (v,w) \in \mathbb{R}^2 \big\}, $$ $$ \big\{ (x,y,z) : (x,y,z) = \frac{1}{1 +u^2+w^2}(w,uw,u) \text{ for some } (u,w) \in \mathbb{R}^2 \big\}, $$ $$ \big\{ (x,y,z) : (x,y,z) = \frac{1}{1+u^2+v^2}(v,u,uv) \text{ for some } (u,v) \in \mathbb{R}^2 \big\}. $$

share|improve this question
up vote 7 down vote accepted

Here are a couple more ways.

  1. Parametrize $\mathbb S^2$ with latitude and longitude:

    With[{u = Cos[lat] Cos[lon], v = Cos[lat] Sin[lon], w = Sin[lat]}, 
     ParametricPlot3D[{v w, u w, u v}/(u^2 + v^2 + w^2), {lat, -Pi/2, Pi/2}, {lon, -Pi, Pi}]]

    enter image description here

  2. Parametrize $\mathbb R^2$ compactly using the $\tan$ function:

    With[{u = Tan[a], v = Tan[b]}, 
     ParametricPlot3D[{v, u, u v}/(1 + u^2 + v^2), {a, -Pi/2, Pi/2}, {b, -Pi/2, Pi/2}]]

    enter image description here

share|improve this answer
The function is in fact a function on ${\bf RP^2}$, so one can just use half the sphere, e.g. {lon, 0, Pi}. – Michael E2 Oct 1 '13 at 20:23
With[{eqn = Eliminate[{x, y, z} == 1/(u^2 + v^2 + w^2) {v w, u w, u v}, {u, v, w}]},
 ContourPlot3D[eqn, {x, -0.6, 0.6}, {y, -0.6, 0.6}, {z, -0.6, 0.6}]

Mathematica graphics

share|improve this answer

We can choose a sample and and visualize it. First we create a grid of values in the 3D-room:

sample = Select[
   Tuples[Range[-10, 10, 0.8], 3],
   Norm[#] > 0.5 &];

Select is used to remove points that are too close to the singularity. Now the plotting is easy using ListPointPlot3D:

f[{u_, v_, w_}] := {v w, u w, u v}/Norm[{u, v, w}]^2
ListPointPlot3D[f /@ sample]


share|improve this answer
Here's a nice way to create your grid of values. Tuples[Range[-10, 10, 0.8], 3] Bonus: no need to Flatten – RunnyKine Oct 1 '13 at 20:19
@RunnyKine I wanted something like that! Thank you. – C. E. Oct 1 '13 at 20:25
Glad you like it. I use Tuples a lot. – RunnyKine Oct 1 '13 at 20:38

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.