meshgrid
, as its name suggests, returns a grid of points at which you can evaluate your function. In your example xx
and yy
are 41x41 matrices. I can't print them here so let me use a simpler example: [xx, yy] = meshgrid (-1:1, 10:10:30)
. This returns
xx = -1 0 1 -1 0 1 -1 0 1 yy = 10 10 10 20 20 20 30 30 30
Can you see how xx
and yy
allow you to generate every point in the grid? (Mentally pick a row/column pair; take the $x$ value from xx
and the $y$ value from yy
.)
To calculate function, $f(x,y)=x^2 - y^2+2xy^2 +1$, we need to bear in mind that xx
and yy
are matrices, so we need to use dots for element-wise multiplication, as follows:
f = xx.^2 - yy.^2 + 2*xx.*yy.^2 + 1
Finally, we plot the function using surf(xx,yy,f)
:

(Note that I used the original linspace (-8, 8, 41)
grid rather than the one in my previous example to generate this plot.) surf
is like mesh
except that it uses shading. You will immediately understand the difference if you try it for yourself.
What's going on in the Octave code is that the author was worried about division by zero (since the function to be plotted, tz
is $\sin(r)/r$), so (s)he added a small number (eps
) to r
to ensure positivity. You do not have such a problem so our definition was more straightforward.