一个用matlab解决物理问题的程序

一个用matlab解决物理问题的程序,第1张

给你一个解决物理温度问题的程序,就是摄氏温度和华氏温度的相互转换问题。绝对原创,当然程序并不复杂。我是学通信的,关于电子方面的程序我有很多,网上也有很多,怕你说我copy。就给个关于温度的吧。

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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11405272.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存