How to plot inequalities

前端 未结 3 1039
忘了有多久
忘了有多久 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.

提交回复
热议问题