如何在MATLAB的2d图上绘制等电位电场线。最好是使用箭筒还是等高线?以下是一些例子:
p1 = (1,1),具有1库仑电荷。
p2 = (2,2)具有2库仑电荷。
p3 = (3,3),具有3库仑电荷。
所有我在网上发现的与超级位置有关的信息只有2分的场景,即使这样,我也不太理解绘制这些值背后的原理。
以前从来没有真正学过物理,所以这个练习使我盲目。谢谢你的帮助!
发布于 2015-10-21 00:01:54
这个问题的定义含糊不清。电场线(如标题中所引用的)与等电位线不相同。具体来说,电场E后面跟着电场线与电位场V有关,E=−∇V。
在电势的情况下,这是一个标量场,所以等势线只是等值线的等值线。因此,contourf是一个理想的选择来可视化这一点。
至于场线,quiver会告诉你电场中矢量的大小和方向,而不是场线。在二维平面上显示这些信息的最简单的方法是streamslice。
在MATLAB中计算和绘制这些场只是将物理方程以矢量化的形式建立起来,并将它们计算成一个坐标网格,通过这个网格MATLAB可以绘制等高线和场线。
使用上述评论中rwong的链接所使用的电势公式:

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找到它们之间面积相等的等高线级别来快速改进:
hContour.LevelList = [0 quantile(V(:),10)];从现有势场导出电场比从原始矢量方程导出电场要简单得多:
[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');
https://softwareengineering.stackexchange.com/questions/281952
复制相似问题