上图:
matlab代码:
clear;
q = 1.602e-19; %元电荷带电量
q1Size = 1;
q2Size = -2;
q1 = q1Size*q;
q2 = q2Size*q;
radius = 0.5; %点电荷半径
x = 15; y = 15; %x和y轴显示边界值
k = 9e+9; %k = 1/4πε
delta = 0.1;%引入距离误差以消除点电荷处点位无限大的问题
for a =3:0.5:13
%--------------闭环部分--------------%
%计算电势
[X,Y]=meshgrid(-x:0.5:x,-y:0.5:y);%获取左半部分矩阵
r1=sqrt((X+a).^2 + Y.^2 + delta);
r2=sqrt((X-a).^2 + Y.^2 + delta);
V1=q1*(k./r1) + q2*(k./r2);
%画等势线
min1 = min(V1,[],"all");
max1 = max(V1,[],"all");
range = linspace(min1,max1,100);
contour(X,Y,V1,range);
hold on;
%计算电场强度并绘制
[Ex,Ey]=gradient(-V1);
%quiver(X1,Y1,Ex1,Ey1); %绘制箭头矢量图
phi = linspace(-pi,pi,30); %电场线发射范围
startx1 = -a + radius*q1Size* cos(phi);
starty1 = radius*q1Size*sin(phi);
streamline(X,Y,Ex,Ey,startx1,starty1); %绘制电场强度线
%--------------负电荷补充部分--------------%
%计算电场强度
[Ex,Ey]=gradient(V1);
%quiver(X,Y,Ex,Ey); %绘制箭头矢量图
phi = linspace(-pi/2,pi/2,15);
startx = a - radius * q2Size * cos(phi);
starty = radius * q2Size * sin(phi);
streamline(X,Y,Ex,Ey,startx,starty);%绘制电场强度线
%--------------标记电荷位置---------------%
pha=linspace(0,2*pi,20);%角度[0,2*pi]
%正电荷红色填充
px=-a+radius*q1Size*cos(pha);
py=radius*q1Size*sin(pha);
fill(px,py,'r');
%plot(a,0,'k+','MarkerSize',5)%加上黑色'+'符号(但填充后不能显示)
%负电荷蓝色填充
px=a+radius*q2Size*cos(pha);
py=radius*q2Size*sin(pha);
fill(px,py,'b');
title('不等量异号电荷(正电荷q,负电荷-2q)')
hold off;
drawnow;%刷新图窗
end
献丑了