利用 Matlab 模拟点电荷电场的分布

一、目的

1.熟悉单个点电荷的电场分布情况;

2.学会使用 Matlab 进行数值计算,并绘出相应的图形;

二、原理

利用 Matlab 模拟点电荷电场的分布_第1张图片

三、MATLAB仿真

1、画单个点电荷的平面电场线与等势线

利用 Matlab 模拟点电荷电场的分布_第2张图片

其代码如下:

%单个点电荷的平面电场线与等势线
a=0.2; 
k=9*10^9; %比例常数
q=1.6*10^(-19); %元电荷电量
r0=0.1; %电场线起点半径
theta=linspace(0,2*pi,13); 
[x,y]=pol2cart(theta,a); 
x=[x;0.05*x]; 
y=[y;0.05*y]; 
quiver(x,y,0.5*x,0.5*y) 
plot(x,y) 
hold on 
u=k*q/r0; 
u1=linspace(1,3,7)*u; 
x=linspace(-0.1,0.1,100); 
[X,Y]=meshgrid(x); 
r1=sqrt(X.^2+Y.^2); 
U=k.*q./r1; 
contour(X,Y,U,u1) 
title('单个点电荷的平面电场线与等
势线','fontsize',20)%显示标题
xlabel('r','fontsize',16) 
 %显示横坐标
ylabel('E(U)','fontsize',16) 
 %显示纵坐标

2、画一对点电荷的平面电场线与等势线

程序代码如下:

%同号点电荷对的电场线和等势线
clear %清除变量
q=1; %电量比(绘制不同电量比点电荷对的电场线和等势线只需改变 q 值即可)
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) %画第二个正电荷
 
[Ex,Ey]=gradient(-U,x(2)-x(1),y(2)-y(1));%用电势梯度求场强的两个分量
dth1=20; %左边电场线角度间隔
th1=(dth1:dth1:180-dth1)*pi/180; %电场线的起始角度
r0=0.1; %电场线起点半径
x1=r0*cos(th1)-1; %电场线的起点横坐标
y1=r0*sin(th1); %电场线的起点纵坐标
streamline(X,Y,Ex,Ey,x1,y1) %画左上电场线
streamline(X,-Y,Ex,-Ey,x1,-y1) %画左下电场线
dth2=dth1/q; %右边电场线角度间隔
th2=(180-dth2:-dth2:dth2)*pi/180; %电场线的起始角度
x2=r0*cos(th2)+1; %电场线的起点横坐标
y2=r0*sin(th2); %电场线的起点纵坐标
streamline(X,Y,Ex,Ey,x2,y2) %画右上电场线
streamline(X,-Y,Ex,-Ey,x2,-y2) %画右下电场线
axis equal tight %使坐标刻度相等
title('等量同号点电荷的电场线和等势线','fontsize',20)%显示标题
xlabel('r','fontsize',16) %显示横坐标
ylabel('E(U)','fontsize',16) %显示纵坐标
txt=['电荷比:\itQ\rm_2/\itQ\rm_1=' num2str(q)];%电荷比文本
text(-xm,-ym-0.3,txt,'fontsize',16) %显示电荷比

取q=1和q=2作出点电荷对的电场线和等势线如图 2 所示:

利用 Matlab 模拟点电荷电场的分布_第3张图片

(1)单个电荷的立体电场分布如图 3 所示

利用 Matlab 模拟点电荷电场的分布_第4张图片

程序代码如下:

%单个电荷立体电场分布
k=9*10^9;q=10^(-9);r0=0.1;u0=k*q/r0; 
[X,Y,Z]=sphere(8);x=r0*X(:)';y=r0*Y(:)';z=r0*Z(:)'; 
x=[x;zeros(size(x))];y=[y;zeros(size(y))];z=[z;zeros(size(z))]; 
plot3(x,y,z); hold on 
u=linspace(1,3,5)*u0;[X,Y,Z]= sphere;r=k*q./u; 
Z(X<0&Y<0)=nan; 
for i=1:5 
surf(r(i)*X,r(i)*Y,r(i)*Z) 
end 
shading interp 
title('单个电荷立体电场分布','fontsize',20)%显示标题
xlabel('x','fontsize',16) %显示横坐标
ylabel('y','fontsize',16) %显示纵坐标
zlabel('z','fontsize',16) %显示竖坐标

你可能感兴趣的:(MATLAB应用,matlab,算法,人工智能,经验分享)