首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制二维平面上的电场线

绘制二维平面上的电场线
EN

Software Engineering用户
提问于 2015-05-04 23:04:23
回答 1查看 13.8K关注 0票数 3

如何在MATLAB的2d图上绘制等电位电场线。最好是使用箭筒还是等高线?以下是一些例子:

p1 = (1,1),具有1库仑电荷。

p2 = (2,2)具有2库仑电荷。

p3 = (3,3),具有3库仑电荷。

所有我在网上发现的与超级位置有关的信息只有2分的场景,即使这样,我也不太理解绘制这些值背后的原理。

以前从来没有真正学过物理,所以这个练习使我盲目。谢谢你的帮助!

EN

回答 1

Software Engineering用户

发布于 2015-10-21 00:01:54

这个问题的定义含糊不清。电场线(如标题中所引用的)与等电位线不相同。具体来说,电场E后面跟着电场线与电位场V有关,E=−∇V。

在电势的情况下,这是一个标量场,所以等势线只是等值线的等值线。因此,contourf是一个理想的选择来可视化这一点。

至于场线,quiver会告诉你电场中矢量的大小和方向,而不是场线。在二维平面上显示这些信息的最简单的方法是streamslice

在MATLAB中计算和绘制这些场只是将物理方程以矢量化的形式建立起来,并将它们计算成一个坐标网格,通过这个网格MATLAB可以绘制等高线和场线。

使用上述评论中rwong的链接所使用的电势公式:

代码语言:javascript
复制
k = 8.987E9; % Coulomb's constant
p = [1,1; 2,2; 3,3];
Q = [1; 2; 3];
[X,Y] = meshgrid(0:0.05:4); % Create a grid of coordinates where V is to be calculated

V = zeros(size(X)); % Start with zero electric potential
for ii = 1:numel(Q) % Superpose the electric potential field of each charge
    V = V + k * Q(ii) ./ hypot(p(ii,1)-X, p(ii,2)-Y);
end

hContour = contourf(X,Y,V);
hColorbar = colorbar;
ylabel(hColorbar,'Electric potential (V)')

默认的等高线间距将非常紧密地封装在点电荷周围,这是由于它们所产生的电势的奇点。如果您有“统计工具箱”,您可以通过使用quantile找到它们之间面积相等的等高线级别来快速改进:

代码语言:javascript
复制
hContour.LevelList = [0 quantile(V(:),10)];

从现有势场导出电场比从原始矢量方程导出电场要简单得多:

代码语言:javascript
复制
[Ex,Ey] = -gradient(V);
validColumns = all(isfinite(Ex) & isfinite(Ey)); % Ignore columns where E contains infinite values due to the point charges since streamslice can't handle them
hold on
hLines = streamslice(X(:,validColumns),Y(:,validColumns),Ex(:,validColumns),Ey(:,validColumns));
set(hLines,'Color','r');
票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/281952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档