How to plot 2D Linear Inequality?

How to plot cond1 and cond2 with the cost in one figure?
[x1,x2]=meshgrid(0:.1:10,0:.1:10);
cond1=x1-x2<=-2;
cond2=-0.3*x1-x2<=-8;
cost=0.4*x1.^2-5*x1+x2.^2-6*x2+50;
figure (1)
contour(x1,x2,cost,10,'linewidth',2)
xlabel('x_{1}');
ylabel('x_{2}');
hold on
...

 Accepted Answer

[x1,x2]=meshgrid(0:.1:10,0:.1:10);
cond1=x1-x2<=-2;
cond2=-0.3*x1-x2<=-8;
cost=0.4*x1.^2-5*x1+x2.^2-6*x2+50;
figure (1)
contour(x1,x2,cost,10,'linewidth',2)
hold on
contour(x1,x2,cond1,'color','k','linewidth',2)
contour(x1,x2,cond2,'color','r','linewidth',2)
xlabel('x_{1}');
ylabel('x_{2}');
hold on

6 Comments

Omar B.
Omar B. on 17 Sep 2021
Edited: Omar B. on 17 Sep 2021
Thank you. Why don't they look linear? can we use plot?
clc; clear all ;
[x1,x2]=meshgrid(0:.1:10,0:.1:10);
cond1=x1-x2<=-2;
cond2=-0.3*x1-x2<=-8;
cost=0.4*x1.^2-5*x1+x2.^2-6*x2+50;
%% Get cond1 and cond2
c1 = contour(x1,x2,cond1,[1 1],'color','k') ;
idx = c1(2,:)>max(x2(:)) ;
c1(:,idx) = [] ;
p = polyfit(c1(1,:),c1(2,:),1) ;
c1(2,:) = polyval(p,c1(1,:)) ;
%
c2 = contour(x1,x2,cond2,[1 1],'color','k') ;
idx = c2(2,:)>max(x2(:)) ;
c2(:,idx) = [] ;
p = polyfit(c2(1,:),c2(2,:),1) ;
c2(2,:) = polyval(p,c2(1,:)) ;
figure (1)
contour(x1,x2,cost,10,'linewidth',2)
hold on
plot(c1(1,:),c1(2,:),'k','Linewidth',2)
plot(c2(1,:),c2(2,:),'k','LineWidth',2)
xlabel('x_{1}');
ylabel('x_{2}');
Thank you so much.
could you please explain what do you mean by c1(2,:) and c1(1,:)?
Coordinates of contour lines are obtained. Those are c1, c2. These coordinates are row arrays. c1(1,:) means first row which is x -coordinate and c1(2,:) is second row which is y-coordinate.
I got it. Thank you so much.

Sign in to comment.

More Answers (0)

Tags

Asked:

on 17 Sep 2021

Commented:

on 17 Sep 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!