二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

本文参考了两位学长的csdn博客,经过笔者和笔者的一位同专业室友的共同编辑最终形成。这也是我们组两个人的电磁场理论课程的课程设计,希望能对学弟学妹们有所帮助。

目录

1.方法论述

1.1点电荷

1.2方法的理论性

2.Matlab程序及设计思路

2.1二维平面

2.2三维空间

3.方法应用示例

3.1二维平面

3.2三维空间

4.结论

5.参考文献

1.方法论述

1.1 点电荷

点电荷,物理学上把本身的线度比相互之间的距离小得多的带电体叫做点电荷。相当于运动学的”质点”模型。

电荷都是有体积,有大小的。电荷之间存在相互作用,同种电荷相互推斥,异种电荷相互吸引。在定量地研究电荷之间相互作用的时候,发现有些电荷的大小对所研究问题的结果带来的影响微不足道,这个时候就完全可以把电荷的体积和大小忽略掉,把电荷看做只有电量,没有大小的电荷,这就是点电荷模型。

1.2 方法的理论性

点电荷系统与点电荷模型类似,同样是电磁场问题中的基本模型。根据库仑定律:在真空中,两个静止点电荷之间的作用力与这两个电荷的电量乘积成正比,与它们之间距离的平方成反比,作用力的方向在两个电荷的连线上,它们之间的作用力F满足

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

为电介质常数,电场强度的计算公式为

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

根据电场强度的公式,我们可以得到计算空间中电势分布的公式

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

对于静电场来说某点的电场方向为其电力线方向也为其负梯度方向

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

最后在matlab中求出各点的电势,用matlab自带的函数库求出电场强度并画出电力线在三维空间中的分布图。

2.Matlab程序及设计思路

2.1 二维平面

程序见下方

参考csdn中两位学长的相关程序,主要套用团子学长的程序壳子和李学长的画图结构和思想,我们可以大致的给出一种平面内可任取任意个任意位置的不同电性的点电荷的电势图和电场线分布情况。

第一部分:清除已运行产生的同名变量,清楚干扰。为了实现任意性,有必要加入电荷位置,电荷电性的输入口。为了更符合程序运行者的感官,加入了可以设置电场线间隔以及等势面间隔的输入口。注意,电场线间隔应该为1~180;等势面差值间隔由设定点电荷决定最大值。不能太大,一般设置0.5左右;过小则运行时间太长。

第二部分:确定了给出图像的显示范围。xy最值设定使得窗口有了一定的适应性。如果觉得适应性不够,可选择其后所加是适应值。

第三部分:给出了源点与各场点距离,由点电荷个数确定下方相关部分的循环次数。距离的反比是电位函数,既可以求导确定梯度进而画出电场线,又可以求得各场点的电位。

第四部分:通过循环语句求出各场点的电位。

第五部分:通过contour画出等势线,由t确定分度值,这也是t不能太大的原因。保持图像,此后在此图像上绘制电场线。

第六部分:通过循环语句和判断语句画出原点,正电荷以+表示,负电荷以o表示。

第七部分:利用matlab自带的gradient函数求得两个维度方向的梯度,确定要引出电场线的角度间隔。由于电场线出自正电荷,终结至负电荷,所以我们从电荷画电场线是对的。

第八部分:利用循环语句和判断语句绘制正电荷和负电荷的电场线,利用了系统的streamline函数。

第九部分:完善标题,显示两个维度的坐标。

clear all %清除变量
a=input('输入要设置的点电荷的位置(输入二维列矩阵,如[1,1;2,2]表示位置在(1,1),(2,2)的两个电荷):'); %输入确定点电荷位置
Q=input('输入对应的点电荷的电荷量(+-表示电性,输入行矩阵,如[1,1]表示上边电荷的电性为正,电荷量为1,注意行维度为电荷数):'); %输入确定点电性及电量
a1=input('电场线角度间隔(间隔越小则电场线越密):'); %输入想要的电场线角度间隔,间隔越小则电场线越密
t=input('等势面差值间隔(间隔越小则电势面越密,设置过大可能会出现错误,可选择调小间隔或者成倍增加电荷量):'); %输入想要的等势面差值间隔,间隔越小则电势面越密
%第一部分

q=1; %电量比
xmin=min(a(:,1))-4;
xmax=max(a(:,1))+4; %横坐标范围,此处+4是为了留有余量,也可以改变来改变显示框x方向长度
ymin=min(a(:,2))-4;
ymax=max(a(:,2))+4; %纵坐标范围,此处+4是为了留有余量,也可以改变来改变显示框y方向长度
x=linspace(xmin,xmax); %横坐标向量
y=linspace(ymin,ymax); %纵坐标向量
[X,Y]=meshgrid(x,y); %设置坐标网点

%第二部分

G=size(a);
g=G(1,1); %确定要画的电荷的个数,方便后边画图
R={};
for i=(1:g)
R{1,i}=sqrt((X - a(i,1)).^2 + (Y-a(i,2)).^2 ); %确定显示框内各点到各个点电荷的距离
end

%第三部分

U=zeros(size(X)); %初始化,初始电势全为0
for i=(1:g)
U=U+Q(1,i)*(1./R{1,i}); %将不同位置之于各极点的电势相加
end

%第四部分

min1 = min(min(U)); %定义要表示的最小电势值
max1 = max(max(U)); %定义要表示的最大电位值
u=min1 :t: max1 ; %等势线的电势向量,t表示分度值
figure; %创建图形窗口
contour(X,Y,U,u,'--'); %画等势线
hold on; %保持图像,此后在此图像上作点电荷和电场线

%第五部分

for i=(1:g)
if Q(1,i)>0
plot(a(i,1),a(i,2),'+','MarkerSize',16); %画出所有的点电荷
else
plot(a(i,1),a(i,2),'o','MarkerSize',16); %画出所有的点电荷
end
end

%第六部分

[Ex,Ey]=gradient(-U,x(2)-x(1),y(2)-y(1)); %用电势梯度求场强的两个分量
r0=0.1; %电场线起点半径
b=(a1:a1:360-a1)*pi/180; %电荷电场线的始末角度和步长

%第七部分

for i=(1:g)
if Q(1,i)>0
factor=1;
else
factor=-1; %电荷对factor的影响,正电荷对应1,无和负电荷对应-1
end
x1{1,i}=r0*cos(b)+a(i,1); %任一个点电荷电场线的起点横坐标
y1{1,i}=r0*sin(b)+a(i,2); %任一个点电荷电场线的起点纵坐标
streamline(X,Y,factor*Ex,factor*Ey,x1{1,i},y1{1,i}); %画任一个点电荷电场线
hold on; %保持图像
end

%第八部分

axis equal tight %使坐标刻度相等
title('二维平面内多极子的电场线和等势线(LEVEL表示电势)','fontsize',16) %显示标题
xlabel('\itx/r (电势单位:kq/r=1) ','fontsize',12) %显示横坐标
ylabel('\ity/r','fontsize',12) %显示纵坐标
%第九部分

2.2 三维空间

程序见下方

此部分无非是把三维转成二维,由于等势面的表示比较难以描述,而matlab中自带的工具包不能直接得出矩阵等势面。故而在此部分我们只给出了三维电场线的画法程序。

第一部分:修改输入提醒为三维空间坐标,删去等势线差值输入。

第二部分:变二维为三维,增加z维度。

第三部分:变二维为三维,加z维度。

第四部分:不变。

第五部分:删掉。

第六部分:变二维为三维,加z维度。

第七部分:变二维为三维,加z维度。

第八部分:此步骤是相对关键的一步。起初仍是按照圆的抽象形式形容电荷,结果输出的电场线仅在某些平面中显示。原因是点电荷在三维空间中的理想模型应该是球,故而电场线发散应该沿舞φ和θ两个方向,故而加入θ相关的分度值和尺分度空间个数进而得出空间电场线分布。

第九部分:变二维平面为三维空间,增加z方向的坐标轴显示。

clear all %清除变量
a=input('输入要设置的点电荷的位置(输入三维列矩阵,如[1,1,1;2,2,2]表示位置在(1,1,1),(2,2,2)的两个电荷):'); %输入确定点电荷位置
Q=input('输入对应的点电荷的电荷量(+-表示电性,输入行矩阵,如[1,1]表示上边电荷的电性为正,电荷量为1,注意行维度为电荷数):'); %输入确定点电性及电量
a1=input('电场线角度间隔(间隔越小则电场线越密):'); %输入想要的电场线角度间隔,间隔越小则电场线越密

%第一部分

q=1; %电量比
xmin=min(a(:,1))-4;
xmax=max(a(:,1))+4; %横坐标范围,此处+4是为了留有余量,也可以改变来改变显示框x方向长度
ymin=min(a(:,2))-4;
ymax=max(a(:,2))+4; %纵坐标范围,此处+4是为了留有余量,也可以改变来改变显示框y方向长度
zmin=min(a(:,3))-4;
zmax=max(a(:,3))+4; %z方向坐标范围,此处+4是为了留有余量,也可以改变来改变显示框z方向长度
z=linspace(zmin,zmax); %z方向坐标向量
x=linspace(xmin,xmax); %横坐标向量
y=linspace(ymin,ymax); %纵坐标向量
[X,Y,Z]=meshgrid(x,y,z); %设置坐标网点

%第二部分

G=size(a);
g=G(1,1); %确定要画的电荷的个数,方便后边画图
R={};
for i=(1:g)
R{1,i}=sqrt((X - a(i,1)).^2 + (Y-a(i,2)).^2 + (Z - a(i,3)).^2); %确定显示框内各点到各个点电荷的距离
end

%第三部分

U=zeros(size(X)); %初始化,初始电势全为0
for i=(1:g)
U=U+Q(1,i)*(1./R{1,i}); %
end

%第四部分

for i=(1:g)
if Q(1,i)>0
plot3(a(i,1),a(i,2),a(i,3),'+','MarkerSize',16); %画出所有的正点电荷,标记+
else
plot3(a(i,1),a(i,2),a(i,3),'o','MarkerSize',16); %画出所有的负点电荷,标记o
end
end

%第六部分

[Ex,Ey,Ez]=gradient(-U,x(2)-x(1),y(2)-y(1),z(2)-z(1)); %用电势梯度求场强的三个分量
r0=0.1; %电场线起点半径
b=(a1:a1:360-a1)*pi/180; %电荷电场线的始末发φ角度和步长

%第七部分

t=(a1:a1:360-a1)*pi/180; %电荷电场线的始末是θ角度和步长
L=max(size(t));
for j=(1:L)
for i=(1:g)
if Q(1,i)>0
factor=1;
else
factor=-1; %电荷对factor的影响,正电荷对应1,无和负电荷对应-1
end
x1{1,i}=r0*cos(b)*sin(t(1,j))+a(i,1); %任一个点电荷电场线的起点横坐标
y1{1,i}=r0*sin(b)*sin(t(1,j))+a(i,2); %任一个点电荷电场线的起点纵坐标
z1{1,i}=r0*sin(b)*cos(t(1,j))+a(i,3); %任一个点电荷电场线的起点z方向坐标
streamline(X,Y,Z,factor*Ex,factor*Ey,factor*Ez,x1{1,i},y1{1,i},z1{1,i}); %画任一个点电荷电场线
hold on; %保持图像
end
end

%第八部分

axis equal tight %使坐标刻度相等
title('三维空间内多极子的电场线','fontsize',16) %显示标题
xlabel('\itx/r (电势单位:kq/r=1) ','fontsize',12) %显示横坐标
ylabel('\ity/r','fontsize',12) %显示纵坐标
zlabel('\itz/r','fontsize',12) %显示z方向坐标
%第九部分

3.方法应用示例

方法的有效性及优越性:

有效性:可得出二维三维空间内的电场线分布情况,可得出二维平面内的电势分布情况。

优越性:相比参考的两种,该程序能实现二维空间内点电荷位置数量以及电性的任意选取,还能设置电场线和等势面的稠密。而且给出了三位空间内的电场线分布情况,同样实现点电荷位置数量以及电性的任意选取以及电场线稠密的设置。

3.1二维平面

1.”电偶极子”电力线和等位面计算机仿真:

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

2.三个电荷分布在正电荷(-1,0)、正电荷(1,0)、负电荷(0、1)位置处,其中正电荷电量为q,负电荷电量为2q

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

3.异种四电荷电势与电场线分布:四个电荷分布在正电荷(-1,-1)、正电荷(1,1)、负电荷(-1、1)负电荷(1、-1)位置处,其中正电荷电量为q,负电荷电量为q,

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

3.2三维空间

1.异种六电荷电场线分布:六个电荷分布在正电荷(0,0,50)、正电荷(50,0,0)、正电荷(0,50,0)负电荷(0,-50,0)负电荷(0,0,-50)负电荷(-50,0,0)位置处,其中正电荷电量为q,负电荷电量为q,

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

2.三电荷电场线分布:三个电荷分布在负电荷(0,0,0)带电量为q、正电荷(6,0,6)带电量为6q、正电荷(-6,0,6)带电量为6q

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

3.三电荷电场线分布:三个电荷分布在负电荷(0,0,0)带电量为q、正电荷(0,0,6)带电量为6q、正电荷(0,0,6)带电量为6q

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

4.结论

通过本次课程设计,我们对点电荷的电力线分布有了更深的理解,对其在三维空间中的分布有直观的感受。研究多点电荷系统电力线和等位面分布情况对于理解电磁场基本问题具有非常重要的意义。本文通过matlab编程,以清晰直观的方式展现多点电荷系统自身性质以及周围场的分布性质,对于电磁场问题的理解和掌握有非常大的帮助。

通过这次课程设计,体会到了自然的美。平面内用电荷的电力线可以构造出来对称性非常好的图形。在三维平面内更是明显地发现有多面对称性质的三维空间体,甚至能画出立体的心形线,收束的斜度可以用电荷量的比值来调整。

5.参考文献

1.多点电荷系统电力线和等位面计算机仿真

版权声明:本文为CSDN博主「隔壁李学长」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:多点电荷系统电力线和等位面计算机仿真_隔壁李学长的博客-CSDN博客

2.电磁场与波课设-关于多点电荷的电力线与等位面的matlab计算仿真

版权声明:本文为CSDN博主「团子天下第一QAQ」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

电磁场与波课设-关于多点电荷的电力线与等位面的matlab计算仿真_团子天下第一QAQ的博客-CSDN博客_用matlab画电场线和等位面

Original: https://blog.csdn.net/Lee2ysh/article/details/125132510
Author: 匡城客人
Title: 二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/645643/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球