plot (X^2/cosh^​2(v))+(y^2​/sinh^2(v)​)=1

Hi,
How I can plot this function as v= constant such as for
v=0,pi/2,and pi
(X^2/cosh^2(v))+(y^2/sinh^2(v))=1
Thanks

 Réponse acceptée

Star Strider
Star Strider le 15 Nov 2015

0 votes

One option (if I understood your Question correctly):

v = pi/2;
f = @(X,Y) (X.^2./cosh(v).^2)+(Y.^2./sinh(v).^2)-1;
x = linspace(-5, 5, 50);
[X,Y] = meshgrid(x);
figure(1)
surf(X, Y, f(X,Y))
grid on
xlabel('X')
ylabel('Y')
title('v = ^{\pi}/_2')

4 commentaires

Ali Kareem
Ali Kareem le 15 Nov 2015
Hi,
Thank you for your reply. I mean if I take v as constant. how I can plot it. it shout be like ellipse. when v is constant and when I change v I will get another ellipse
Regards
Walter Roberson
Walter Roberson le 15 Nov 2015
Then you repeat the process with a different v.
Ali Kareem
Ali Kareem le 15 Nov 2015
Hi,
Then how I can combine all plots in one? for different Vs
Regards
My pleasure.
Use the subplot function. That will plot them in different axes in the same figure. I would not combine all plots in the same axes with surface plots. Try something like this:
f = @(X,Y,v) (X.^2./cosh(v).^2)+(Y.^2./sinh(v).^2)-1;
x = linspace(-5, 5, 50);
[X,Y] = meshgrid(x);
figure(1)
subplot(3,1,1)
surf(X, Y, f(X,Y,0))
xlabel('X')
ylabel('Y')
title('v = 0')
grid on
subplot(3,1,2)
surf(X, Y, f(X,Y,pi/2))
xlabel('X')
ylabel('Y')
title('v = ^{\pi}/_2')
grid on
subplot(3,1,3)
surf(X, Y, f(X,Y,pi))
xlabel('X')
ylabel('Y')
title('v = pi')
grid on
That should work.

Connectez-vous pour commenter.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 15 Nov 2015

0 votes

v = [0, pi/2, pi];
for K = 1 : length(v)
f = @(X,y) (X.^2/cosh(v(K))^2) + (y.^2/sinh(v(K))^2) - 1;
figure
ezplot(f, [-15 15])
title(sprintf('v = %g', v(K)));
end
You might note that the v = 0 case comes out blank. That is because sinh(0) is 0 so you have a division by 0, which is going to be infinity (except at y=0 where you have 0/0 which is undefined)

2 commentaires

Ali Kareem
Ali Kareem le 15 Nov 2015
Thank you for your reply. I tried this code but it is not combine all plot in one diagram.
Regars
v = [0, pi/2, pi];
linecolortab = hsv(length(v)); %choose different colors
for K = 1 : length(v)
f = @(X,y) (X.^2/cosh(v(K))^2) + (y.^2/sinh(v(K))^2) - 1;
h(K) = ezplot(f, [-15 15]);
hold on
L{K} = sprintf('v = %.3f', v(K));
try
set(h(K), 'LineColor', linecolortab(K,:));
catch ME
end
end
legend(h, L)
hold off
You will notice that there is a legend entry for v = 0 but there is no corresponding line. This is due to sinh(0) introducing a division by 0 so there is no plot for v = 0.
The colors used for the lines will automatically change if you add or remove values for v.
Technical note:
In R2014a (and probably several releases before that, but might have changed in R2014b), the output of ezplot is a hggroup that includes a LineColor property that can be set. However, there is a listener on the handle that triggers an "Index exceeds matrix dimensions" within scribe.legend/methods>layout_legend_items when the property is set, but does so after setting the property. If the command is repeated, the error does not trigger. The set() will therefore generate an error but will have the desired effect. That is why I put the set() within a try/catch block, so that the stray error message is ignored.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by