Reputation: 175
I would like to plot the following inequalities: y < p2(1 - p1) and x < p1(1 - ( y / (1 - p1))).
Given that the first is satisfied, I want to plot the region in which both are satisfied.
p1 and p2 can vary within [0,1].
I would appreciate any help!
Upvotes: 14
Views: 23425
Reputation: 158
I think this method is easy to understand. Make a surface plot and rotate it to top view.
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
Upvotes: 3
Reputation: 24127
Try this: The red area is where both inequalities are satisfied.
[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')
Upvotes: 18
Reputation: 32930
An alternative solution (yet similar to Sam Robert's) would be using 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'))})
and this is the result:
The red area (as mentioned in the legend) indicates where both inequations are satisfied.
Note that the second and third contourf
calls are just for illustration, to show where only one of the inequations is satisfied.
Upvotes: 10