作业帮 > 数学 > 作业

关于MATLAB中contour用法的疑问

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:数学作业 时间:2024/04/28 19:08:12
关于MATLAB中contour用法的疑问
clear all;
clc;
q=2e-6;k=9e9;x=0,y=0;
[X,Y]=meshgrid(-3:0.3:3);
r=sqrt((X-x).^2+(Y-y).^2);
V=k.*q.*(1./r);
[Ex,Ey]=gradient(-V);
E=sqrt(Ex.^2+Ey.^2);
Ex=Ex./E;
Ey=Ey./E;
hold on;
quiver(X,Y,Ex,Ey,0.4)
plot(x,y,'bo',x,y,'g+')
contour(X,Y,V)
可以画出等势线

最后要改成contour(X,Y,V,50)就不行了,求教各位大神这是为什么呢?

我用的是MATLAB R2012b
关于MATLAB中contour用法的疑问
因为等高线全集中在一起了,改成contour(X,Y,V,linspace(min(V(:)),max(V(:)),50));
再问: 改了,还是不行啊。。。
再答: 更正:等高线集中在一起的原因是靠近电荷的电场强度都接近无穷大了, 所以怎么分都不行. 所以限制一个最大值.
clear all;clc;q=2e-6;k=9e9;x=0,y=0;[X,Y]=meshgrid(-3:0.3:3);r=sqrt((X-x).^2+(Y-y).^2);V=k.*q.*(1./r);
V_max = 50*min(V(:));V(V==Inf) = V_max;V(V>V_max) = V_max;
[Ex,Ey]=gradient(-V);E=sqrt(Ex.^2+Ey.^2);Ex=Ex./E;Ey=Ey./E;hold on;quiver(X,Y,Ex,Ey,0.4)plot(x,y,'bo',x,y,'g+')contour(X,Y,V,50);