电磁场的Matlab仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab 与电磁场模拟

一 单电荷的场分布:

单电荷的外部电位计算公式:

等位线就是连接距离电荷等距离的点,在图上表示就是一圈一圈的圆,而电力线就是由点向

外辐射的线。

MATLAB 程序:

theta=[0:.01:2*pi]'; r=0:10; x=sin(theta)*r; y=cos(theta)*r; plot(x,y,'b')

x=linspace(-5,5,100); for theta=[-pi/4 0 pi/4] y=x*tan(theta); hold on ; plot(x,y); end grid on

单电荷的等位线和电力线分布图:

r q

04πεφ=

二多个点电荷的电场情况:

模拟一对同号点电荷的静电场

设有两个同号点电荷,其带电量分别为+Q1和+Q2(Q1、Q2>0 )距离为2a则两电荷在点P(x, y)处产生的电势为:

由电场强度可得E = -∇U,在xOy平面上,电场强度的公式为:

为了简单起见,对电势U做如下变换:

Matlab程序:

q=1;

xm=2.5;

ym=2;

x=linspace(-xm,xm); y=linspace(-ym,ym); [X,Y]=meshgrid(x,y); R1=sqrt((X+1).^2+Y.^2); R2=sqrt((X-1).^2+Y.^2); U=1./R1+q./R2; u=1:0.5:4; figure

contour(X,Y,U,u) grid on

legend(num2str(u')) hold on

plot([-xm;xm],[0;0]) plot([0;0],[-ym;ym])

plot(-1,0,'o','MarkerSize',12) plot(1,0,'o','MarkerSize',12) [DX,DY] = gradient(U); quiver(X,Y,-DX,-DY); surf(X,Y,U);

同号电荷的静电场图像为:

-2

010

20

30

40

50

同理,将程序稍作修改,便可以得到异号电荷的静电场图像:

三、线电荷产生的电位:

设电荷均匀分布在从z=-L 到z=L,通过原点的线段上,其密度为q(单位C/m),求在xy 平面上的电位分布。

点电荷产生的电位可表示为

是一个标量。其中r 为电荷到测量点的距离。线电荷所产生的电位可用积分或叠加的方法来求。为此把线电荷分为N 段,每段长为dL 。每段上电荷为q*dL,看作集中在中点的点电荷,它产生的电位为 然后对全部电荷求和即可。

把xy 平面分成网格,因为xy 平面上的电位仅取决于离原点的垂直距离R ,所以可以省略一维,只取R 为自变量。把R 从0到10米分成Nr+1点,对每一点计算其电位。

Matlab 程序: clear all;

L=input(‘线电荷长度L = ’); N=input(‘分段数N = ’); Nr=input(‘分段数Nr = ’); q=input(‘电荷密度q= ’);

-40-30-20-100102030400/4V Q r πε=

E0=8.85e-12;

C0=1/4/pi/E0;

L0=linspace(-L,L,N+1);

L1=L0(1:N);L2=L0(2:N+1); Lm=(L1+L2)/2;dL=2*L/N; R=linspace(0,10,Nr+1); for k=1:Nr+1

Rk=sqrt(Lm.^2+R(k)^2);

Vk=C0*dL*q./Rk;

V(k)=sum(Vk);

end

[max(V),min(V)]

plot(R,V),grid

线电荷产生的静电位分布图:

四计算平面上N个电荷之间的库伦引力

1 建模:

由库仑定律:

先输入电荷的数目,各电荷的坐标及电荷量,再选一个电荷,求其它电荷对它的作用力,叠加求合力。再选下一个电荷,依次类推。

Matlab程序:

clear all;

N = input('ÊäÈëµçºÉÊýÄ¿N=:');

for ic = 1:N

fprintf('----/n¸öµçºÉ#%g\n',ic);

rc = input('ÊäÈëµçºÉλÖÃ[x,y]£¨Ã×£©:');

x(ic) = rc(1);

y(ic) = rc(2);

q(ic) = input('ÊäÈëµçºÉÁ¿£¨¿âÂØ£©£º');

end

E0 = 8.85e-12;

C0 = 1/(4*pi*E0);

for ic = 1:N

Fx = 0.0;Fy = 0.0;

for jc = 1:N

if(ic ~= jc)

xij = x(ic)-x(jc);yij = y(ic)-y(jc);

Rij = sqrt(xij^2+yij^2);

Fx=Fx+C0*q(ic)*q(jc)*xij/Rij^3;

Fy=Fy+C0*q(ic)*q(jc)*yij/Rij^3;

end

end

fprintf('ÆäËüµçºÉ×÷ÓÃÔÚµçºÉ#%gÉϵĺÏÁ¦Îª£º\n',ic);

fprintf('x-·ÖÁ¿:%e\n',Fx);

fprintf('y-·ÖÁ¿:%e\n',Fy);

end

相关文档
最新文档