再次奉献Matlab在基础物理学中的应用(三)(电磁学部分)
等量同号点电荷的电场线的绘制其微分方程的函数文件:
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 为半径的圆周上.、
运行的结果:
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29517383/viewspace-1376585/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29517383/viewspace-1376585/