电磁场的Matlab仿真.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab 与电磁场模拟
一单电荷的场分布:
单电荷的外部电位计算公式:
q
φ=
4πε0r
等位线就是连接距离电荷等距离的点,在图上表示就是一圈一圈的圆,而电力线就是由点向
外辐射的线。
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
单电荷的等位线和电力线分布图:
二多个点电荷的电场情况:
模拟一对同号点电荷的静电场
设有两个同号点电荷, 其带电量分别为 +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;
同号电荷的静电场图像为:
50
40
30
20
10
0-2
2
同理,将程序稍作修改,便可以得到异号电荷的静电场图像:
403020100-10-20-30-402
2.5
三、线电荷产生的电位:
设电荷均匀分布在从z=-L到z=L,通过原点的线段上,其密度为q(单位C/m,求在xy 平面上的电位分布。
点电荷产生的电位可表示为
V = Q / 4 π r ε 0
是一个标量。其中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= ’;
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
五有限差分法处理电磁场问题 Matlab 程序: m=40 for k=1:m for j=1:m if k==1 V(j,k=1; elseif((j==1|(j==m|(k==m V(j,k=0; else V(j,k=0.5; end end end cha=0.01; delta=0; n=0;
while(1 n=n+1; for k=2:m-1 for j=2:m-1 Vnew(j,k=1/4*(V(j+1,k+V(j-
1,k+V(j,k+1+V(j,k-1; d=abs((Vnew(j,k-V(j,k/V(j,k; if d>delta delta=d; end
V(j,k=Vnew(j,k; end end if delta>cha break; end if(n>100 break; end delta=0.; end 结果为: