2011-12-15 64 views
2

我想知道如何绘制一个具有2个电荷Q和-Q及其总E的图形,对于特定点(例如(4,5)),具有轮廓f。 我的M文件实际上扫描区域(从-3x 3倍),并计算E中的每一个现场,将其存储在一个表中,但在此之后,我不知道如何使用contourf画吧..如何用contourf模拟和绘制Matlab中的电场?

syms i 
syms j 
syms d 
d=input('dwse thn timi tou d,ths apostashs') 
j=0 
i=0 
for j=-d:d/1000:d 

    j=j+1 

for i=-d:d/1000:d 

    i=i+1 
    z=(i,j) 

end, end 

回答

3

在距离r处由下式给出:

E = q /(4 * pi * e0 * r。^ 2);

如果你有几个费用,你可以使用叠加原则,并添加每次充电的贡献。

剩下要做的唯一事情就是创建一个网格来计算电场。为此,您可以使用Matlab的函数meshgrid

在Matlab一个简单的例子是:

k=1/4/pi/8.854e-12; 
d=2; 
q=[-1 1]; 
x=[-d/2 d/2]; 
y=[0 0]; 

dx=0.01; 
X=(-d:dx:d); 
Y=(-d:dx:d); 
[X Y]=meshgrid(X,Y); 

E=zeros(size(X)); 

for i=1:numel(q) 
    r=sqrt((X-x(i)).^2+(Y-y(i)).^2); 
    E=E+k*q(i)./r.^2; 
end 

E(isinf(E))=NaN; 

figure; 
contourf(X,Y,E); 
axis image; 

希望它可以帮助你。您可以阅读contourf的文档以根据需要调整绘图。

1

您需要在您的问题中提供更多信息:您遇到什么问题?你有什么尝试?

然而,假设z(i,j)是你在2D网格计算电场,根据库仑定律,由一个单一的,离散的电荷q产生的电场只是叫你for循环后contourf作为

contourf(z) 
+0

我实际上不知道如何用循环填充数组.. 有2个电荷-Q(-d/2,0)和Q(d/2,0),它们的距离是d。 我必须在x(-2d,2d)y(-2d,2d)中的每个点上做一个Etotal结果的数组,然后使用contourf ..我迷路了:/ – alextsil 2011-12-15 19:02:04

+1

@zwoskasere那么你需要一些想法你正在解决/使用的方程。这听起来像是作业 - 是吗? – Chris 2011-12-15 19:17:31