问题描述: 今天同学问了我一个问题,怎么画出带有$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出来的,当然这得在不伪造数据的原则下才能干:
Author:
Jorwnpay
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Slogan:
I think it is possible for ordinary people to choose to be extraordinary.