作业帮 > 综合 > 作业

MATLAB用ezplot画两函数交点出现其中一条没有图像.

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/06 00:41:37
MATLAB用ezplot画两函数交点出现其中一条没有图像.
ezplot('(q-p).*(-p.^2-(1-p).^2+1).*p.*(1-p).*((-2)*p+1)+(p.^2).*((1-p).^2).*((-2)*p+1).^2+(-5*q.^2-5*(1-q).^2+1).*(q-p).^2-q.*(1-q).*((-10)*q+5).*(q-p)',[0,1]);及
ezplot('p.*q.*(1-p).*(1-q).*(-2*p+1).*(-10*q+5)+(p-q).^2',[0,1]);可是明显【0,1】间有实数解啊.后又编的程序
》 for q=0:0.0001:1;
syms p;
ans=p*q*(1-p)*(1-q)*(-2*p+1)*(-10*q+5)+(p-q)^2;
p=double(solve(ans));
pr=(abs(imag(p))
第一个ezplot的曲线没什么问题吧?
 
第二个很容易可以看出来,p=0;q=0; 和 p=1;q=1; 是两个解,而且ezplot其实也求出了这两个解,但画图的时候由于只是两个孤立的点,所以看不出.用
h=ezplot('p.*q.*(1-p).*(1-q).*(-2*p+1).*(-10*q+5)+(p-q).^2',[0,1]);
set(h,'marker','o')
就可以看到了.
 
你认为还有其它解吗?
再问: (0.5,0.5)也是解吧,还有按照您说的我输完出现??? There is no 'marker' property in the 'contourgroup' class.是什么原因啊
我用循环程序描点也没有画出这三个明显的解?高手为什么呢???
再答: 1、刚才回答完之后我又注意看了一下,(0.5,0.5)确实也是一个解。用下面的图解方法更容易看出来:ezmesh('p.*q.*(1-p).*(1-q).*(-2*p+1).*(-10*q+5)+(p-q).^2',[0,1]);
zlim([0 1e-2])
view(70,60)但因数值计算精度的问题,用ezplot不能求出这个解(用 zlim([0 2e-4]) 可以看出中间曲面的数据大约在1e-4的量级)。 2、出现你说的那个问题的原因是,在MATLAB稍早一些版本中(例如2008b),ezplot返回的是line对象,但后来改为一种组合对象,叫contourgroup,这会带来一些兼容问题,我以前也遇到过。因我目前用的版本无法复现此问题,暂不能提供解决方法。你知道原因就可以了,也没必要深究。 3、求出另外一个解的做法,目前我觉得ezmesh图解法就是最理想的了,使用solve或ezplot都不是太有效。 如果你只是针对当前这个问题,从图形分析,应该是只有这三个解。如果你想要知道对于二元隐函数求解的更可靠的一般方法,很遗憾,好像没有什么特别可靠的方法。一般来说就是先试试ezplot,如果对结果有疑义,可以再试试ezmesh。有些情况下可以用fsolve求解,但和初值有关,也需要针对具体问题具体分析。