13

我想绘制以下不等式: y < p 2 (1 - p 1 ) 和x < p 1 (1 - ( y / (1 - p 1 )))。

鉴于第一个满意,我想绘制两者都满意的区域。
p 1p 2可以在 [0,1] 内变化。

我将不胜感激任何帮助!

4

3 回答 3

17

试试这个:红色区域是两个不等式都满足的地方。

[X,Y]=meshgrid(0:0.01:1,0:0.01:1); % Make a grid of points between 0 and 1
p1=0.1; p2=0.2; % Choose some parameters
ineq1 = Y<p2*(1-p1);
ineq2 = X<p1*(1-(Y./(1-p1)));
colors = zeros(size(X))+ineq1+ineq2;
scatter(X(:),Y(:),3,colors(:),'filled')

在此处输入图像描述

于 2012-07-05T14:43:21.790 回答
9

另一种解决方案(但类似于 Sam Robert 的)将使用contourf

[X, Y] = meshgrid((0:999) / 1000, (0:999) / 1000);
p = rand(2, 1);                            %# In this example p = [0.1, 0.2]
ineq1 = Y < p(2) * (1 - p(1));             %# First inequation
ineq2 = X < p(1) * (1 - (Y / (1 - p(1)))); %# Second inequation
both = ineq1 & ineq2;                      %# Intersection of both inequations

figure, hold on
c = 1:3;                                   %# Contour levels
contourf(c(1) * ineq1, [c(1), c(1)], 'b')  %# Fill area for first inequation
contourf(c(2) * ineq2, [c(2), c(2)], 'g')  %# Fill area for second inequation
contourf(c(3) * both, [c(3), c(3)], 'r')   %# Fill area for both inequations
legend('First', 'Second', 'Both')
set(gca, ...                               %# Fixing axes ticks
    'XTickLabel', {t(get(gca, 'XTick'))}, 'YTickLabel', {t(get(gca, 'YTick'))})

这是结果:

结果

红色区域(如图例中所述)表示满足两个不等式的位置。

请注意,第二次和第三次contourf调用仅用于说明,以显示仅满足其中一个不等式的位置。

于 2012-07-06T00:34:15.240 回答
2

我认为这种方法很容易理解。制作曲面图并将其旋转到顶视图。

v = -5:0.1:5;
p1 = 0.1;
p2 = 0.2;
[x,y] = meshgrid(v);
ineq1 = y<p2*(1-p1);
ineq2 = x<p1*(1-(y./(1-p1)));
ineq = double(ineq1 & ineq2);    % intersection of the inequalities
surf(x,y,ineq);
view(0,90)      % rotate surface plot to top view
于 2017-02-02T19:45:53.263 回答