电磁场仿真——绘制电场线和等势线

本文详细介绍了如何使用MATLAB在三维空间中,针对三个点电荷组成的系统,进行电场线与等势面的计算与绘制。通过分析点电荷在特定位置的电势和电场强度,利用叠加原理,实现了电场线的精确描绘,展示了电场分布的可视化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

空间中有三个电荷量分别为+1C,-1C,+1C的点电荷,三个点电荷在边长为10mm的正三角形顶点处,绘制电场线的空间二维分布。

一:基本原理

在空间二维平面中建立二维坐标系,如图1所示在(5,0),(-5,0)和(0,5)处分别有1C的正电荷,1C的正电荷和-1C的负电荷。

(一)电势原理

根据空间中某一点距离点电荷的电势知道:

U=kqr

根据空间某点处电势的叠加原理,在场点P(x,y)处产生的电势U为:

 

其中,

知道了空间某一点P(x,y)处三个点电荷产生的电势的叠加值,我们就可以找出某一电势所对应的多个空间点,将这些点连接成线即可以得到等势线。

(二)电场原理

根据库仑定律知道,空间某一点相对某一位置的电荷的电场强度为 :

根据点电荷电场强度的叠加原理,在场点P(x,y)处产生的电场强度E为:

通过计算可以知道:

大小分别为1C,1C,-1C。

知道了空间某一点处的各分量的电场强度的大小,我们就推导出下一段电场线上的点的各分量电场强度大小。即满足 在模型中我们可以将各个电荷看成一定半径的球体,按照一定的间距将每一个球体表面圆周分成若干个点,这些点就是电场线的起始点。通过从各个起始点取一定间隔逐次推导出下一个坐标点的位置,知道满足一定的条件停止推导,将这些点连线即可得到电场线。

二:仿真数据设置

将x的范围设置成[-2.5,2.5]/cm。其中取样间隔为0.01cm,将y的范围同样设置成[-2.5,2.5]/cm,取样间隔同样为0.01。这样就形成了一个501*501的网格。我们取k介质为真空中,化简得到。在等势线绘制的时候我们把网格内的电势线分成了100份。我们设置各个电荷的半径0.05*2^(1/2)m,各个电荷表面有50个起始点。起始点到下一个推导电场点的距离间隔为0.001。最终电场线终止要满足的条件有:

1.下一个电场点靠近其他电荷。

2.下一个电场点的位置超出了网格点的边界。

三.结果分析及总结

最终仿真图像结果如下:

四:MATLAB代码运行

clear,number=3;        %设定空间电荷数,并用charge矩阵来保存各个电荷的电荷量和位置 
charge=[1,0.5,0;1,-0.5,0;-1,0,0.86]
k=9*10^9;%这里取介质为无限大真空,化简得到k=9*10^9
x=-2.5:0.01:2.5;
y=-2.5:0.01:2.5;
[X,Y]=meshgrid(x,y); %建立X_Y坐标系
U=zeros(501,501);
clf  %clf指令是清除之前的图像
for j=1:number
    U=U+k*charge(j,1)./sqrt((X-charge(j,2)).^2+(Y-charge(j,3)).^2);
end%得到电势的值 注意U与XY的对应关系是U[Y,X]
for a=1:number
for b=-10:10 %横坐标变化
for c=-10:10 %纵坐标变化
if abs(U(charge(a,3)*100+251+b,charge(a,2)*100+251+c))>abs(U(charge(a,3)*100+251+5,charge(a,2)*100+251+5))
U(charge(a,3)*100+251+b,charge(a,2)*100+251+c)=U(charge(a,3)*100+251+5,charge(a,2)*100+251+5);
end
end
end
end%由于在电荷处,电势理论上无穷大,所以通过设置阈值对其进行“削顶”
contour(X,Y,U,100)%画等势面
hold on
%下面是对电场线的绘制
total=sum(abs(charge(:,1)));%电荷模值求和
px=[];py=[];%存放电场线数据
for a=1:number%画由第a个电荷发出的电场线
    for b=1:round(abs(charge(a,1))/total*50*number)%电场线数目由归一化电荷决定 其中round函数是四舍五入的意思
        j=round(abs(charge(a,1))/total*50*number);i=1;%j是单个电荷表面电场线起始点的数目
        px(a,b,i)=charge(a,2)+0.05*2^(1/2)*cos(b*2*pi/j);
        py(a,b,i)=charge(a,3)+0.05*2^(1/2)*sin(b*2*pi/j);%分配电场线起点坐标 其中ab表示的是第a个电荷的第b个起始点的位置
        t=1;
        while t==1
            Ex=0;Ey=0;
            for c=1:number
                Rx=px(a,b,i)-charge(c,2);
                Ry=py(a,b,i)-charge(c,3);
                E=k*charge(c,1)./(Rx^2+Ry^2);
                Ex=Ex+E*Rx/sqrt((Rx^2+Ry^2));
                Ey=Ey+E*Ry/sqrt((Rx^2+Ry^2));%得到线端点电出场的X,Y方向上的大小
            end
            rx=0.001*Ex/sqrt(Ex^2+Ey^2);
            ry=0.001*Ey/sqrt(Ex^2+Ey^2);%得到下一步要连接的点跨度
            if charge(a,1)>0
            else
                rx=-rx;
                ry=-ry;
            end              %判断切线的方向
            px(a,b,i+1)=px(a,b,i)+rx;
            py(a,b,i+1)=py(a,b,i)+ry;
            i=i+1;
            for c=1:number
                if ((((px(a,b,i)+rx-charge(c,2))^2+(py(a,b,i)+ry-charge(c,3))^2)>0.005)&&(px(a,b,i)+rx<2.5)&&(py(a,b,i)+ry<2.5)&&(px(a,b,i)+rx>-2.5)&&(py(a,b,i)+ry>-2.5))
                    %上面这一行是判断下一个连接点即没有出坐标范围也没连接到另一个电荷
                else 
                    t=0;
                end
            end
        end
    end
end%我们终于得到所有电场线的信息了
hold on
for a=1:number
    for b=1:round(abs(charge(a,1))/total*50*number)
        t=1;
        hold on
        pxp=squeeze(px(a,b,:));
        pyp=squeeze(py(a,b,:));
        pxp(find(pxp==0))=[];
        pyp(find(pyp==0))=[];
       for c=1:number
        if ((((pxp(end)-charge(c,2))^2+(pyp(end)-charge(c,3))^2)<=0.01)&&charge(a,1)<0)
            t=0;
        else
            hold on
        end
        end
        if t==1
        plot(pxp,pyp)
        end
    end
end%一根根的画出来
xlabel('X'),ylabel('Y'),title('电场线等势面绘制图'),text(1.8,2.3,'电荷量单位 C')
text(2.1,-2.35,'坐标单位cm')
text(1.9,-2.6,date)
for a=1:number
    text(charge(a,2)-0.04,charge(a,3),num2str(charge(a,1)*1))
end

参考资源链接:[MATLAB助力电磁场可视化:实例演示与编程仿真](https://wenku.csdn.net/doc/m6qdwpq757?utm_source=wenku_answer2doc_content) MATLAB是进行电磁场可视化编程仿真的理想工具,特别是在绘制电场线等势线方面,它能够帮助我们直观地理解电磁场的概念。为了更深入地理解如何使用MATLAB进行电磁场的可视化,建议您查阅《MATLAB助力电磁场可视化:实例演示与编程仿真》一书,书中通过实例详细介绍了相关技术过程。 首先,需要理解电场线等势线的概念:电场线表示电场的方向,而等势线表示电势相同的点连成的线。使用MATLAB绘制它们,需要先确定电场的计算方法,例如对于单点电荷,电场线可以通过库仑定律计算得到,而等势线则可以通过解泊松方程获得。 接下来,我们可以在MATLAB中编写脚本代码。以单点电荷为例,首先定义空间范围电荷值,然后利用库仑定律计算每个点的电场强度。通过将极坐标下的电场强度转换为笛卡尔坐标系,使用MATLAB的绘图函数如quiver或contour来分别绘制电场线等势线。 在编写代码时,我们需要考虑到电场线的起始点、方向以及密度,以及等势线的数值间隔等参数。通过调整这些参数,可以得到不同效果的电场线等势线的可视化图形。最后,通过MATLAB的图形用户界面(GUI)功能,可以交互式地展示电磁场的分布,例如使用按钮切换电场线等势线的显示。 掌握了MATLAB电磁场可视化的基本方法后,读者可以进一步研究电磁波的传播、波导问题,甚至是电磁干扰问题。这不仅加深了对电磁理论的理解,也为实际电磁问题的求解提供了有力的工具。更多关于如何将理论知识与MATLAB编程实践相结合的详细内容,请参阅《MATLAB助力电磁场可视化:实例演示与编程仿真》,书中除了单点电荷的电场线等势线绘制,还包括了更多复杂情况的仿真案例,是一份深入研究电磁场可视化的宝贵资料。 参考资源链接:[MATLAB助力电磁场可视化:实例演示与编程仿真](https://wenku.csdn.net/doc/m6qdwpq757?utm_source=wenku_answer2doc_content)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值