目录
3.源代码与结果(分为接地与不接地两种子情况,每种情况又有二维三维两种仿真):
3.3接地导体球外,直径所在直线上左右对称放置两个正点电荷:
零、使用到的绘制电场线方向的原创函数
drawEline函数
作者:顾世杰,戴桢琦
1、目的
本次MATLAB仿真几乎每一个项目的二维图都需要画电场线,按照老师的要求,电场线头尾必须与电荷连接,因此我们选择使用streamline函数画电场线,由于streamline函数本身画出的线不带箭头,我们通过研究上一届学长学姐们的资料,研究并改良了其中画箭头的代码语句,将其做了必要的扩充,并封装成一个函数M文件。
2、源代码
function pipi=drawEline(h1,d1,d2)
posAxes = get(gca, 'Position'); %获取当前坐标区位置信息
posX = posAxes(1);
posY = posAxes(2);
width = posAxes(3);
height = posAxes(4);%分解位置信息
hold on;
limX = get(gca, 'Xlim');%获取x轴范围
limY = get(gca, 'Ylim');%获取y轴范围
minX = limX(1);
maxX = limX(2);
minY = limY(1);
maxY = limY(2);
x=[h1(1).XData(d1) h1(1).XData(d2)];
y=[h1(1).YData(d1) h1(1).YData(d2)];
xNew = posX + (x - minX) / (maxX - minX) * width;
yNew = posY + (y - minY) / (maxY - minY) * height;%通过坐标变换得到箭头的绝对坐标
pipi=annotation('arrow', xNew, yNew);
3、注意事项
该函数M文件必须与调用它的M文件放在同一个文件夹中,并且要与语句h1=streamline(…);配套使用
一、导体球外点电荷的镜像法(导体球接地情况与不接地情况)
作者:顾世杰
1.目的:
通过Matlab中的相关函数公式,仿真课本上的导体球外镜像法,进一步理解镜像法的相关原理。
2.理论分析:
由真空中的库伦定律可知之间的力F满足:
其中
由电场强度E的定义可以得点电荷的电场强度为:
则点电荷形成的场内一点P处的电为为:
进而有公式:
通过使用①与②两个公式,即可使用Matlab计算出点电荷的电势以及电场强度,进而可以通过软件中的相关函数绘出电场线和等位线。
3.源代码与结果(分为接地与不接地两种子情况,每种情况又有二维三维两种仿真):
3.1接地导体球外单个点电荷:
3.1.1计算公式:
其中电荷量:q=1e-6
常系数:k= 8.9875e9
3.1.2二维图代码:
k = 8.9875e9;
R = 0.05;
d = 0.15;
b = R^2 / d;
q1 = 1e-6;
q2 = -R * q1 / d;
x = linspace(-0.3,0.3,60);
y = linspace(-0.16,0.16,60);
[X,Y] = meshgrid(x);
r1 = sqrt((X - d).^2 + Y.^2);
r2 = sqrt((X - b).^2 + Y.^2);
r3 = sqrt(X.^2 + Y.^2);
U = k * q1./r1 + k * q2./r2;
a = 0:pi/100:2*pi;
x = R * sin( a );
y = R * cos( a );
plot ( x,y,'k-');
hold on;
plot( b,0,'r.','MarkerSize',30);
plot( 0,0,'r.','MarkerSize',30);
plot( d,0,'k.','MarkerSize',30);
xlabel('x','fontsize',16);
ylabel('y','fontsize',16);
u = linspace(0,800000,201);
[C,H] = contour(X,Y,U,u,'k-');
contour(X,Y,U,u,'c-');
% clabel(C,H);
% grid on;
[Ex,Ey] = gradient(-U);
E = sqrt(Ex.^2 + Ey.^2);
Ex = Ex./E;
Ey = Ey./E;
th=linspace(0,2*pi,50);
x1=d+0.005*cos(th);
y1=0.005*sin(th);
for i=1:20
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
% pipi=drawEline(h1,120,121);
% set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k');
end
for i=[21,30]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
% pipi=drawEline(h1,90,91);
% set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=22:29
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
% pipi=drawEline(h1,70,71);
% set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=31:50
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
% pipi=drawEline(h1,120,121);
% set(pipi,'HeadWidth',7,'HeadLength',7,'Color','b')
end
fill(x,y,'w');
for i=1:20
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,120,121);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=[21,30]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,90,91);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=22:29
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,70,71);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=31:50
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,120,121);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
plot([-0.05*cos(120),-0.05*cos(120)-0.01],[-0.05*sin(120),-0.05*sin(120)],'k','linewidth',2);
plot([-0.05*cos(120)-0.01,-0.05*cos(120)-0.01],[-0.05*sin(120),-0.05*sin(120)-0.01],'k','linewidth',2);
plot([-0.05*cos(120)-0.002,-0.05*cos(120)-0.018],[-0.05*sin(120)-0.01,-0.05*sin(120)-0.01],'k','linewidth',2);
% fill(x,y,'g');
plot( b,0,'r.','MarkerSize',30);
plot( 0,0,'y.','MarkerSize',5);
plot( d,0,'k.','MarkerSize',30);
title('不带电不接地导体球外点电荷的场以及电势分布','fontsize',15);
3.1.3二维图截图:
完善前
完善后:
3.1.4三维图代码:
k = 8.9875e9; R = 0.05; d = 0.15; b = R^2 / d; q1 = 1e-6; q2 = -R * q1 / d; %题目中的电荷,半径等参数 x = linspace(-0.3,0.3,60); y = linspace(-0.16,0.16,60); [X,Y] = meshgrid(x); %生成网格 r1 = sqrt((X - d).^2 + Y.^2); r2 = sqrt((X - b).^2 + Y.^2); r3 = sqrt(X.^2 + Y.^2); U = k * q1./r1 + k * q2./r2; u = linspace(0,400000,101); [Ex,Ey] = gradient(-U); E = sqrt(Ex.^2 + Ey.^2); Ex = Ex./E; Ey = Ey./E; surf(U); hold on shading interp; [c,h]=contour3(U,u); colormap(jet); h.EdgeColor='k'; h.LineStyle='--'; h1=streamslice(Ex,Ey); set(h1,'Color',[0.1 0.9 0.8]); %做出电场线的三维分布图 for j=1:length(h1) ui = interp2(U,h1(j).XData,h1(j).YData); h1(j).ZData = ui; end %标识出图像的流线
3.1.5三维图截图:
完善前
完善后
3.2不接地导体球外单个点电荷:
3.2.1计算公式
其中电荷量:q=1e-6
常系数:k= 8.9875e9
3.2.2二维图代码:
k = 8.9845e9; R = 0.05; d = 0.15; b = R^2 / d; q1 = 1e-6; q2 = -R * q1 / d; q3 = -q2; x = linspace(-0.3,0.3,60); y = linspace(-0.16,0.16,60); [X,Y] = meshgrid(x); r1 = sqrt((X - d).^2 + Y.^2); r2 = sqrt((X - b).^2 + Y.^2); r3 = sqrt(X.^2 + Y.^2); U = k * q1./r1 + k * q2./r2 + k * q3./r3; a = 0:pi/100:2*pi; x = R * sin( a ); y = R * cos( a ); plot ( x,y,'c-'); hold on; plot( b,0,'r.','MarkerSize',30); plot( 0,0,'r.','MarkerSize',30); plot( d,0,'r.','MarkerSize',30); xlabel('x','fontsize',16); ylabel('y','fontsize',16); u = linspace(0,600000,251); [C,H] = contour(X,Y,U,u,'k-'); contour(X,Y,U,u,'c-'); % clabel(C,H); % grid on; [Ex,Ey] = gradient(-U); E = sqrt(Ex.^2 + Ey.^2); Ex = Ex./E; Ey = Ey./E; th=linspace(0,2*pi,50); x1=d+0.005*cos(th); y1=0.005*sin(th); x2=0+0.005*cos(th); y2=0.005*sin(th); x3=b+0.005*cos(th); y3=0.005*sin(th); for i=1:20 h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i)); set(h1,'LineWidth',1); % pipi=drawEline(h1,120,121); % set(pipi,'HeadWidth',4,'HeadLength',4,'Color','b') end for i=[21,30] h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i)); set(h1,'LineWidth',1); % pipi=drawEline(h1,220,221); % set(pipi,'HeadWidth',4,'HeadLength',4,'Color','b') end for i=22:29 h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i)); set(h1,'LineWidth',1); % pipi=drawEline(h1,40,41); % set(pipi,'HeadWidth',4,'HeadLength',4,'Color','b') end for i=31:50 h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i)); set(h1,'LineWidth',1); % pipi=drawEline(h1,120,121); % set(pipi,'HeadWidth',4,'HeadLength',4,'Color','b') end for i=19:32 h2 = streamline(X,Y,Ex,Ey,x2(i),y2(i)); set(h2,'LineWidth',1); % pipi=drawEline(h2,165,166); % set(pipi,'HeadWidth',4,'HeadLength',4,'Color','b') end fill(x,y,'w'); for i=1:20 h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i)); set(h1,'LineWidth',1,'linestyle','--'); pipi=drawEline(h1,120,121); set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k') end for i=[21,30] h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i)); set(h1,'LineWidth',1,'linestyle','--'); pipi=drawEline(h1,220,221); set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k') end for i=22:29 h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i)); set(h1,'LineWidth',1,'linestyle','--'); pipi=drawEline(h1,40,41); set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k') end for i=31:50 h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i)); set(h1,'LineWidth',1,'linestyle','--'); pipi=drawEline(h1,120,121); set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k') end for i=19:32 h2 = streamline(X,Y,Ex,Ey,x2(i),y2(i)); set(h2,'LineWidth',1,'linestyle','--'); pipi=drawEline(h2,165,166); set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k') end a = 0:pi/100:2*pi; x = R * sin( a ); y = R * cos( a ); plot ( x,y,'c-','LineWidth',1); plot( b,0,'g.','MarkerSize',30); plot( 0,0,'g.','MarkerSize',30); plot( d,0,'r.','MarkerSize',30); title('镜像法——不接地导体球外点电荷','fontsize',15);
3.2.3二维图截图:
完善前
完善后
3.2.4三维图代码:
k = 8.9875e9;
k = 8.9875e9;
R = 0.05;
d = 0.15;
b = R^2 / d;
q1 = 1e-6;
q2 = -R * q1 / d;
q3 = -q2;
%题目中的电荷,半径等参数
x = linspace(-0.3,0.3,60);
y = linspace(-0.16,0.16,60);
[X,Y] = meshgrid(x);
%生成网格
r1 = sqrt((X - d).^2 + Y.^2);
r2 = sqrt((X - b).^2 + Y.^2);
r3 = sqrt(X.^2 + Y.^2);
U = k * q1./r1 + k * q2./r2 + k * q3./r3;
%由已知值计算出电势表达式
u = linspace(-2000000,2000000,1001);
[Ex,Ey] = gradient(-U);
E = sqrt(Ex.^2 + Ey.^2);
Ex = Ex./E;
Ey = Ey./E;
surf(U);
hold on
shading interp;
subplot(2,1,1)
[c,h]=contour3(U,u);
colormap(white);
h.EdgeColor='c';
% h.LineStyle='--';
subplot(2,1,2);
[c,h]=contour3(U,u);
colormap(white);
h.EdgeColor='w';
% % h.LineStyle='--';
h1=streamslice(Ex,Ey);
set(h1,'Color',[0.1 0.9 0.8]);
%做出电场线的三维分布图
for j=1:length(h1)
ui = interp2(U,h1(j).XData,h1(j).YData);
h1(j).ZData = ui;
end
%标识出图像的流线
3.2.5三维图截图:
完善前
完善后
3.3接地导体球外,直径所在直线上左右对称放置两个正点电荷:
3.3.1计算公式:
其中电荷量:q=1e-6
常系数:k= 8.9875e9
3.3.2二维图代码:
k = 8.9875e9;
R = 0.05;
d = 0.15;
b = R^2 / d;
q1 = 1e-6;
q2 = -R * q1 / d;
q3 = q1;
q4 = -R * q1 / d;
x = linspace(-0.3,0.3,60);
y = linspace(-0.16,0.16,60);
[X,Y] = meshgrid(x);
r1 = sqrt((X - d).^2 + Y.^2);
r2 = sqrt((X - b).^2 + Y.^2);
r3 = sqrt((X + d).^2 + Y.^2);
r4 = sqrt((X + b).^2 + Y.^2);
U = k * q1./r1 + k * q2./r2 + k * q3./r3 + k * q4./r4;
a = 0:pi/100:2*pi;
x = R * sin( a );
y = R * cos( a );
plot ( x,y,'k-');
hold on;
plot( b,0,'r.','MarkerSize',30);
plot( 0,0,'r.','MarkerSize',30);
plot( d,0,'k.','MarkerSize',30);
xlabel('x','fontsize',16);
ylabel('y','fontsize',16);
u = linspace(0,400000,101);
[C,H] = contour(X,Y,U,u,'k-');
contour(X,Y,U,u,'c-');
% clabel(C,H);
% grid on;
[Ex,Ey] = gradient(-U);
E = sqrt(Ex.^2 + Ey.^2);
Ex = Ex./E;
Ey = Ey./E;
th=linspace(0,2*pi,50);
x1=d+0.005*cos(th);
y1=0.005*sin(th);
for i=1:20
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,120,121);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=[21,30]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,90,91);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=22:29
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,70,71);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=31:50
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,120,121);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
x1=-d-0.005*cos(th);
y1=0.005*sin(th);
for i=1:20
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,120,121);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=[21,30]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,90,91);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=22:29
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,70,71);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=31:50
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,120,121);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
plot([-0.05*cos(120),-0.05*cos(120)-0.01],[-0.05*sin(120),-0.05*sin(120)],'k','linewidth',2);
plot([-0.05*cos(120)-0.01,-0.05*cos(120)-0.01],[-0.05*sin(120),-0.05*sin(120)-0.01],'k','linewidth',2);
plot([-0.05*cos(120)-0.002,-0.05*cos(120)-0.018],[-0.05*sin(120)-0.01,-0.05*sin(120)-0.01],'k','linewidth',2);
fill(x,y,'w');
th=linspace(0,2*pi,50);
x1=d+0.005*cos(th);
y1=0.005*sin(th);
for i=[1:20]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,120,121);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=[21,30]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,90,91);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=[22:29]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,70,71);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=[31:50]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,120,121);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
x1=-d-0.005*cos(th);
y1=0.005*sin(th);
for i=[1:20]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,120,121);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=[21,30]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,90,91);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=[22:29]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,70,71);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=[31:50]
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,120,121);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
plot( b,0,'r.','MarkerSize',30);
plot( -b,0,'r.','MarkerSize',30);
plot( 0,0,'y.','MarkerSize',5);
plot( d,0,'k.','MarkerSize',30);
plot( -d,0,'k.','MarkerSize',30);
title('接地导体球外,直径所在直线上左右对称放置的两个正点电荷','fontsize',15);
3.3.3二维图截图:
完善前
完善后
3.3.4 三维图代码:
k = 8.9875e9;
R = 0.05;
d = 0.15;
b = R^2 / d;
q1 = 1e-6;
q2 = -R * q1 / d;
q3 = q1;
q4 = -R * q1 / d;
%题目中的电荷,半径等参数
x = linspace(-0.3,0.3,60);
y = linspace(-0.16,0.16,60);
[X,Y] = meshgrid(x);
%生成网格
r1 = sqrt((X - d).^2 + Y.^2);
r2 = sqrt((X - b).^2 + Y.^2);
r3 = sqrt((X + d).^2 + Y.^2);
r4 = sqrt((X + b).^2 + Y.^2);
U = k * q1./r1 + k * q2./r2 + k * q3./r3 + k * q4./r4;
%由已知值计算出电势表达式
u = linspace(-2000000,2000000,1001);
[Ex,Ey] = gradient(-U);
E = sqrt(Ex.^2 + Ey.^2);
Ex = Ex./E;
Ey = Ey./E;
surf(U);
hold on
shading interp;
subplot(2,1,1);
[c,h]=contour3(U,u);
colormap(jet);
h.EdgeColor='c';
subplot(2,1,2);
[c,h]=contour3(U,u);
colormap(white);
h.EdgeColor='w';
% % h.LineStyle='--';
h1=streamslice(Ex,Ey);
set(h1,'Color',[0.1 0.9 0.8]);
% 做出电场线的三维分布图
for j=1:length(h1)
ui = interp2(U,h1(j).XData,h1(j).YData);
h1(j).ZData = ui;
end
%标识出图像的流线
3.3.5 三维图截图
完善前
完善后
3.4接地导体球外,与球心连线夹角为90度放置两个正点电荷
3.4.1计算公式:
其中电荷量:q=1e-6
常系数:k= 8.9875e9
3.4.2二维图代码:
k = 8.9875e9;
R = 0.05;
d = 0.15;
b = R^2 / d;
q1 = 1e-6;
q2 = -R * q1 / d;
q3 = q1;
q4 = -R * q1 / d;
x = linspace(-0.3,0.3,60);
y = linspace(-0.16,0.16,60);
[X,Y] = meshgrid(x);
r1 = sqrt((X - d).^2 + Y.^2);
r2 = sqrt((X - b).^2 + Y.^2);
r3 = sqrt(X.^2 + (Y - d).^2);
r4 = sqrt(X.^2 + (Y - b).^2);
U = k * q1./r1 + k * q2./r2 + k * q3./r3 + k * q4./r4;
a = 0:pi/100:2*pi;
x = R * sin( a );
y = R * cos( a );
plot ( x,y,'k-');
hold on;
plot( b,0,'r.','MarkerSize',30);
plot( 0,0,'r.','MarkerSize',30);
plot( d,0,'k.','MarkerSize',30);
xlabel('x','fontsize',16);
ylabel('y','fontsize',16);
u = linspace(0,400000,101);
[C,H] = contour(X,Y,U,u,'k-');
contour(X,Y,U,u,'c-');
% clabel(C,H);
% grid on;
[Ex,Ey] = gradient(-U);
E = sqrt(Ex.^2 + Ey.^2);
Ex = Ex./E;
Ey = Ey./E;
th=linspace(0,2*pi,50);
x1=d+0.005*cos(th);
y1=0.005*sin(th);
for i=1:50
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,70,71);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
x1=0.005*cos(th);
y1=d+0.005*sin(th);
for i=1:50
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,70,71);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
fill(x,y,'w');
x1=d+0.005*cos(th);
y1=0.005*sin(th);
for i=1:50
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,70,71);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
x1=0.005*cos(th);
y1=d+0.005*sin(th);
for i=1:50
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1,'linestyle','--');
pipi=drawEline(h1,70,71);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
plot([-0.05*cos(120),-0.05*cos(120)-0.01],[-0.05*sin(120),-0.05*sin(120)],'k','linewidth',2);
plot([-0.05*cos(120)-0.01,-0.05*cos(120)-0.01],[-0.05*sin(120),-0.05*sin(120)-0.01],'k','linewidth',2);
plot([-0.05*cos(120)-0.002,-0.05*cos(120)-0.018],[-0.05*sin(120)-0.01,-0.05*sin(120)-0.01],'k','linewidth',2);
plot( b,0,'r.','MarkerSize',30);
plot( 0,b,'r.','MarkerSize',30);
plot( 0,0,'y.','MarkerSize',5);
plot( d,0,'k.','MarkerSize',30);
plot( 0,d,'k.','MarkerSize',30);
title('接地导体球外,与球心连线夹角为90度放置两个电荷','fontsize',15);
3.4.3二维图截图:
完善前
完善后
3.4.4 三维图代码:
k = 8.9875e9;
R = 0.05;
d = 0.15;
b = R^2 / d;
q1 = 1e-6;
q2 = -R * q1 / d;
q3 = q1;
q4 = -R * q1 / d;
%题目中的电荷,半径等参数
x = linspace(-0.3,0.3,60);
y = linspace(-0.16,0.16,60);
[X,Y] = meshgrid(x);
%生成网格
r1 = sqrt((X - d).^2 + Y.^2);
r2 = sqrt((X - b).^2 + Y.^2);
r3 = sqrt(X.^2 + (Y - d).^2);
r4 = sqrt(X.^2 + (Y - b).^2);
U = k * q1./r1 + k * q2./r2 + k * q3./r3 + k * q4./r4;
%由已知值计算出电势表达式
u = linspace(-2000000,2000000,1001);
[Ex,Ey] = gradient(-U);
E = sqrt(Ex.^2 + Ey.^2);
Ex = Ex./E;
Ey = Ey./E;
surf(U);
hold on
shading interp;
subplot(2,1,1);
[c,h]=contour3(U,u);
colormap(jet);
h.EdgeColor='c';
subplot(2,1,2);
[c,h]=contour3(U,u);
colormap(white);
h.EdgeColor='w';
% % h.LineStyle='--';
h1=streamslice(Ex,Ey);
set(h1,'Color',[0.1 0.9 0.8]);
% 做出电场线的三维分布图
for j=1:length(h1)
ui = interp2(U,h1(j).XData,h1(j).YData);
h1(j).ZData = ui;
end
%标识出图像的流线
3.4.5 三维图截图:
完善前
完善后
3.5同心球壳,外壳接地,球壳内部有一点电荷(p49)
3.5.1计算公式:
3.5.2二维图代码:
k = 8.9875e9;
b = 0.05;
a = 0.03;
d = 0.01;
q = 1e-6;
x = linspace(-0.06,0.06,60);
y = linspace(-0.06,0.06,60);
[X,Y] = meshgrid(x,y);
r = sqrt(X.^2 + Y.^2);
r1 = sqrt((X - d).^2 + Y.^2);
r2 = sqrt((X - a^2/d).^2 + Y.^2);
U1 = k * q * (1./r - 1/b);
U2 = k * q * (1/a - 1/b) + k * q./r1 - k * a /d * q./r2;
c = linspace(0,2*pi,50);
x1 = a * sin( c );
y1 = a * cos( c );
plot ( x1,y1,'k-','LineWidth',3);
fill(x1,y1,'w','EdgeColor','w');
hold on;
x2 = b * sin( c );
y2 = b * cos( c );
plot ( x2,y2,'k-','LineWidth',3);
xlabel('x','fontsize',16);
ylabel('y','fontsize',16);
u = linspace(120000,2000000,51);
[C2,H2] = contour(X,Y,U2,u,'k-');
contour(X,Y,U2,u,'c-');
% clabel(C2,H2);
grid on;
[Ex,Ey] = gradient(-U2);
E = sqrt(Ex.^2 + Ey.^2);
Ex = Ex./E;
Ey = Ey./E;
th=linspace(0,2*pi,50);
x1=d + 0.001*cos(th);
y1=0.001*sin(th);
for i=43:50
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,60,61);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=1:8
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,60,61);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
for i=9:42
h1 = streamline(X,Y,Ex,Ey,x1(i),y1(i));
set(h1,'LineWidth',1);
pipi=drawEline(h1,80,81);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','k')
end
R = linspace(0.03,0.05,50);
c = linspace(0,2*pi,50);
for i=1:50
if i~=[1,50]
X1 = R(i) * cos(c);
Y1 = R(i) * sin(c);
plot(X1,Y1,'w-','LineWidth',3);
hold on;
else
X1 = R(i) * cos(c);
Y1 = R(i) * sin(c);
plot(X1,Y1,'k-','LineWidth',3);
hold on;
end
end
for i=1:50
X2 = 0.03 * cos(c(i));
Y2 = 0.03 * sin(c(i));
X3 = 0.05 * cos(c(i));
Y3 = 0.05 * sin(c(i));
h1=plot([X2,X3],[Y2,Y3],'b','LineWidth',1);
set(h1,'LineWidth',1);
pipi=drawEline(h1,1,2);
set(pipi,'HeadWidth',4,'HeadLength',4,'Color','b')
hold on;
end
fill([0,-0.06,-0.06,-0.04],[0.06,0.06,0,0.035],'w','EdgeColor','w');
fill([0,0.06,0.06,0.04],[0.06,0.06,0,0.035],'w','EdgeColor','w');
fill([0,-0.06,-0.06,-0.04],[-0.06,-0.06,0,-0.035],'w','EdgeColor','w');
fill([0,0.06,0.06,0.04],[-0.06,-0.06,0,-0.035],'w','EdgeColor','w');
R = linspace(0.05,0.06,50);
c = linspace(0,2*pi,50);
for i=2:50
X1 = R(i) * cos(c);
Y1 = R(i) * sin(c);
plot(X1,Y1,'w-','LineWidth',3);
hold on;
end
u = linspace(0,120000,11);
[C1,H1] = contour(X,Y,U1,u,'k-');
contour(X,Y,U1,u,'c-');
% clabel(C1,H1);
grid on;
plot( d,0,'r.','MarkerSize',30);
plot([0.05*cos(120),0.05*cos(120)+0.01],[-0.05*sin(120),-0.05*sin(120)],'k','linewidth',2);
plot([0.05*cos(120)+0.01,0.05*cos(120)+0.01],[-0.05*sin(120),-0.05*sin(120)-0.01],'k','linewidth',2);
plot([0.05*cos(120)+0.002,0.05*cos(120)+0.018],[-0.05*sin(120)-0.01,-0.05*sin(120)-0.01],'k','linewidth',2);
title('镜像法——同心球壳,外壳接地,球壳内部有一点电荷 ','fontsize',15);
3.5.3二维图截图:
完善前
完善后
、
3.5.4 三维图代码:
k = 8.9875e9;
b = 0.05;
a = 0.03;
d = 0.01;
q = 1e-6;
%题目中的电荷,半径等参数
x = linspace(-0.06,0.06,60);
y = linspace(-0.06,0.06,60);
[X,Y] = meshgrid(x,y);
%生成网格
r = sqrt(X.^2 + Y.^2);
r1 = sqrt((X - d).^2 + Y.^2);
r2 = sqrt((X - a^2/d).^2 + Y.^2);
U1 = k * q * (1./r - 1/b);
U = k * q * (1/a - 1/b) + k * q./r1 - k * a /d * q./r2;
%由已知值计算出电势表达式
u = linspace(0,20000000,1001);
[Ex,Ey] = gradient(-U);
E = sqrt(Ex.^2 + Ey.^2);
Ex = Ex./E;
Ey = Ey./E;
surf(U);
hold on
shading interp;
subplot(2,1,1);
[c,h]=contour3(U,u);
colormap(jet);
h.EdgeColor='c';
subplot(2,1,2);
[c,h]=contour3(U,u);
colormap(white);
h.EdgeColor='w';
% % h.LineStyle='--';
h1=streamslice(Ex,Ey);
set(h1,'Color',[0.1 0.9 0.8]);
% 做出电场线的三维分布图
for j=1:length(h1)
ui = interp2(U,h1(j).XData,h1(j).YData);
h1(j).ZData = ui;
end
%标识出图像的流线
3.5.5三维图截图:
完善前
完善后