# Why can't I plot this surface?

I can't plot (x^z)-(y^z)=x*y. I've tried it with Geogebra and with

Plot3D[x^z - y^z == x*y, {x, -1, 1}, {y, -1, 1}]


in Mathematica, but in both images only appears the axes.

Is there any other Mathematica tool to do it?

I'm started to think that the function is "non-plottable" in some mathematically meaning. Is that possible? Well, it is plottable for any constant z I've tried (I mean setting a value of z and making it a curve), but its shape changes a lot even between very close values... Do "non-plottable" functions exist?

Any idea will help, thank you!

• Try ContourPlot3D[x^z - y^z == x y, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}]. – J. M.'s technical difficulties Nov 16 '19 at 13:49
• That worked, but anyway, do "non-plottable" functions exist? – Grpajares Nov 16 '19 at 14:19
• I notice that what mathematica shows does not fit with what geogebra shows slice by slice. I mean that visually the intersecction of what mathematica shows and the plane z=constant is sometimes different of what geogebra shows if you replace z with that constant. – Grpajares Nov 16 '19 at 14:30
• Perhaps of note for you is that Mathematica always takes the principal value for $x^y$; e.g. $(-8)^\frac13\ne-2$. – J. M.'s technical difficulties Nov 16 '19 at 14:41

Plot3D requires an explicit function $$z(x,y)$$ to be plotted. In other words, if you want to plot $$z = \sin(x) \cos(y)$$, you would give the command

Plot3D[ Sin[x] Cos[y], {x, -1, 1}, {y, -1, 1}]


If you only have an implicit relationship between $$x$$, $$y$$, and $$z$$, then ContourPlot3D is a better choice (as noted by J.M. in the comments):

ContourPlot3D[x^z - y^z == x y, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}]


Note, however, that the results may be "low-resolution", since Mathematica must now (effectively) search through 3-D space to find points where this equation is satisfied, rather than just calculating $$z$$ for a variety of points $$(x,y)$$. You can tell Mathematica to use more points to construct its surface by using the PlotPoints option, but be aware that this will take longer.

As relations are implicit we can use ContourPlot3D. By changing plotting order we could get further insight including domain and real possible surface ranges. There are only two nappes representing the surface that are real and so plottable, shown at right for domain $${(x,0,1),(y,0,1),(z,-1,1)}.$$ aa = ContourPlot3D[
x^z - y^z == x y, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}]
bb = ContourPlot3D[
x^z - y^z == x y, {y, -1, 1}, {z, -1, 1}, {x, -1, 1}]
cc = ContourPlot3D[
x^z - y^z == x y, {z, -1, 1}, {x, -1, 1}, {y, -1, 1}]
Show[aa, bb, cc]