1. 引言
大学物理是理工科专业的一门基础课程,一般设置在大一、大二年级,是一门非常重要的基础理论课程。教学内容主要包括力学、热学、电磁学和光学四个部分,力学部分主要涉及质点运动、牛顿定律、功能关系、刚体力学和振动波动等内容,热学部分主要涉及气体分子动理论、热力学定律等内容,电磁学部分主要涉及静电场、稳恒磁场、电磁感应定律等内容、光学部分主要涉及光的衍射、干涉、偏振等内容。通过本课程的学习,学生可以掌握物理学的基本理论和定律,了解物理学研究的基本方法,同时体会从发现问题、分析假设、建立模型、实验或者理论验证,最后得出问题结论的科学探究过程,提高科学素养。
传统的教学方式主要是围绕书本内容,教师对公式定理进行推导和讲授,学生再运用所学知识完成课堂练习和课后作业。这一过程中,学生能够学习各项基础知识,同时了解各项公式定理的研究过程与推导过程,学会运用所学知识求解部分题目。此种方式具有某些优点,一方面可以保障教学进度的顺利进行,另一方面也可以通过讲练结合的方式,加深学生对知识的理解和记忆。但显然也有一些不足之处,例如教师在制定教学进度和教学设计时,需考虑全班学生的整体平均水平,很难完全有区分度地进行针对性教学,对于部分拔尖学生缺乏更多深入教学。同时由于某些章节的内容较为复杂抽象,课堂教学时间有一定限制,部分学生对于重要公式概念理解不深入、不细致,导致无法灵活运用。有些问题涉及比较复杂的微积分问题,部分学生数学基础不牢靠,导致最终无法正确求解问题,无法全面掌握知识点。针对现行大学物理课程教学中的一些困难,本文将MATLAB程序引入大学物理习题教学,不仅能帮助学生深度理解和掌握各类物理模型和经典题型,激发学习热情和探索精神,也能帮助学生提升计算和分析问题的能力,提高实践能力。
2. MATLAB软件的功能特性
MATLAB是美国MathWorks公司出品的数学软件,是一个以矩阵为数据单元的高级编程语言,适用范围十分广泛,目前已广泛运用于金融、通信、数据、自动化控制等领域,受到青睐。相比于其他传统的计算机语言,MALTAB具有很多一些独特的优势。首先,作为一门交互式程序语言,其用户界面简洁易用,程序语言的设计非常接近常规的数学语言,入门难度较低,学习壁垒较低。同时MATLAB还具有多样的功能,除数值计算和符号计算功能外,还有强大的绘图功能、以及多样的功能型工具箱和领域型工具箱,可以满足不同学科的需要。
基于MATLAB强大的功能性,为适应高等教育改革需要,将MATLAB程序引入大学物理课程教育具有一定意义,目前已有一些实践案例。例如将MATLAB运用于实验数据的分析处理,利用非线性拟合的方法处理测量数据,可以更加方便准确地获得实验结果[1]。将MATLAB运用于某个具体的物理模型和物理规律可视化,利用强大的绘图功能将抽象的物理公式转换成直观的图像,更加具体直观地展示问题的本质[2]。将MATLAB运用于拔尖学生的培养,通过数值计算和图像相结合的方式,探索困难问题的求解方案[3]。还有案例使用MATLAB GUI进行交互程序设计以及使用动画功能进行动态演示[4] [5]。本文主要借助MATLAB的科学计算和图形绘制功能,探索大学物理习题的程序解法和教学思路。
3. MATLAB程序在习题教学中的应用实例
3.1. 微分(求导)问题
微分运算是数学中十分常见的一类问题,对于简单函数的求导往往有明确的公式可以代入,计算难度不高,但是对于复合函数求导以及向量函数求导的问题,学生往往存在计算上的困难,容易混淆遗漏。在大学物理的经典习题中,微分运算也非常普遍,例如力学中求解质点运动的瞬时速度和瞬时加速度、电磁学中求解感应电动势的问题等等。本例以一个经典的运动学题目,阐述如何使用MATLAB函数求解微分问题。
例1:已知质点的运动方程为
,试求
时质点运动的瞬时速度和瞬时加速度。
根据题意,写出MATLAB程序如下:
clear
syms t i j
x=2*t;
y=2-t^2;
vx=diff(x,t,1);
vy=diff(y,t,1);
v=subs(vx,t,2)*i+subs(vy,t,2)*j;
ax=diff(x,t,2)
ay=diff(y,t,2)
a=subs(ax,t,2)*i+subs(ay,t,2)*j;
disp(v)
disp(a)
点击运行按钮即可输出题目结果。本例主要运用diff函数进行微分运算,使用syms函数定义符号,并对符号表达式进行求导,此方法可获得精确的结果,但对于复杂函数需要较多计算时间。此外,也可运用diff和gradient函数进行数值求导,通过函数在一些点附近的变化率来近似计算导数,或者运用diffusehess和以上两种函数进行有限差分法求导。后两种方法都是近似解法,计算速度较快,但参数选取有一定技巧。
3.2. 积分问题
积分运算是求导运算的逆运算,在大学物理的经典习题计算中也有很多应用。例如求解连续分布带电体在周围空间某一点产生的场强和电势的问题,求解变力做功的问题,求解高斯定理和环路定理的相关问题等等。积分运算相比于微分运算难度更高些,需要一定技巧,运算过程也相对繁琐,学生在求解时存在一些困难。但借助MATLAB程序求解积分问题,可以节省计算时间,轻易求出答案。以下以变力做功问题为例,阐述MATLAB程序求解积分问题的方法。
例2:一物体受力为
,在力的作用沿x轴正方向运动,速度为
,力的单位为N,时间单位为s。求
至
时间段内力对物体所做的功。
根据题意,写出MATLAB程序如下:
clear
fun=@(t)-2*t.^4-8*t.^3-4*t+16;
W=integral(fun,2,5)
点击运行按钮即可输出题目结果。本例主要运用integral函数进行积分运算,是一种数值计算一维和多维积分的方法,类似还有quad和quadgk等函数,可以求解一维积分。同时,还可使用int和syms函数,运用符号的方法求解积分。也可使用dsolve函数直接求解微分方程并获得积分解。
3.3. 求解微分方程
微分方程的定义是含有未知函数及其导数的方程,包括可分离变量的微分方程、齐次微分方程、伯努利微分方程、全微分方程等各种形式,部分特殊形式方程可借助公式求解,有些则无法直接计算。这类数学问题内容比较繁杂,求解难度相对较高,传统算法工作量较大。运用程序法求解微分方程,可以简化计算、较快求解出相应答案。以下以牛顿第二定律的问题为例,介绍MATLAB求解微分方程的一种方法。
例3:质量为m的小球在水中受到的浮力为
,当它从静止开始沉降时,受到水的黏滞阻力为
,式中k为与水的黏性、小球半径有关的常数。求小球在水中竖直沉降的速度。
根据题意,写出MATLAB程序如下:
clear
y=dsolve('m*g-F-k*v-m*Dv=0','v(0)=0');
y=simplify(y)
点击运行按钮即可输出题目结果。本题使用dsolve函数求解微分方程,此函数功能强大,可用于求解各类常微分方程和偏微分方程的解析解,只需输入微分方程表达式、初始条件或边界条件,即可返回题目所需的特解。此外,MATLAB还提供了一系列其他函数,用于求解一些特殊类型微分方程的数值解,例如适用于求解大多数非刚性常微分方程的ode45函数、适用于求解一些较为简单问题的ode23函数等等。根据问题不同,可以灵活选择适当的方法。
3.4. 矩阵法解线性方程组
求解方程组在数学和物理学中都是最基础最常见的问题,适用于求解题目中包含多个未知数的情况。常见的求解方法有代入法和加减消元法,这些方法都需要一定的运算量,对于复杂问题有时也并不能求出精确解。运用MATLAB程序可以在一定程度上解决此类问题,大大提高计算效率和结果精度。以下以刚体的定轴转动问题为例,介绍一种求解线性方程组的技巧。
例4:一半径为r,质量为m1的匀质圆盘作为定滑轮,绕有轻绳,绳上挂一质量为m2的重物。当滑轮转动时,求重物下落的加速度。
根据题意,写出MATLAB程序如下:
clear
syms m1 m2 r g
J=1/2*m1*r^2;
G2=m2*g;
A=[1 m2 0;r 0 -J;0 1 -r];
b=[G2;0;0;];
x=A\b
点击运行按钮即可输出题目结果。此方法用于求解线性方程组十分便捷,只需表示出系数矩阵、常数矩阵和解集矩阵的数学形式,再利用矩阵乘法运算法则计算出结果即可。如方程组为非线性方程组,内部甚至包含超越方程,则需要使用其他方案去求解,例如二分法、迭代法、牛顿法、割线法、拟牛顿法、Halley法等等。牛顿法是其中比较常用的一种方法,通过输入一个猜想值,不断尝试迭代,直到获得符合题意的解,其收敛性依赖于初始值的选取。
3.5. 图像绘制
图像法在数学和物理学领域中的应用范围非常广阔,其优点为直观形象、简洁明了、可以把复杂的文字和数字描述化难为易、化繁为简,将抽象的概念关系具体化,便于找寻规律,获取结论,也有助于从图像的变化趋势进行合理预测。在大学物理经典习题中,例如运动学中的x-t、v-t、a-t关系,电磁学中的E-t、B-t关系,热学中的p-V、p-T关系、光学中干涉和衍射条纹位置与光强的关系等图像,都直观展示了相应的物理关系和物理现象。以下以一个均匀带电圆盘的问题为例,展示如何运用MATLAB程序绘制二维图像。
例5:有一半径为R,面电荷密度为σ的均匀带电薄圆盘,设x为圆盘中心轴线上任意一点到圆盘圆心O的距离。求圆盘中心轴线上的场强和电势随着距离x的变化关系。
此题目可通过图像法直接观察场强和电势的变化趋势,为了方便绘图,需要先求解出E-x和U-x关系函数。根据题目中的已知条件,可分别计算出两个函数关系如下:
为简洁直观得出场强和电势函数的曲线走势,选择用MATLAB绘制二维图像。以
的圆盘为例,简化取常数
,利用以上两式的函数绘制趋势图像,写出MATLAB程序如下:
clear
R=1;
x1=(-6:0.001:0)*R;
E1=-1-x1./sqrt(R^2+x1.^2);
U1=sqrt(R^2+x1.^2)+x1.^1;
x2=(0:0.001:6)*R;
E2=1-x2./sqrt(R^2+x2.^2);
U2=sqrt(R^2+x2.^2)-x2.^1;
x3=0; E3=0;
x=[x1 x3 x2]; E=[E1 E3 E2];
subplot(2,1,1)
plot(x,E,'b','Linewidth',2)
grid on
ss=12;
set(gca,'Linewidth',1.0)
xticks(-6:1:6);
xlabel('x/m','Fontsize',9);ylabel('E/(V/m)','Fontsize',9);
set(gca,'FontName','Times New Roman','Fontsize',9)
hold on;
plot(0,1,'o','Markersize',8,'MarkerEdgeColor','k');
plot(0,-1,'o','Markersize',8,'MarkerEdgeColor','k');
plot(0,0,'.','Markersize',15,'MarkerEdgeColor','k');
xx=[x1 x2]; U=[U1 U2];
subplot(2,1,2)
plot(xx,U,'r','Linewidth',2)
grid on
set(gca,'Linewidth',1.0)
xticks(-6:1:6); yticks([0 0.25 0.5 0.75 1]);
xlabel('x/m','Fontsize',9);ylabel('U/V','Fontsize',9);
set(gca,'FontName','Times New Roman','Fontsize',9)
点击运行按钮即可输出图1,由图1可知,圆盘左右两侧距离相同的位置场强方向相反,大小相同。圆盘圆心处的场强为零,此外,距离圆盘越远,场强越小,当距离趋向无穷远时,场强大小趋于零。圆盘左右两侧的电势分布也是对称的,圆盘圆心处的电势最高,距离圆盘越远,电势越低,直至趋向于零。
Figure 1. Field strength and potential distribution on the axis of a uniformly charged disk
图1. 均匀带电圆盘轴线上的场强和电势分布图
本题使用plot函数进行图像绘制,其功能强大,包含多种可调参数,例如线条颜色、线条宽度、标题标签、图例、坐标轴范围等等,可将其运用于各类二维图像绘制。
除二维图外,有的问题用三维图表示更加直观,如运用mesh函数创建三维网格图,运用surf函数绘制各类三维曲面图,如等高线图、切片图等等,需根据问题性质灵活绘制。以下以一个带电体电势问题为例,展示MATLAB程序绘制三维图像的一种方法:
例6:已知一带电体周围空间的电势分布函数如下;
此函数是复合函数,计算比较复杂,一般方法不易直接描绘电势的变化规律,此时可使用mesh函数绘制三维网格图像,简化处理过程,MATLAB程序如下:
clear
[x,y]=meshgrid(-8:0.5:8,-8:0.5:8);
z=1./((x-3).^2+y.^2).^0.5+1./((x+3).^2+y.^2).^0.5;
mesh(x,y,z);
xlabel('X');ylabel('Y');zlabel('U/V')
点击运行按钮即可输出图2,通过三维图像可以直观轻易地理解电势函数的分布规律,大大简化分析和计算的过程。
Figure 2. Three-dimensional potential distribution
图2. 三维电势分布图
4. 教学反思
将MATLAB程序运用于大学物理课程教学,还需注意一些重要因素,避免生搬硬套、事倍功半。其一必须要注重实例积累,收集和研究经典例题的程序解法,对每种类型题目进行对比归纳,在备课时将其有机融入课程讲授;其二需要坚持因材施教,对于不同专业、不同基础水平的同学设计针对性的教学内容,基础较差的同学重在理解基本概念和基本公式,基础好的拔尖学生可以尝试探索更高难度、更高水平的问题,鼓励参与竞赛和科研活动,根据学生学习情况反馈设计难度;其三是不断改进完善教学方法,研究和开发更加前沿的程序技术,探索更先进的人才培养模式。
5. 总结
本文采用MATLAB程序求解各类常见的物理习题运算,借助程序强大的科学计算能力帮助求解复杂的数学算式,同时利用图像可视化功能直观呈现抽象的物理模型和函数关系。将MATLAB程序运用于大学物理习题教学,可以帮助学生深入理解学科要点,培养和锻炼逻辑思维,提高科学建模、理论联系实际以及分析和解决问题的能力,为日后的专业学习夯实基础。