Matlab 在电磁场中的应用
摘要
Matlab是美国Mathworks公司于80年代推出的大型数学软件,通过多年的升级换代,现在已发展成为集数值计算、符号计算、可视化功能以及诸多的工具箱为一体的大型科学计算软件,它已广泛应用于科研院所、工程技术等各个部门,并成为大学生、研究生必备的工具软件。
电磁学是物理学的一个分支,是研究电场和电磁的相互作用现象。电磁学从原来互相独立的两门科学(电学、磁学)发展成为物理学中一个完整的分支学科,主要是基于电流的磁效应和变化的磁场的电效应的发现。这两个实验现象,加上麦克斯韦关于变化电场产生磁场的假设,奠定了电磁学的整个理论体系,发展了对现代文明起重大影响的电工和电子技术。
针对电磁场学习理论性强、概念抽象等特点,利用Matlab强大的数值计算和图形技术,通过具体实例进行仿真,绘制相应的图形,使其形象化,便于对其的理解和掌握。将Matlab引入电磁学中,利用其可视化功能对电磁学实验现象进行计算机模拟,可以提高学习效率于学习积极性,使学习效果明显。
本文通过Matlab软件工具,对点电荷电场、线电荷产生的电位、平面上N个电荷之间的库仑引力、仿真电荷在变化磁场中的运动等问题分别给出了直观形象的的仿真图,形实现了可视化学习,丰富了学习内容,提高了对电磁场理论知识的兴趣。
关键词: Matlab 电磁学 仿真 计算机模拟
(一)等量同号点电荷的电场线的绘制
首先建立电场线的微分方程(二维情况). 因为电场中任一点的电场方向都沿该点电场线的切线方向,所以满足:
引入参变量t得到:
设二点电荷位于(-2,0)和(2,0),二点电荷“电量”为q1和q2(均等于10), 由库伦定律和电场的叠加原理,得出下列微分方程:
解此方程就可以绘制出电场线. 下面是写微分方程的函数文件: function ydot=dcx1fun(t,y,flag,p1,p2)
%p1,p2是参量,表示电量 ydot=[p1*(y(1)+2)/(sqrt((y(1)+2).^2+y(2).^2).^3)+... p2*(y(1)-2)/(sqrt((y(1)-2).^2+y(2).^2).^3); %dx/dt=Ex p1*y(2)/(sqrt((y(1)+2).^2+y(2).^2).^3)+... p2*y(2)/(sqrt((y(1)-2).^2+y(2).^2).^3)]; %dy/dt=Ey
这里的y是微分方程的解矢量,它包含两个分量,y(1)表示x,y(2)表示y,解出y后就得到了x与y的关系,即可依此绘制出电场线.
编写好函数文件后,命名为dcx1fun.m存在当前路径下,然后开始编写解微分方程的主程序dcx1.m:
p1=10; p2=10; %点电荷所带电量
axis([-5,5,-5,5]); %设定坐标轴范围 -5≤x≤5,-5≤y≤5
hold on %图形控制,不可擦除模式 plot(2,0,'*r'); plot(-2,0,'*r') %绘制两源电荷 a=(pi/24):pi/12:(2*pi-pi/24);
%圆周上电场线起点所对应的角度 b=0.1*cos(a);c=0.1*sin(a);
%电场线起点所对应的相对坐标
b1=-2+b;b2=2+b; %把起点圆周的圆心放置在源电荷处 b0=[b1 b2]; c0=[c c]; %初始条件,所有电场线的起点 %的横、纵坐标构成了矢量b0和c0 for i=1:48 %循环求解48次微分方程 [t,y]=ode45('dcx1fun',[0:0.05:40],[b0(i),c0(i)],[ ],p1,p2);
%调用ode45求解,对应一个初条件(起点),求解出一条电场线
plot(y(:,1),y(:,2),'b') %绘制出此条电场线
end %结束循环,共绘制出48条电场线
在确定初始条件时,因为源点处是奇点,这点上微分方程的分母为0,所以电场线不能从源点处绘制,而应当从它附近的邻域圆上绘制. 我们将电场线的起点定在以源点为圆心,0.1为半径的圆周上.
在程序中就是通过从圆周上取了24个不同的角度(从π/24到2π-π/24,每隔π/12取一个角度),然后算出每个角度上的起点的横、纵坐标值;[b1,c]和[b2,c]分别是以两个源点电荷为圆心,0.1为半径的邻域圆周上的起点位置. b0=[b1 b2],c0=[c c]是合并矢量,将两个源点处的初始条件组成的矢量放在一起处理. 最后所得结果如图1左图所示,将左端源电荷附近放大可以看到这些电场线的起点都在源电荷的邻域圆上,如图1右图所示. 从这个圆周上发出的电场线共24条,另一端也是相同的情况.
图1 等量同号点电荷的电场线
(二)带电粒子在均匀电磁场中的运动
设带电粒子质量为m,带电量为,电场强度E沿方向,磁感应强度B沿qyz方向. 则带电粒
子在均匀电磁场中的运动微分方程为
令
,
,则上面微分方程可化作:
选择E和B为参量,就可以分别研究0≠E,0=B和,等情况. 下面编写微分方程函数文件 ddlzfun.m: 0=E0≠B
function ydot=ddlzfun(t,y,flag,q,m,B,E) %q,m,B,E为参量 ydot=[ y(2); q*B*y(4)/m; y(4);
q*E/m-q*B*y(2)/m; y(6); 0];
再编写解微分方程的主程序ddlz.m:
q=1.6e-2; m=0.02; %为粒子的带电量和质量赋值
B=2; E=1; %为电磁场的磁感强度和电场强度赋值 [t,y]=ode23('ddlzfun',[0:0.1:20],...
[0,0.01,0,6,0,0.01],[ ],q,m,B,E);
%用 ode23解微分方程组,时间设为20s %指定初始条件,传递相关参数 plot3(y(:,1),y(:,3),y(:,5),'linewidth',2);
%绘出三维空间内粒子运动的轨迹,线宽2磅 grid on %开启坐标网格线 xlabel('x'); ylabel('y'); zlabel('z'); %为坐标轴命名
运行结果如图2所示. 研究时可以采用不同的初始条件和不同的参量观察不同的现象. 例如令E=0,B=2,所得结果如图3所示.
图2 现有参数运行结果 图3 修改参数运行结果
(三)利用matlab软件仿真电荷在变化磁场中的运动
程序一
%电荷在非均匀磁场中的运动
v=10;sita=pi/6; %设定带电粒子的初速度及入射角 v=v*cos(sita);
u=v*sin(sita); %计算x,y方向的初速度 w=0;
[t,y] = ode23('yy',[0:0.002:2],[0,v,0,u,0,w]); %求解名为“yy”的微分方程组 figure %描绘运动轨迹 plot(t,y(:,1)); %绘制一般二维曲线 %comet(t,y(:,1)); %绘制二维动态曲线 xlabel('t');ylabel('x'); figure plot(t,y(:,3)); %comet(t,y(:,3)); xlabel('t');ylabel('y'); figure plot(t,y(:,5));
%comet(t,y(:,5)); xlabel('t');ylabel('z'); figure
plot(y(:,3),y(:,5)); %comet(y(:,3),y(:,5)); xlabel('y');ylabel('z'); figure
plot3(y(:,1),y(:,3),y(:,5)) %绘制一般三维曲线图 %comet3(y(:,1),y(:,3),y(:,5)) %绘制三维动态轨迹 xlabel('x');ylabe('y');zlabel('z');
%电荷在非均匀磁场中运动的微分方程 function f=yy(t,y);
global A; %定义全局变量 A=100; %设定qB0/m f=[y(2);0;y(4);A*y(6)*y(1);y(6);-A*y(4)*y(1)]; %写入微分方程
图(4-1)电荷在x轴上运动轨迹
图(4-2)电荷在y轴上的运动轨迹
图(4-3)电荷在z轴上的运动轨迹
图(4-4)电荷在yz平面上的运动轨迹
图(4-5)电荷在三维空间中的运动轨
结论
通过以上学习可以看下出,利用Matlab强大的计算与图像功能模拟各类物理场的实验是成功的。用Matlab可以解决除上述问题以外,还可以解决两根载流长直导线的磁场问题,大地中的电流问题,自由空间电磁波传播过程问题以及电磁场中梯度、散度、旋度问题等诸多问题。该方法不仅为学习大学物理中电磁场等课程提供了良好的辅助手段,同时在科研当中为相关电磁场问题的设计分析开辟了另一条途径。因此,将Matlab工具引入计算机模拟是可行和有必要的,而且具有良好的应用前景。
因篇幅问题不能全部显示,请点此查看更多更全内容