Набор чертежей всех точек удовлетворяет свойству MATLAB

Я хотел бы нарисовать набор точек, которые удовлетворяют условию, например:

{(x,y) : x+y = 1} или {(x,y) : -xlog(x)-ylog(y)>10} или {(x,y,z) : x + yz^2 < 2} (или любое другое свойство).

Я не мог найти, как рисовать эти вещи в Matlab (я нашел только, как рисовать функции, не мог найти, как рисовать наборы в простом). Любая помощь будет приветствоваться.

Спасибо


person Mr Y    schedule 10.10.2014    source источник


Ответы (1)


Условия равенства и неравенства — это две принципиально разные задачи.

В случае равенства вы присваиваете значения x и решаете y. В вашем примере:

x = linspace(-10,10,1000); %// values of x
y = 1-x; %// your equation, solved for y
plot(x,y, '.', 'markersize', 1) %// plot points ...
plot(x,y, '-', 'linewidth', 1) %// ... or plot lines joining the points

введите здесь описание изображения

Для неравенства вы создаете сетку из x, y точек (используя, например, ndgrid) и оставляете только те, которые удовлетворяют вашему условию. В вашем примере:

[x, y] = ndgrid(linspace(-10,10)); %// values of x, y
ind = -x.*log(x)-y.*log(y)>10; %// logical index for values that fulfill the condition
plot(x(ind), y(ind), '.'); %// plot only the values given by ind

введите здесь описание изображения

Для 3D идея та же, но вы используете plot3 для построения графика. В этом случае форму набора может быть труднее увидеть на графике. В вашем примере:

[x y z] = ndgrid(linspace(-10,10,100));
ind = x + y.*z.^2 < 2;
plot3(x(ind), y(ind), z(ind), '.', 'markersize', 1);

введите здесь описание изображения

person Luis Mendo    schedule 10.10.2014