Asked by Sultan Al-Hammadi
on 13 Oct 2018 at 14:08

I tried plotting the area defined by (x,y), where x=a^2-b^2 , y=a*b , 0<=a<=1 & 0<=b<=1: in MATLAB, but I don't know how to do it probably. Here is what I have done so far:

a=0:0.0001:1; b=0:0.0001:1; x=a.^2-b.^2; y=a.*b; plot(x,y);

Please help me The problem is that when evaluating x & y, I don't want a & b to be always the same as long as 0<=a<=1 & 0<=b<=1. But I have no idea to resolve this issue!!

Answer by John D'Errico
on 13 Oct 2018 at 14:15

You know how to use meshgrid! In fact, I know that, because you used it in your other question.

So it you want to plot something over all combinations of a and b, then why not use meshgrid? (10000 points in each dimensions will be wild overkill of course.)

madhan ravi
on 13 Oct 2018 at 14:30

You need to be clear in what you want to do? Still your statement is not clear

John D'Errico
on 13 Oct 2018 at 15:06

As I said, you resolve the issue by using meshgrid. meshgrid generates ALL combinations of the two variables, a & b.

[a,b] = meshgrid(0:.01:1,0:.01:1);

So a and b are now TWO dimensional arrays, here, each of size 101x101. Now compute x and y as directed.

x = a.^2 - b.^2; y = a.*b;

plot(x,y,'.')

The result is a sort of triangular domain, with curved edges along the top.

Are you asking how to generate the boundary of that domain? From what you have said, I don't think so.

edgeind = convhull(x(:),y(:)); plot(x(edgeind),y(edgeind),'r-')

But you need to understand that when you want to generate all combinations of two variables like this, USE MESHGRID.

Sultan Al-Hammadi
on 14 Oct 2018 at 1:50

Thank you so much, it looks quite right

Sign in to comment.

Answer by Bruno Luong
on 13 Oct 2018 at 14:19

Edited by Bruno Luong
on 13 Oct 2018 at 15:03

almost right, you need to make a & b oriented in 2 different dimensions (here row for a and column for b)

a=linspace(0,1,101); b=linspace(0,1,101)'; % <= make a column x=a.^2-b.^2; y=a.*b; plot(x,y,'.b');

Bruno Luong
on 13 Oct 2018 at 14:37

you do not need to have same a and b, simply make them oriented differently

Sultan Al-Hammadi
on 13 Oct 2018 at 14:44

Bruno Luong
on 13 Oct 2018 at 15:03

??? x, y are already computed from all combination of a, b with resolutions of 0.01.

So what your question is about? Might be your should slow down think, then ask a real question.

Sign in to comment.

Answer by Bruno Luong
on 13 Oct 2018 at 14:50

Or perhaps you want this?

a=linspace(0,1,100)'; b=linspace(0,1,100)';

rect = [a 0+0*a; 1+0*b b; flip(a) 1+0*a; 0+0*b flip(b)]; a = rect(:,1); b = rect(:,2); x=a.^2-b.^2; y=a.*b; plot(x,y,'-b');

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.