上图:
matlab代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 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 |
献丑了