k=input('选择转换方式(1--摄氏转换为华氏,2--华氏转换为摄氏):')
if
k~=1
&
k~=2
disp('请指定转换方式')
break
end
tin=input('输入待转变的温度(允许输入数组):')
if
k==1
tout=tin*9/5+32
%
摄氏转换为华氏
k1=2
elseif
k==2
tout=(tin-32)*5/9
%
华氏转换为摄氏
k1=1
end
str=['
°C''
°F']
disp(['转换前的温度',
'
',
'转换后的温度'])
disp(['
',num2str(tin),str(k,:),
'
',
num2str(tout),str(k1,:)])再建立一个模拟系统,将摄氏温度转换为华氏温度(Tf
=
9/5Tc+32)。
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=10p2=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+bb2=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.edu.cn/course/physics/05/jcwlxshyjy.pdf
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)