电磁场的Matlab仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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