Matlab有关不等式画图问题

如何用Matlab画出27.6xy<6.17x+5.97y-27.6xy<1的边界线及区域?

因为没作特殊说明,我们默认楼主是在xoy平面内讨论(排除柱面情形)问题。
对于不等式绘图,mathematica有相应的函数——regionplot(2维或者3维),而matlab没有,但是我们有办法。这样的问题(平面不等式问题)主要有两种方法:

1. 绘制曲线,给可行域画上hatch;
2. 定义空间曲面,对于不满足要求的点设置为nan,然后使用surf或者mesh,观察俯视图;

其中,方法1能看到图像和图颜色(或者样式)的可行域,但是方法2只能显示可行域,其他多余的线条被擦除了,并且锯齿状比较重。

遗憾的是,对于可行域填充其他样式的hatch,比如斜线等,我做不到;对于空间不等式区域绘图,我暂时找不到合适的方法。希望有高手能实现这两个遗憾。。。

下面使用方法1解决楼主问题:

  1. h1=ezplot('1-(6.17*x+5.97*y-27.6*x.*y)');
  2. hold on
  3. h2=ezplot('6.17*x+5.97*y-27.6*x.*y-27.6*x.*y');
  4. set(h1,'Color','blue')
  5. set(h2,'Color','green')
  6. set(h2,'Color','green')
  7. title('平面规划')
  8. [x,y]=meshgrid(-2*pi:pi/120:2*pi);
  9. z1=1-(6.17*x+5.97*y-27.6*x.*y);
  10. z2=6.17*x+5.97*y-27.6*x.*y-27.6*x.*y;
  11. ind=(z1>=0&z2>=0);
  12. h=plot(x(ind),y(ind),'.r','MarkerSize',2);
  13. legend([h1(1);h2(1);h],'曲线1','曲线2','可行域')


你可能感兴趣的:(MATLAB)