基于Matlab的电磁场与波“镜像电荷法”仿真——导体球外点电荷的几种情况

目录

零、使用到的绘制电场线方向的原创函数

             drawEline函数 

1、目的

2、源代码

3、注意事项

一、导体球外点电荷的镜像法(导体球接地情况与不接地情况)

1.目的:

2.理论分析:

3.源代码与结果(分为接地与不接地两种子情况,每种情况又有二维三维两种仿真):

3.1接地导体球外单个点电荷:

3.2不接地导体球外单个点电荷:

3.3接地导体球外,直径所在直线上左右对称放置两个正点电荷:

3.4接地导体球外,与球心连线夹角为90度放置两个正点电荷

3.5同心球壳,外壳接地,球壳内部有一点电荷(p49)


零、使用到的绘制电场线方向的原创函数

             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三维图截图:

完善前

完善后 

  • 19
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸽呜顾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值