MATLAB论文 1245326 张金锭.docx

上传人:b****8 文档编号:9818956 上传时间:2023-02-06 格式:DOCX 页数:21 大小:270.05KB
下载 相关 举报
MATLAB论文 1245326 张金锭.docx_第1页
第1页 / 共21页
MATLAB论文 1245326 张金锭.docx_第2页
第2页 / 共21页
MATLAB论文 1245326 张金锭.docx_第3页
第3页 / 共21页
MATLAB论文 1245326 张金锭.docx_第4页
第4页 / 共21页
MATLAB论文 1245326 张金锭.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

MATLAB论文 1245326 张金锭.docx

《MATLAB论文 1245326 张金锭.docx》由会员分享,可在线阅读,更多相关《MATLAB论文 1245326 张金锭.docx(21页珍藏版)》请在冰豆网上搜索。

MATLAB论文 1245326 张金锭.docx

MATLAB论文1245326张金锭

《MATLAB语言》课程论文

 

Matlab在基础物理学中的应用

 

姓名:

张金锭

学号:

12010245326

专业:

电子信息工程

班级:

2010级

指导老师:

汤全武

学院:

物理电气信息学院

完成日期:

2011年12月10日

MATLAB在基础物理学中的应用

(姓名:

张金锭学号120102453262010级)

[摘要]基于MATLAB强大的绘图和仿真功能,对基础物理学中的力学中机械波的相干叠加与驻波的形成,光学中的双缝干涉、光栅光强分布,电磁学中的等量同号点电荷的电场线的绘制和带电粒子在均匀电磁场中的运动等问题进行仿真,来简便、直观、高效分析物理问题。

[关键字]MATLAB语言基础物理学仿真图形绘制

一、问题的提出

基础物理学是理工科大学生的一门基础课,其内容描述了自然界的现象与规律,让学生在理解物理规律的基础上去解释现实生活中的一些物理现象,Matlab是美国Mathworks公司于80年代推出的大型数学软件,通过多年的升级换代,现在已发展成为集数值计算、符号计算、可视化功能以及诸多的工具箱为一体的大型科学计算软件,它在美国等西方发达国家已广泛应用于科研院所、工程技术等各个部门,并成为大学生、研究生必备的工具软件,应用MATLAB强大的数学功能通过实例的建模、编程和仿真过程,来简便、直观、高效分析物理问题。

二、在力学中应用举例

(一)驻波形成—火柴杆图

本例用Matlab来研究机械波的相干叠加与驻波的形成。

考察分别沿x轴正向和负向传播的两列相干横波,它们的方程为:

(1)

(2)

设时间从t=0开始到t=10结束,考察区间为[0,4],令k=π,则λ=2π/k=2,在考察区间上恰好能观察到两个完整波形。

令v=1,A1=-0.4,A2=0.4,则方程为:

(3)

(4)

现在就可以编程演示机械波的叠加和驻波的形成了。

程序如下:

>>%横波驻波的形成

t=0:

0.1:

10;x=0:

1/15:

4;%时间数组和位置坐标数组

fori=1:

100%设置循环

%由右向左传播的行波

x1=x(x>=(4-t(i)));%挑出坐标位置大于4-t(i)的质元,将其位置坐标赋给新的变量x1

y11=0.4*sin(pi*(x1+t(i)));%这些位置上的质元在t(i)时刻的位移,赋给变量y11

x2=x(x<(4-t(i)));%挑出坐标位置小于4-t(i)的质元,将其位置坐标赋给新的变量x2

y12=x2-x2;%这些位置上的质元在t(i)时刻的位移,赋给变量y12

y1=[y12y11];%将所有质元的位移组合到同一个列矢量y1中

%由左向右传播的行波

x3=x(x<=t(i));

y21=-0.4*sin(pi*(x3-t(i)));

x4=x(x>t(i));

y22=x4-x4;

y2=[y21y22];

y3=y1+y2;%质元同时参加两个振动,实现了行波的合成

y=[y1;y2;y3];%将t(i)时刻向左、向右以及合成的波的质

%元位移存放在矢量y中,以便作图

%分区作图

forj=1:

3

subplot(3,1,j)%分区作图

stem(x,y(j,:

),'b:

.');%火柴杆图

axis([0,4,-1,1]);%指定坐标轴范围

gridon%开启网格线

end

pause(0);%暂停的技巧,否则屏幕由于刷新

%过快而导致不显示任何图象

end

>>

运行结果如图1所示。

图1某时刻行波及驻波的波形

程序在10s内每隔0.1s取一个时刻,在考察区间上每隔1/15取一个质元。

在t<4s之前,波前还未走过整个区间,只有部分质元参与了振动,其余质元仍处于静止状态,位移为0,因此需要根据当前时刻t(i)找出已经运动和尚未运动的质元,分别对其位移y11、y12赋值。

注意y12=x2-x2和y12=0两种赋值是不等效的,前者是长度与x2相同的矢量,后者只是一个数值(标量)。

为了有明显的对比,程序采用了分区作图,分别绘制了当前时刻的两列行波波形以及叠加的波形,这里用到了subplot命令,格式为subplot(m,n,p),将图形窗口划分m行n列共m×n个子绘图区,p是当前使用绘图区的序号。

绘制波形图用了stem语句,格式为stem(x,y,’colorstylemarker’),与plot语句的格式用法相类似。

整个程序放在一个大的循环结构中,循环变量是时间t,每一次循环对应一个时刻,绘出当前时刻的波形;当进入下一次循环时屏幕自动刷新,绘制下一时刻的波形,由此实现了动画效果。

图1是绘出的某时刻的波形图。

(二)受迫振动—相图

受迫振动的运动微分方程为:

(5)

其中β是阻尼系数,ω0是振动系统的固有频率,ω是策动力的圆频率,f是策动力的幅值。

令y

(1)=x,y

(2)=dx/dt,则运动微分方程化为

(6)

(7)

改变ω值,可研究共振现象。

令f=0,则为阻尼振动。

用Matlab解此微分方程,研究位移与时间的关系,以及位移与速率的关系。

编写微分方程函数文件保存为

spzdfun.m.

functionydot=spzdfun(t,y,flag,b,w0,f0,w)%b,w0,f0是由主程序传递来的参量

ydot=[y

(2);-2*b*y

(2)-y

(1)*w0^2+f0*cos(w*t)];

再编写主程序spzd.m,程序如下所示:

>>b=0.1;w0=2.68;f0=0;w=6;%为β、ω0、f、ω赋值

[t,y]=ode45('spzdfun',...%解微分方程

[0:

0.1:

40],[1,0],[],b,w0,f0,w);%初始条件x0=1,v0=0

plot(t,y(:

1),'b')%绘出位移-时间曲线

figure

(2);%新开绘图窗口

plot(y(:

1),y(:

2),'b');%绘制位移-速度相图

>>

运行结果如图2和3所示。

图2x−t图

图3x−v相图

相平面法是一种直观的几何方法,它适用于系统的一维运动。

以位置x=X、速度

为坐标建立坐标系,通常也称此坐标平面为相平面。

相平面中的一个取值点代表系统该时刻的运动状态,称为相点。

相点连续变化形成的轨道,则描述了系统运动状态的发展变化过程,称为相轨道,这种图形也称相图。

OXY

利用相图对非线性系统的行为进行研究是一种重要的方法。

三、在光学中的应用举例

(一)理想情况下的双缝干涉

理想情况下的双缝干涉(不考虑单缝衍射的调制作用)如图4所示。

图4双缝干涉

满足相干条件的光波叠加后,对于观察屏上某一确定点,即r1、r2确定后,叠加后的光强为

(8)

(9)

(10)

式中λ为光波的波长,E0为常量。

我们用Matlab编写程序,在z=z0=D平面内(即屏上)观察相干光叠加后光强的分布。

用国际制单位,令E0=1,λ=6e-9,z0=1,双缝位置为[-0.0001,0]和[0.0001,0],编写程序如下:

(sf.m)

>>%双缝干涉——由光程差计算光强

x=-0.01:

0.00003:

0.01;

y=-0.01:

0.0003:

0.01;%设置屏上观察范围为1×1cm2

z0=1;lamta=600e-9;%设置观察屏与光源的距离及光波长

a=2*pi/lamta;%参数2π/λ

[X,Y]=meshgrid(x,y);%建立数据网格

R1=sqrt((X+0.0001).^2+z0^2);%光源1到观察点的距离

R2=sqrt((X-0.0001).^2+z0^2);%光源2到观察点的距离

I1=1./R1;%光源1在观察点的光强

I2=1./R2;%光源2在观察点的光强

I=I1+I2+2.*sqrt(I1.*I2).*cos(a.*(R2-R1));%叠加后光强

figure;%开辟图形窗口

holdon

colormap(gray);%选取颜色控制

view(0,90);%在x-y平面观察

mesh(X,Y,I);%画出光强在观察屏上的分布

>>

运行结果如图5所示。

图5理想双缝干涉的模拟图样

(二)光栅

光栅衍射的公式为:

(11)

其中

,x为观察屏上点坐标,D为观察屏到光栅的垂直距离,a为光栅各缝的宽度,d为光栅常数,d=a+b,b是相邻狭缝的间距;N是光栅上狭缝的数目;λ是光波波长;I0为常量。

令:

(12)

(13)

(14)

光栅衍射公式可化为;

(15)

采取国际单位制,并赋给公式中的各个物理量合理的数值,仿照双缝干涉的示例。

,编写Matlab程序如下:

(gs.m)

>>a=0.01e-3;b=0.04e-3;d=a+b;D=1;N=8;%为光栅各个参数赋值

lamda=600e-9;%光的波长

x=-0.2:

0.0003:

0.2;y=-1:

0.03:

1;%屏上观察平面的大小

[X,Y]=meshgrid(x,y);%组成数据网格

sinsita=X./(D^2+X.^2).^0.5;%计算sin(θ)

arfa=pi*a*sinsita./lamda;%计算α

beita=pi*d*sinsita./lamda;%计算β

I=(sin(arfa).^2./(arfa.^2)).*(sin(N.*beita).^2./(sin(beita).^2));%相对光强分布

figure;%开辟图形窗口

plot(x,I);%画光强与观察点位置关系图

figure;view(0,90);%新开图形窗口并在xy平面内观察

holdon

colormap(gray);%选择灰度色图

mesh(X,Y,I);%绘制衍射图样

>>

运行结果如图6和图7所示。

图6光强与位置的关系

图7光栅衍射的模拟图样

四、在电磁学中的应用举例

(一)等量同号点电荷的电场线的绘制

首先建立电场线的微分方程(二维情况)。

因为电场中任一点的电场方向都沿该点电场线的切线方向,所以满足:

(16)

引入参变量t得到:

(17)

设二点电荷位于(-2,0)和(2,0),二点电荷“电量”为q1和q2(均等于10),由库伦定律和电场的叠加原理,得出下列微分方程:

(18)

(19)

解此方程就可以绘制出电场线。

下面是写微分方程的函数文件:

functionydot=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

holdon%图形控制,不可擦除模式

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=[b1b2];c0=[cc];%初始条件,所有电场线的起点

%的横、纵坐标构成了矢量b0和c0

fori=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=[b1b2],c0=[cc]是合并矢量,将两个源点处的初始条件组成的矢量放在一起处理。

最后所得结果如图8图所示。

图8等量同号点电荷的电场线

(二)带电粒子在均匀电磁场中的运动

设带电粒子质量为m,带电量为,电场强度E沿方向,磁感应强度B沿qyz方向。

则带电粒子在均匀电磁场中的运动微分方程为:

(20)

(21)

(22)

则上面微分方程可化作:

(23)

(24)

(25)

(26)

(28)

(29)

选择E和B为参量,就可以分别研究E≠0,B=0和E=0,B≠0等情况。

下面编写微分方程函数文件ddlzfun.m:

functionydot=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磅

gridon%开启坐标网格线

xlabel('x');ylabel('y');zlabel('z');%为坐标轴命名

>>

运行结果如图9所示。

图9现有参数运行结果

研究时可以采用不同的初始条件和不同的参量观察不同的现象。

例如令E=0,B=2,程序修改如下:

>>q=1.6e-2;m=0.02;%为粒子的带电量和质量赋值

B=2;E=0;%为电磁场的磁感强度和电场强度赋值

[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磅

gridon%开启坐标网格线

xlabel('x');ylabel('y');zlabel('z');%为坐标轴命名

所得结果如图10所示。

图10修改参数运行结果

五、结论

从以上用Matlab处理基础物理学中的问题的实例可以看出,该方法处理基础物理学的问题过程简单,且结果更直观。

在基础物理学中的实验教学中用Matlab处理数据,既能使学生快速计算和判断实验结果,又可加强学生对这一基本工具软件的学习。

用Matlab语言处理基础物理学中的问题,简单方便,非常实用。

采用拟合曲线比人工画图准确性高。

在处理物理实验数据时,可根据具体情况选择所需的函数。

用计算机处理物理实验数据,不仅加深了同学们对物理实验的理解,而且锻炼了使用计算机的能力,对提高学生的计算机水平有较大帮助。

上面的例子,只是应用了MATLAB的计算、绘图和动画功能,MATLAB还有许多功能有待在实验教学中开发利用,以进一步丰富实验学习和教学的方法和手段,不断提高实验水平。

我们认为,在力学、光学、电磁学等基础物理实验学习和教学中,MATLAB的应用可以有三种方式。

一、以MATLAB为问题求解工具,引导学生运用MATLAB进行数据处理、系统仿真等工作。

由于有了优秀的工具软件,就可以集中精力研究物理问题,选取最恰当的数学模型、方法,以更高的效率,得出更合理的结果,同时培养学生应用计算机解决科学问题的能力。

二、以MATLAB为实验演示平台,本文实例中基于MATLAB的单缝衍射和光栅等光学现象模拟,运用于计算机支持课堂教学中,作为演示实验配合光学理论的讲授,很好地解决了真实实验因环境限制而不能进入课堂的难题。

三、以MATLAB为素材创作软件MATLAB便捷的图形功能,不仅可以将计算结果或外部文件数据以二维、三维图形呈现,而且提供了方便的图形导出功能,其图形可以1jpg、1tif等多种格式导出,作为CAI课件的素材,就是以MATLAB创作的图形为素材开发的光学实验CAI课件,在学生的实验预习中收到了好的效果。

MATLAB除了有强大的绘图功能外,还可以用来求解非线性方程、求解常微分方程、求导、求积分等数学运算.基础物理学中的数学问题大部分可以借助MATLAB来解决,这要求学生对MATLAB软件比较熟悉。

六、课程体会

经过一学期紧张而有序的课程学习,在忙碌之余也得到了颇多的收获。

我深深体会到MATLAB语言相对于同类程序语言更方便更简洁易懂。

Matlab,是一种功能强、效率高、便于进行科学和工程计算的交互式软件包。

由于使用Matlab编程运算与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言那样难于掌握。

实践证明,学习者可在短短几个小时的学习和使用中就能初步掌握Matlab的基础知识,从而使学习者能够进行高效率和富有创造性的计算。

Matlab对于学习者的编程语言基础要求不高,库函数和编程语句丰富多样且简单易学,在数据可视化上也有独特的优势。

学习者不需要投入太多的时间在学习编程语言知识上,可以直接利用软件提供的丰富的函数,编写较简单的程序即可解决许多普通物理学的问题,还可以解决数学,绘图,仿真等问题。

[参考文献]

[1]刘卫国.MATLAB程序设计与应用(第二版)[M].北京:

高等教育出版社,2006.

[2]马文蔚.物理学(上、中、下册)(第四版)[M],北京:

高等教育出版社,1999.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1