Encounter an error while using fimplicit?

How to plot the following equation on matlab by using fimplicit?
(x-x0).*conj((x-x0))+(y-y0).^2=r^2
close all;
r=1./2;
x0=0;
y0=1./2;
syms x y
fimplicit((x-x0).*conj((x-x0))+(y-y0).^2-r^2)
axis equal
Matlab shows
'Undefined function or variable 'fimplicit'.'

 Accepted Answer

The fimplicit function was introduced in R2016b.
Use the contour function instead:
r=1./2;
x0=0;
y0=1./2;
f = @(x,y) (x-x0).*conj((x-x0))+(y-y0).^2-r^2;
xv = linspace(x0-r, x0+r, 25);
yv = linspace(y0-r, y0+r, 25);
[X,Y] = ndgrid(xv,yv);
figure
contour(X,Y,f(X,Y), [0 0])
grid
axis equal
.

6 Comments

@ Star Strider, how can we fill the color inside the circle like this
Add a patch call:
figure
hc = contour(X,Y,f(X,Y), [0 0]);
hold on
patch(hc(1,2:end), hc(2,2:end), [0.4 0.2 0.9], 'FaceAlpha',0.3)
hold off
grid
axis equal
Experiment with different colours (the ‘[0.4 0.2 0.9]’ vector) to get the result you want.
@ Star Strider, but when we change the sign, it shows the hyperbolic plot
r=1./2;
x0=0;
y0=1./2;
f = @(x,y) -(x-x0).*conj((x-x0))+(y+y0).^2-r^2;
xv = linspace(x0-r, x0+r, 25);
yv = linspace(y0-r, y0+r, 25);
[X,Y] = ndgrid(xv,yv);
figure
hc = contour(X,Y,f(X,Y), [0 0]);
hold on
patch(hc(1,2:end), hc(2,2:end), [0.8 0.1 0.9], 'FaceAlpha',0.3)
hold off
grid off
axis equal
But I need like this
This is a different problem.
With this function:
f = @(x,y) -(x-x0).*conj((x-x0))+(y+y0).^2-r^2;
the patch call changes to:
patch([hc(1,2:end) fliplr(hc(1,2:end))], [hc(2,2:end) ones(size(hc(1,2:end)))*max(ylim)], [0.4 0.2 0.9], 'FaceAlpha',0.3)
The rest of the code is not changed.
I got this
which is not same as the previous attached hyperboic image
Adjust the limits of ‘xv’ (and perhaps also ‘yv’) to match the figure you want.
For example:
xv = linspace(-1, 1, 25);
You may need to change the parameters in the ‘f’ function to exactly reproduce the figure you posted.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!