本文参考了两位学长的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画电场线和等位面

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

  1. 二维树状数组 ----2021广东省赛 ----- K - Kera‘s line segment[区间转二维平面+树状数组维护前缀最小最大值]

    题目链接 题目大意: 就是一个一维的数轴上面有一堆线段用一个三元组(l,r,val)(l,r,val)(l,r,val)表示. 现在我们有两个操作: 就是往数轴上面添加线段 询问[L,R][L,R][ ...

  2. 二维平面内无人机的路径规划——势场法-改进

    通过这一算法可以实现二维平面内无人机的路径规划.在该平面内存在已知的障碍,势场法通过给终点添加引力,对障碍增加斥力,使得无人机能够顺利的避障并到达终点.通过对传统势场法的改进,避免了无人机容易陷入极值 ...

  3. 编程题:二维平面整数点集求最大值

    题目描述: P为给定的二维平面整数点集.定义 P 中某点x,如果x满足 P 中任意点都不在 x 的右上方区域内(横纵坐标都大于x),则称其为"最大的".求出所有"最大的& ...

  4. Fall with Trees 二维平面直角坐标系-凸包-推公式

    题意 : 二维平面直角坐标系中,给出根节点和左右子节点的坐标,按照规范画k层满二叉树并求凸包面积 思路 : 将每一层的梯形转化为三角形. 将pow换成qmi反而会inf,每一组样例中只需要一次所以可以 ...

  5. 轮廓线重建:二维平行轮廓线重建理论和方法

    1.前言 MarchingCube方法重建三维物体表面的过程是依据像素灰度值的比较来确定等值点,从而得到组成等值面的三角片.由于表征器官组织密度的灰度值是一个在空间分布上不连续的数据,所以仅靠一个灰度 ...

  6. ITK:使用均方执行二维平移配准

    ITK:使用均方执行二维平移配准 内容提要 输出结果 C++实现代码 内容提要 本示例说明了Insight中图像注册框架的用法.应该将其读为ITK注册.该示例应作为对解决图像配准问题时通常涉及的元素的 ...

  7. Java黑皮书课后题第10章:*10.15(几何:边框)边框是指包围一个二维平面上点集的最小矩形,编写一个方法,为二维平面上一系列点返回一个边框

    *10.15编写一个方法,为二维平面上一系列点返回一个边框 题目 程序 代码 Test15.java Test13_MyRectangle2D.java 运行结果 题目 点击这里跳转编程练习题10.1 ...

  8. 【飞控理论】【惯性导航基础】二维平面的旋转如何用代数表示?三维平面的旋转如何用代数表示?什么是四元数?四元数、欧拉角、方向余弦之间有什么关系?

    上一篇欧拉角 由于欧拉角在描述三维空间物体旋转问题时存在万向节死锁问题(详情戳这里),所以引入四元数概念. 目录 1.二维平面的旋转 2.三维平面的旋转(什么是四元数) 3.<捷联惯性导航> ...

  9. 关于线段树or 树状树状 在二维平面搞事情!Orz

    第一式:https://ac.nowcoder.com/acm/contest/143/I 题意: 有 n 个点,一个点集 S 是好的,当且仅当对于他的每个子集 T,存在一个右边无限长的矩形,使得这个 ...

最新文章

  1. 中科院、百度研究院等联合提出UGAN,生成图片难以溯源
  2. R语言ggplot2可视化分面图(facet_wrap)、使用size参数自定义设置分面图标签栏(灰色标签栏)中的标签文本的字体大小
  3. 资深算法专家解读CTR预估业务中的深度学习模型
  4. Python分布式爬虫-elasticsearch搭建搜索引擎
  5. CSS揭秘之《背景图案》
  6. 西门子获首都机场18亿大单
  7. crontab 半小时_?用猫粮诱惑,7名消防员花半小时救出困在夹墙间的喵星人
  8. asp.net上传文件时提示,不支持给定路径的格式解决方法
  9. 雷军定AI+IoT为小米核心战略,牵手宜家推进生态布局
  10. 【java笔记】System类
  11. 物联网卡11位和13位号码的区别在于哪
  12. Unity中 创建射线的两种方法
  13. MySQL 5.7安装(多实例)最佳实践
  14. 拓端tecdat|R语言用Hessian-free 、Nelder-Mead优化方法对数据进行参数估计
  15. [网络通信协议]websocket
  16. linux select 与 阻塞( blocking ) 及非阻塞 (non blocking)实现io多路复用的示例
  17. excel按拼音顺序排序_如何在Excel中按字母顺序排序工作表选项卡
  18. 苏州大学 算法与数据结构
  19. 如何用公式编辑器编辑直角三角形符号
  20. 如何用Web Scraper抓取巨潮资讯网全站乐视相关pdf文件

热门文章

  1. 雅点ps证件之星插件扩展面板完美破解版
  2. 专升本管理学知识点总结——决策理论
  3. 如何简单理解贝叶斯决策理论(Bayes Decision Theory)
  4. 【代码练习4】利用多线程处理和尚吃馒头问题
  5. 科技节编程大赛三等奖作品——李白杨
  6. 三阶矩阵的lu分解详细步骤_计算方法(三)矩阵分解2-LU分解
  7. [转] 明年,你还爱我吗?
  8. sfc /scannow扫描修复系统文件命令怎么用_马立杰_新浪博客
  9. 疫情严峻,为什么VR全景能逆生长?
  10. Python基础复习--print()函数、转义符、变量命名