1
$\begingroup$

Mathematica already has ComplexPlot3D that plots ReIm[x, y] against Abs[f(z)] and Arg[f(z)].

But what if I wanted to plot my function using an extension of the x,y,z space? For example, I might have a $f(z) = z^2+1$ and want to plot $w = f(z)$, where $z = x + i y$ and $w = u + i v$, in a more traditional way where the axes are $x,y$ and $u$ and for $v$ I would use colour.

Is this possible?

$\endgroup$
  • $\begingroup$ Please explain exactly what you're trying to do. Is it to show two planes, one an xy-plane for the domain and the other a uv-plane for the codomain? (But then just what does "color" have to do with it?) And if so, what kind of "plot" do you want: there are various possibilities, such as plotting points in the first and their images under f in the second, or plotting families of curves in the first and their images under f in the second. $\endgroup$ – murray Apr 30 at 15:30
  • $\begingroup$ ok thats a fair question. Perhaps i should have explained. ok so if you plot 2 complex numbers z and f(z) you get 4 components re(z), img(z), re(f(z)) and img(f(z)) which means they are 4 variables. The normal way of plotting a 3d complex function in mathematica is to use img, re, abs and arg. But there is a different method where you just directly plot the graph in 4 dimensions using the 4 varibles. lets say f(z)=w and w=u+iv and z=x+iy. Which means we have a graph of x,y,u and v. but one of them needs to be the 'color' of the graph. we use color for the extra 4th dimension $\endgroup$ – Mofo50CX Apr 30 at 17:12
  • $\begingroup$ then I think the answer by BlacKow does exactly what you are asking for. $\endgroup$ – murray May 1 at 14:25
2
$\begingroup$

I'm probably missing something, but have you tried using Plot3D with ColorFunction?

f[z_] := z^2 + 1;
Plot3D[Re@f[x + I*y], {x, -10, 10}, {y, -10, 10}, PlotRange -> Full, 
 ColorFunction -> Function[{x, y, z}, Hue@Im@f[x + I*y]]]

enter image description here

It looks nice, but it's completely wrong, obviously if x=0 or y=0 the imaginary part is zero, so the color should be the same.

ColorFunctionScaling is messing things up as explained here.

So we need to disable automatic scaling and do it manually with 0.005 factor in ColorFunction

Plot3D[Re@f[x + I*y], {x, -10, 10}, {y, -10, 10}, PlotRange -> Full, 
 ColorFunction -> Function[{x, y, z}, Hue[0.005 Im@f[x + I*y]]], 
 ColorFunctionScaling -> False, PlotPoints -> 50]

enter image description here

$\endgroup$
  • $\begingroup$ yooo thanks so much man it works like a charm. can i just ask how i could add a bar legend that matches the colour to something. Also what does plotpoints do? $\endgroup$ – Mofo50CX May 23 at 21:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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