电偶极子的MATLAB场模拟

电偶极子周围电场电势分布的MATLAB三维模拟

Matlab可以用于模拟四维场的效果,本文以电偶极子的电场和电势场为例展示MATLAB在该方面领域的应用。

摘要

电偶极子由一个正电荷和一个负电荷组成,其电场和空间电势分布与单电荷相比具有一些重要的特性。本文将给出电场和电势场的近似表达式。这两个量的精确表达式是复杂的,不太常用,因此 MATLAB 被采用来操作精确值和绘制三维分布的远区域, 近区域和一侧区域的电偶极子

关键词: 电偶极子 , 电势, 能量密度, 电场, MATLAB

引言

由正电荷和负电荷等于q组成的系统,距离为d,称为电偶极子。对于电偶极子,我们定义了一个新的矢量,称为电偶极矩。电偶极子矩矢量 p 的大小是电荷 q 的大小,乘以它们之间的距离 d,P=qd。 向量方向从负电荷指向正电荷。电偶极子的电场和电势可以通过两个电荷的叠加来计算。这种方法很容易想出来,但有时很难计算结果。因此,我们可以使用合理的近似法来简化计算公式。电偶极子矩将用作新公式中的一个变量。

电偶极子的电势场

物理模型

电偶极子的MATLAB场模拟_第1张图片
我们可以利用两个电荷的电势叠加来获取太空中的电势。图1是一个电偶极子,其中心位于z轴上,两个电荷之间的距离为d,从点P到q和-q的距离为r+和**r-。
单个电荷的电势公式:
在这里插入图片描述
则我们可以以此类推,空间中的电势的分布公式为:电偶极子的MATLAB场模拟_第2张图片
当电偶极子中心到目标点的距离
r
远大于距离d时(实际上电偶极子默认的一个的定义就是这个)
在这里插入图片描述
其中 r- = Δ \Delta Δr= r d c o s θ r d cos\theta rdcosθ, 1/(r+r-) 可以认为等于 1 / r 2 1/r^{2} 1/r2。因为 r >> Δ \Delta Δr 起。从这个公式中我们可以知道,电偶极子电位没有球形对称性,并且会以 1 / r 2 1/r^{2} 1/r2的速度下降,比单个电子的库仑定律计算出的电位快得多,后者的电位会以 1 / r 1/r 1/r的速度下降。

MATLAB 模拟

我们设置 +q 在 (1,0,0) 和 -q 在 (-1,0,0),选择 1000 点在空间中,并计算他们的电势,绘制该1000个点用不同的颜色, 当颜色的波长较长(偏红), 电位是正, 颜色的波长较短(偏蓝), 电位是负。
我们首先考虑空间中电势的 远区场,并将采样点的范围设置为 -4 到 4。

电偶极子的MATLAB场模拟_第3张图片
在此图中,我们可以粗略看到电偶极子的电势分布与仅单个电子的电势分布不同。

但是,因为 MATLAB 必须为每个值分配颜色,因此当采样点接近电荷中心时,该值将远远大于远离电荷中心的值。

为了解决这个问题我们可以采用手动消除较大值的方法(比较原始的办法,若大家有更好的办法欢迎分享)。

具体操作为选择靠近电荷一定范围的电设置他们的电势为一个相对较小的值。
电偶极子的MATLAB场模拟_第4张图片
我们最终得到如上效果图。

此时如果我们想更进一步看出电偶极子单侧电势分布与单个电子时的区别,我们就可以对单侧进一步模拟:
电偶极子的MATLAB场模拟_第5张图片电偶极子的MATLAB场模拟_第6张图片
效果非常明显。

MATLAB代码

x0=-4.5:0.15:4.5;
y0=-4.5:0.15:4.5;
z0=-4.5:0.15:4.5;%生成空间中226981个点
points1=zeros(61,61,61);
points2=zeros(3, 226981);%装入所有点的三个坐标的矩阵初始化
c=zeros(1, 226981);
q=1.6e-19;

pointA=[1 0 0]';
pointB=[-1 0 0]';%定义电荷位置
for  i=1:61
    for j=1:61
        for k=1:61%这里用了点技术手段,为了把三维坐标放入二维的矩阵里
          points2(:,k+61*(j-1)+ 3721*(i-1))=[x0(i),y0(j),z0(k)]';%点坐标矩阵       
        end
    end
end
k=9e10;
%以上代码可以用linspace加meshgrid的组合代替,具体方法此处便不累述了
for p=1: 226981
    c(p)=k*((1/(norm(points2(:,p)-pointA))-1/(norm(points2(:,p)-pointB))));%c矩阵用来储存每个点的电势值   
    if (norm(points2(:,p)-pointB)<1)%此处便是手动去掉过大或过小值的地方,1是调整半径
        c(p)=-6e10;
    end
   % if (norm(points2(:,p)-pointA)<1)%此处便是手动去掉过大或过小值的地方,1是调整半径
      %  c(p)=6e10;%要画单侧的时候去掉这个if,双侧的时候保留这一块if语句
    %end
   % if (c(p)>0)%这是画一边的电势分布时用的
%        c(p)=1e7;%就是把另一边儿的点值归为一个同号的值然后坐标设为原点
      %  points2(:,p)=[0 0 0]';%如果需要全局的,去掉该if便可
   % end
end
scatter3(points2(1,:),points2(2,:),points2(3,:),2,c,'.')%电势值的大小用scatter3函数中的颜色参数来表示,2是点的大小参数
colorbar

电偶极子的电场

物理模型

我们可以利用这两个电荷的电场的叠加来获得空间中的电场,但是这种方法需要矢量操作,如果我们想要获得电场的分析表达式,这种方法可能很复杂。为了避免这种情况,我们选择计算电势场的梯度,以获得空间中的电偶极子电场分布。
在这里插入图片描述
在这里插入图片描述
电偶极子的MATLAB场模拟_第7张图片
这里附上一段如何推导球坐标系下的偏导公式的过程(转载自 从本质出发理解掌握三大坐标系下的三大方程(一)——梯度公式)
电偶极子的MATLAB场模拟_第8张图片

MATLAB模拟

取1000点被收集于一个长度为6的正方体,这可以帮助我们得到远区场电场。电场图基于电势分布,因此与以前相似的电势图将用来显示更有效的结果。

电偶极子的MATLAB场模拟_第9张图片
我们可以用同样的方法求出近区场
电偶极子的MATLAB场模拟_第10张图片
单侧电场分布如下
电偶极子的MATLAB场模拟_第11张图片

MATLAB代码

%注意这个代码单独使用只能生成带箭头的图,与上一部分代码联合使用才能做出上面的图
x=linspace(-4, 0, 12);
y=linspace(-4, 4, 12);
z=linspace(-4, 4, 12);
[xx, yy, zz]=meshgrid(x, y,z);%此处便用了上面提到的linspace加meshgrid的组合
%xx,yy,zz均为10*10*10的三维数组,分别对应空间中1000个点的x y z坐标值
up=-9e10.*(1./sqrt((xx-1).^2+yy.^2+zz.^2)-1./sqrt((xx+1).^2+yy.^2+zz.^2));%up为每个点的电势值
[dx, dy,dz]=gradient(up,0.4,0.4,0.4);%用MATLAB内部的函数gradient计算每个散点的沿x,y,z方向的梯度值,0.4是计算间距
hold on;

dx=0.5*dx./sqrt(dx.^2+dy.^2+dz.^2);%将梯度向量等长度化
dy=0.5*dy./sqrt(dx.^2+dy.^2+dz.^2);
dz=0.5*dz./sqrt(dx.^2+dy.^2+dz.^2);


quiver3(xx,yy,zz,dx, dy,dz);%该处用到quiver3画箭头专用函数
plot3(1,0,0,'o','color','r','MarkerSize',5)

你可能感兴趣的:(MATLAB实验,MATLAB物理)