谁能帮我写2个matlab画图程序,物理的,像点电荷的电场线什么的,随便2个就行,急
发布网友
发布时间:2022-04-23 12:30
我来回答
共1个回答
热心网友
时间:2023-10-13 10:51
1. 等量异号点电荷电场中电势分布
[x,y]=meshgrid(-2:0.1:2,-2:0.1:2);
%以0.1为步长建立平面数据网格
z=1./sqrt((x-1).^2+y.^2+0.01)... %写出电势表达式
-1./sqrt((x+1).^2+y.^2+0.01);
[px,py]=gradient(z);
%求电势在x,y方向的梯度即电场强度
contour(x,y,z,[-12,-8,-5,-3,-1,... %画出等势线
-0.5,-0.1,0.1,0.5,1,3,5,8,12])
hold on %作图控制
quiver(x,y,px,py,'k') %画出各点上电场的大小和方向
2. 等量同号点电荷的电场线的绘制
下面是写微分方程的函数文件:
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
编写好函数文件后,命名为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条电场线
参考于《Matlab 在基础物理学中的应用》
http://bnucourse.bnu.e.cn/course/physics/05/jcwlxshyjy.pdf