APP下载

Matlab在大学物理教学中的辅助应用*

2022-02-10夏丽莉赵静翔马余全

物理通报 2022年1期
关键词:大学物理数值解析

夏丽莉 赵静翔 马余全

(北京信息科技大学理学院 北京 100192)

大学物理是理工科专业的一门必修基础课,通常在大学一年级的下学期开始学习.课程几乎涵盖了物理学中的所有主要研究领域,具体内容涉及到力学、热学、振动、波动和光学、电磁学、相对论和量子物理学[1]. 教学重点在于培养学生的实践能力和持续的创新能力,使学生获得严谨的学术研究习惯.

大学物理课程研究内容丰富,研究范围广泛[2,3],一般来说,大学物理的学习有如下两个特点:

(1)研究对象的运动状态变化通常更加一般化(变力沿曲线做功、刚体转动对应的各种能量计算等等);

(2)注重探究系统的本质,要求学生能够定性或定量分析产生某种物理现象的原因.

相比于高中物理中特殊情况下的处理方法,大学物理中出现了比较抽象的概念,而且大部分章节的学习要求熟练掌握高等数学的微积分和矢量的知识.所以,相对于理工科其他专业课程的学习,大学物理的学习需要学生具有更强的逻辑分析能力和空间思维能力.学生创新能力培养也要基于这两方面能力的提升.在大学物理的教学过程中,如何培养学生的逻辑分析能力和空间思维能力是我们教学过程中的主要任务.大部分学生认为物理模型的演化过程不直观,同时解析求解常微分(偏微分)方程也让大家望而生畏,这也是大学物理的学习过程中学生面临的两方面困难.

一直以来,科学计算模拟是科学研究的一种重要的手段[4~6].将计算机的优势广泛应用到大学物理的教学中,这是很多教师正在施行或即将实施的教学手段.同时,基于培养创新型人才的目标,大部分理工科院校的大学生需要具备能够利用计算机语言编写简单的程序代码实现专业知识学习的能力.鉴于此,本文将Matlab辅助教学方式应用到大学物理的教学中.通过两个具体例子阐述如何将Matlab的图像和符号计算的优势应用到大学物理的学习过程中,从而解决学生面临的困难,在一定程度上实现培养创新型人才的目标.

1 引入Matlab的必要性和可行性

Matlab的融入使大学物理的教学具有以下特点:

(1)Matlab中编程语言简单易学,而且有很多已经编好的程序块,可以直接调用,能求解方程的解析解,对于没有解析解的问题,通过给定初值或边界条件,同样能得到数值解.有利于学生理解基本物理概念,同时能够直接应用到实际问题中,理论联系实际,更准确地理解基本概念.

(2)对于不同的知识点,我们都能找到相应的应用模型,根据物理模型的特点和数学知识,能够建立系统的状态方程,然后运用数学知识解出解析解.然而,解析解的数学形式准确但不够直观,如果引入Matlab辅助工具数值模拟系统的状态,可以动态地给出研究对象的发展趋势和各阶段的特征.

用Matlab数值模拟系统的状态和动态变化对理解物理规律和运用物理知识具有直接的促进作用[7].一方面,直观的图片和动画信息能够使学生的注意力集中,让晦涩难懂的直接讲述变为有意思的直观感受,增强学生的学习积极性.另一方面,对于很多非线性且没有解析解的物理模型,我们仍然可以通过辅助工具完成求解数值解,并能够预测系统的发展趋势,这对于扩展学生的知识面和直观理解更复杂的物理问题具有积极的作用.

2 Matlab 软件在大学物理教学中的应用实例

这里我们分为两部分说明Matlab符号计算和数值模拟在物理教学中的应用.对于符号计算,大学物理中一般用于求解常微分或部分偏微分方程(组)的解析解.在讲解机械振动部分内容时,我们引入线性简谐振子的模型,其数学建模是非线性常微分方程,当摆角足够小时可以简化为线性模型,此线性微分方程有解析解,我们利用Matlab符号计算能够快速得到其解析解.对于数值模拟,我们用非线性谐振子的例子,非线性谐振子的数学模型没有解析解,文中通过数值模拟同样能够给出此模型的特征和演化趋势.

2.1 Matlab符号计算

相比于中学物理,大学物理中很多的物理过程需要在微积分和求解微分方程的基础上给出分析过程.大学物理的第一部分力学涉及到很多变速曲线运动,大学一年级第一学期,学生已经学习完高等数学的微积分求解,因此,大部分的高校都将大学物理课程的教学安排在大学一年级的第二学期开设.但是,微积分还没有具体应用于空间曲线和曲面,对于刚体部分涉及到面积分和体积分的求解,相对复杂.特别到了振动部分,需要学生求解二阶微分方程(线性或非线性),传统手算只能解决简单问题,相对复杂的如非线性高阶微分方程很难求解,而借助机器求解能够帮助学生从繁重的数学计算中解脱出来[8].

Matlab作为一种计算工具,具有强大的符号计算能力.内部嵌有多种函数,大学物理中常用的主要有:创建变量函数(sym 函数)、求微分函数(diff)、求积分函数(int)、解代数方程(组)函数(solve)、解常微分方程函数(dsolve)等等[5,9].我们以机械振动的谐振子模型为例探讨Matlab在学习理论过程中起到的作用.对于一维线性谐振子,通过牛顿第二定律建立简谐振子动力学方程,方程的形式是二阶常微分方程,对于最简单的一维线性谐振子,假设振子的质量是m,弹簧的劲度系数为κ,其动力学方程可表示为

(1)

式(1)中x是任意时刻质点相对于平衡位置的位移.这类方程的解的形式是

x=Acos(ωt+φ)

(2)

y=dsolve(f1, f2, … , fm) %默认的自变量为t

y=dsolve(f1, f2, … , fm,‘x’) %指明自变量为x

其中,字符串型变量fi既可以描述微分方程,又可以代表初始条件或边界条件.如果我们给定无量纲化方程中弹簧振子的质量和劲度系数的大小分别为1,可以通过直接引用dsolve()函数:

≫ y=dsolve('D2x+x=0')

求得方程的通解:

y =C2*cos(t) + C3*sin(t)

如果给定初始条件x(0)=1,v(0)=0,通过直接引用dsolve()函数:

≫ y=dsolve('D2x+x=0','x(0)=1','Dx(0)=0','t')

可以得到方程的特解:

y =cos(t)

这里我们直接应用Matlab给出谐振子模型的通解和特解,求解过程逻辑清晰且效率高.在讲述机械振动物理模型时,如果我们利用机器符号计算,可以很快得到方程的解,这样计算过程消耗的时间几乎可以忽略,谐振动方程的由来非常清晰:由牛顿第二定律给出系统的动力学方程,通过求解动力学方程,得到系统的运动学方程.当然这个例子相对简单,如果物理模型复杂,理论推导的过程中出现复杂的符号运算,学生不能顺利得到计算结果,势必会对结论的推导过程产生疑问,从而影响学生理解物理规律及其深层次的物理意义.

2.2 Matlab数值模拟

在机械振动的分析过程中,通常要分析质点相对于平衡点的位移随时间的变化趋势,如果基于符号计算得到方程的解,在此基础上可以直接画出解曲线:

≫ t =0:.01:100;

x = cos(t);

plot(t,x)

对于线性谐振子式(1),可以直接从系统的微分方程出发,通过Matlab符号计算的结果给出解曲线,但是如果是非线性谐振子,没有解析解,那么我们也可以通过数值模拟得到系统的解曲线.

非线性谐振子的动力学方程可表示为

(3)

这里我们采用适用于一般的微分方程的数值解法,即如果系统的方程不能用一阶显式微分方程组给出,以下的代码同样适用.具体代码如下:

clear all

t=[0:0.1:500];

x0=[1 0];

[t,xx]=ode23('xiezhenzi_ode',t,x0);

format long

plot(t,xx(:,1));

xlabel('time'),title('x')

function dy=xiezhenzi_ode(t,y)

a=0.1

dy=zeros(2,1);

dy(1)=y(2);

dy(2)=-a*sin(y(1));

图1给出了非线性谐振子的轨迹曲线,这里的function函数文件是一个独立的文件,是Matlab中用于解微分方程的功能函数,主函数可以调用这类函数,类似的功能函数还有很多,我们可以根据需要调用,方便快捷.在讲述非线性谐振子时,我们通过数值模拟系统的轨迹,可以很直观地解释非线性谐振子的运动趋势,并能够分析位移、速度、加速度和时间的关系,而且可以在不同初始条件探索振子的运动规律,体现初始条件对系统整体运动形态的影响.对于类似的新理论,我们都可以简单地引入Matlab数值模拟,学生通过观察图像易于接受给定的结论,为探究未知领域提供基础,有利于培养学生的创新思维.

图1 非线性谐振子的轨迹

3 结论

本文采用Matlab简单数值计算融入物理教学的方式,从模拟经典力学的简单物理模型入手,应用到波动和光学的学习中,最后形成一系列的典型模型的数值模拟小程序.让学生从直观图片和动画中理解概念,探究物理现象的本质.一定程度上避免了繁琐的符号计算和数学推导,增加了学生学习物理的兴趣和自信心.同时,紧紧围绕我校培养高素质创新型人才的目标,通过对Matlab的学习,学生可以自己模拟简单物理模型,并培养分析数据和总结结果的能力,使学生掌握了一种编写程序代码的技能,这也是科学研究必备的学术素质.

猜你喜欢

大学物理数值解析
应用型高校大学物理实验教学改革研究
体积占比不同的组合式石蜡相变传热数值模拟
数值大小比较“招招鲜”
三角函数解析式中ω的几种求法
舰船测风传感器安装位置数值仿真
铝合金加筋板焊接温度场和残余应力数值模拟
睡梦解析仪
复合场中类抛体运动解析
关于《大学物理》中一道习题的讨论
MATLAB在大学物理课程中的应用实践教学研究