Why is there a jagged line when I plot this function?
Mostrar comentarios más antiguos
Hi guys,
I am trying to plot an implicit function and am getting strange results. I understand the smooth part of the function, but not the jagged part. Why is the jagged part there at all? Also, what can I do to eliminate it?
Here's the code:
f1=(@(x,y) (5.*y.^(1./2) -3)./(2.5.*y.^(1./2)+2.5.*x.^(1./2)-3)-y);
fimplicit(f1,[0 4 0 4],'black')
Respuestas (2)
tmarske
el 16 de Mzo. de 2020
It's because fimplicit is using too few evaluation points, resulting in too coarse an interpolation (by default it uses 151). You can override this using the 'MeshDensity' argument:
f1=(@(x,y) (5.*y.^(1./2) -3)./(2.5.*y.^(1./2)+2.5.*x.^(1./2)-3)-y);
fimplicit(f1,[0 4 0 4],'black', 'MeshDensity', 5000)
6 comentarios
econogist
el 16 de Mzo. de 2020
Walter Roberson
el 16 de Mzo. de 2020
What would you expect the result to look like? There are two lower-branch solutions for each x, and at some point they become equal and cross; what would you discard?
econogist
el 16 de Mzo. de 2020
Walter Roberson
el 17 de Mzo. de 2020
Ah, what is happening is that your function has a discontinuity in it, and what fimplicit is detecting is not a zero but rather a sign change.
econogist
el 17 de Mzo. de 2020
Walter Roberson
el 17 de Mzo. de 2020
Editada: Walter Roberson
el 17 de Mzo. de 2020
If you have the symbolic toolbox, you can solve f1 for x in term of y to get a single x for each y. you can then linspace() for y and put those through the equation to derive x, and then plot(x,y)
econogist
el 17 de Mzo. de 2020
2 comentarios
Walter Roberson
el 17 de Mzo. de 2020
plot(subs(S), y)
econogist
el 19 de Mzo. de 2020
Categorías
Más información sobre Mathematics en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!