Набор от чертежи на всички точки отговаря на свойство 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