How to plot inequalities

前端 未结 3 1020
忘了有多久
忘了有多久 2020-11-28 13:29

I would like to plot the following inequalities: y < p2(1 - p1) and x < p1(1 - ( y / (1 -

相关标签:
3条回答
  • 2020-11-28 14:16

    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:

    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.

    0 讨论(0)
  • 2020-11-28 14:32

    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
    
    0 讨论(0)
  • 2020-11-28 14:33

    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')
    

    enter image description here

    0 讨论(0)
提交回复
热议问题