问题描述: 今天同学问了我一个问题,怎么画出带有$x > y$条件(1)限制的隐函数$f(x,y)$?
问题如下图
在这里插入图片描述
百度了很久,没有找到很棒的回答,经过很多文档、博客的拼凑,最终摸索出来了解决这个问题的方法。
解决方法:
方法一:

1
2
3
4
5
6
7
8
h = ezplot('x*(4*x-7*y)-y^2*(4*x^2-2*y^2+3*x*y)',[0,2]);
xy=get(h,'ContourMatrix'); #从图像h获取数据以矩阵形式存放到xy中
x = xy(1,1:end); #将矩阵xy的x轴方向的点存放到向量x中
y = xy(2,1:end); #将矩阵xy的y轴方向的点存放到向量y中
indx = (find(x>y)); #找到满足限制条件x>y的点,其序号放到indx中
figure;
plot(x(indx),y(indx)); #画出满足条件的点
axis([0,2,0,2]);

如下图所示:
在这里插入图片描述
那么,如果限制条件不止一个呢? 比如说上面的问题,再加一个条件(2) $y>0.4x$ ,可以这样干:

1
2
3
4
5
6
7
8
9
h = ezplot('x*(4*x-7*y)-y^2*(4*x^2-2*y^2+3*x*y)',[0,2]);
xy=get(h,'ContourMatrix');
x = xy(1,1:end);
y = xy(2,1:end);
indx = (find(x>y));
indx2 = (find(y(indx) > 0.4*x(indx))); #在满足条件1的点中,找到满足条件2的点,放到indx2中
figure;
plot(x(indx2),y(indx2)); #画出两个条件都满足的点
axis([0,2,0,2]);

如下图所示:

在这里插入图片描述
方法二:
如果图不是在很正式的场合使用,画图应该是怎么速度快怎么来。像这个小问题,我花了一个多小时才解决,在做有时间限制项目时是不可取的,最简单的方法是,直接把原图中上面一条线p掉,简单痛快,效果没毛病,下面这张是p出来的,当然这得在不伪造数据的原则下才能干:
在这里插入图片描述