Full plot of an implicit equation
1 view (last 30 days)
Show older comments
Benjamin Midtvedt
on 8 Oct 2015
Commented: Star Strider
on 8 Oct 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?
0 Comments
Accepted Answer
Star Strider
on 8 Oct 2015
Edited: Star Strider
on 8 Oct 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 Comments
Star Strider
on 8 Oct 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.
More Answers (0)
See Also
Categories
Find more on Contour Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!