Function that should be continuous isn't continuously plotted?

1 visualizzazione (ultimi 30 giorni)
Given the function: f(x,y) = (x^3 - 3*x*y^2)/(x^2+y^2)
I'd plot it typing:
[x,y] = meshgrid(-2:0.2:2)
z = (x.^3 - 3.*x.*y.^2)./(x.^2+y.^2)
Doing this Matlab shows me a quite dedicate plot, however with a whole in the origin (A sign for non continous functions, right?). That's why this is staying in contrast to my math lectures. Maybe it's because I haven't defined "f(x,y) = 0 if (x,y) = (0,0)". Or why is that?

Risposta accettata

Alan Stevens
Alan Stevens il 3 Dic 2020
The function is continuous at (0,0); it has a removable singularity. Try using
[x,y] = meshgrid(-2+eps:0.2:2+eps);
eps is Matlab's inbuilt value (about 2.2204e-16).

Più risposte (1)

Daniel Pollard
Daniel Pollard il 3 Dic 2020
Modificato: Daniel Pollard il 3 Dic 2020
At the origin, x and y are both zero, so the denominator of your function is undefined. For me it's returning NaN at the central point:
>> z(11, 11)
ans =
Edit as I realise I failed to actually address the issue. As far as I can tell there are two options:
  • Make the vector steps smaller, so instead of meshgrid(-2:0.2:2), you could use meshgrid(-2:0.05:2), which would make the plot appear more continuous and make the "hole" in the middle smaller, and nearly invisible.
  • Set the NaN value to zero. This is as simple as adding the line


Scopri di più su Data Distribution Plots in Help Center e File Exchange


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by