Full plot of an implicit equation

13 visualizaciones (últimos 30 días)
Benjamin Midtvedt
Benjamin Midtvedt el 8 de Oct. de 2015
Comentada: Star Strider el 8 de Oct. de 2015
I have the equation;
x^2+y^2=1+4.5*sin^2(xy)
I want to plot this equation, and was explicitly told to use the plot function, instead of ezplot or contour. Since the equation is implicit, I tried using fzero to solve for a set of x.
f=@(x,y) x.^2+y.^2-1-4.5.*sin(x.*y).^2;
xv=linspace(-3,3);
yv=zeros(size(xv));
for i=1:length(xv);
yv(i)=fzero(@(y) f(xv(i),y), 0);
end
plot(xv, yv)
However, this obviously only gives one y for each x, while the equation can be satisfied by several y values for some x.
How do I add these additional solutions, and add them to my plot?

Respuesta aceptada

Star Strider
Star Strider el 8 de Oct. de 2015
Editada: Star Strider el 8 de Oct. de 2015
One option is to do a second fzero call in each iteration, with a different initial parameter estimate:
f=@(x,y) x.^2+y.^2-1-4.5.*sin(x.*y).^2;
xv=linspace(-3,3);
yv=zeros(size(xv));
for i=1:length(xv);
yv(i,1)=fzero(@(y) f(xv(i),y), 1);
yv(i,2)=fzero(@(y) f(xv(i),y), -1);
end
plot(xv, yv)
This produces an additional negative mirror image of the single-call loop. You could expand on this with other initial parameter estimates (perhaps ±5, ±10, &c.) to see if you got other results. Experiment with it!
  5 comentarios
Benjamin Midtvedt
Benjamin Midtvedt el 8 de Oct. de 2015
I solved it by plotting both xv,yv and yv,xv. Not the best way, but it works. Thanks!
Star Strider
Star Strider el 8 de Oct. de 2015
My pleasure!
I agree it may not be the best way in a more inclusive perspective, but you were given what I consider to be a somewhat difficult problem. I imagine the problem was presented to you specifically so that you would see the symmetry properties and use them to your advantage.
In a non-symmetrical sort of problem, you would either have to use contour or do a rather exhaustive search for the zeros of the function. That is definitely not something I would want to do, especially if contour had already solved the programming problem for me.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programming en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by