1. 引言
高等数学是一门基础课程,也是培养学生敏锐意识、思维逻辑能力、概括抽象能力的重要课程。换言之,数学科学要培养学生敏锐的头脑,使其善于从纷乱复杂的自然现象中提取规律,并用科学的语言表达出来,利用严谨的思辨和科学的研究模式去探索世界的奥秘 [1] 。学生对数学知识的掌握和抽象逻辑思维能力的训练为后续课程的学习打下基础 [2] 。MATLAB是一个综合的具有强大的矩阵计算以及仿真能力,他以其良好的开放性和运行的可靠性,在数值计算方面独占鳌头。其计算功能强大,绘图非常方便,同时拥有功能强大的工具箱。
利用MATLAB软件的优势,将其引入传统教学方法的目的主要包括:第一,提升学生的数学概念理解,MATLAB软件可以通过可视化和实际操作帮助学生更加直观地理解高等数学中的抽象概念和性质。第二,培养数学建模能力,MATLAB提供了强大的数值计算和符号计算功能,使学生能够将数学理论应用于实际问题的建模和求解中,培养他们的数学建模能力。第三,强化计算和问题求解能力,MATLAB具有高效的计算工具和算法库,学生可以通过编程和调用现有函数解决数学问题,提高他们的计算和问题求解能力,提高教学质量 [3] 。综上所述,MATLAB软件在高等数学教学中的应用具有重要的目的和意义。它能够提升学生对数学概念的理解,培养他们的数学建模和计算能力,并以其强大的计算能力、可视化工具、丰富的工具箱和灵活的编程环境等优势,为高等数学教学提供了有力支持,促进学生的学习效果和应用前景。
2. MATLAB教学方式的基本特征
2.1. 实践导向
MATLAB教学注重学生的实际操作和实践能力培养。通过编写和运行实际的MATLAB程序,学生可以深入理解MATLAB语言的特点和功能,并将其应用于解决实际问题。通过MATLAB教学,可以增强师生互动和学生之间的合作。教师通过讲解、演示和互动讨论引导学生,同时鼓励学生之间进行合作和交流,共同解决问题和分享经验。其间,MATLAB可以为教学提供多样化的学习资源,包括教材、在线文档、示例程序等。学生可以根据自己的学习风格和需求选择合适的资源进行学习和练习。
2.2. 培养问题解决能力
通过MATLAB教学,学生不仅可以学习MATLAB语言的基本概念和语法,还可以学习如何将其应用于解决实际问题,从而提高他们的问题解决能力。通过实际的编程练习和应用案例,学生可以学会分析和解决实际问题,培养独立思考和创新能力,提高数据处理和分析能力,利用MATLAB进行数据处理、可视化和分析,提高数据处理和分析能力。
3. 将MATLAB应用于高等数学的教学策略
MATLAB教学法任务情境的创设是为了提供学生一个具体的应用背景,让他们能够将MATLAB的知识和技能应用于实际问题的解决中。以下是一些常见的具体情境及应用策略。
3.1. 数据分析与统计
高等数学中的概率与统计部分可以借助MATLAB进行数据分析和统计。教师可以提供真实的数据集,让学生使用MATLAB进行数据处理、可视化和统计分析,从中得出结论并与数学理论进行对比。引导学生掌握MATLAB的数据处理和分析函数,帮助他们理解数据背后的含义,以及如何有效地呈现和解读数据。
3.2. 求解数学问题
MATLAB的符号计算工具箱可以用来求解高等数学中的方程、积分、微分等问题。教师可以演示如何使用符号计算工具箱来代数化简、求解方程组、计算定积分和微分等。通过MATLAB的求解过程,学生可以更清晰地理解数学推导和计算的步骤。除了符号计算,MATLAB还提供了丰富的数值计算工具和算法,用于求解高等数学中的数值问题。教师可以示范使用数值方法,如牛顿法、梯度下降法等,来求解非线性方程、优化问题等。这样可以让学生了解数学问题的数值求解方法和近似解的计算过程。
3.3. 模拟和建模任务
使用MATLAB进行数学建模,可以帮助学生将数学知识应用于实际问题的建立。例如,建立微分方程模型、线性规划模型等。教师通过演示建模的步骤和方法,让学生理解如何从实际问题中提取关键信息,并将其转化为数学模型。此外,MATLAB提供了仿真和数值实验的功能,可以让学生通过MATLAB编写代码,模拟和分析数学模型的行为和性质。学生可以通过改变模型参数、初值等进行仿真实验,观察模型的变化和输出结果,进一步理解数学模型的行为。
4. 应用案例
图形是MATLAB的主要特色之一,其图形命令具有自然、简洁及灵活等特点。通过MATLAB进行图形绘制,可以帮助学生认识函数的极值、单调性等性质,更加直观地理解函数,加深认识。本节展示MATLAB在数据可视化方面的应用案例,从二维到三维,由浅入深,层层递进。
4.1. 三维图形绘制
在数学的实际应用中,常常遇到三维甚至更多维的数据,需要在图形中表示出来,MATLAB平台提供了祥颖的三维图的绘制功能。这些绘图功能与二维图形的绘制十分类似,包括曲线的属性,例如颜色、线型以及坐标轴的设计等等,这些使完全相同的。最常用的三维图形有三位曲线图、三维网格图和三维曲面图这三种基本类型,祥颖的指令分别为plot3、mesh和surf。
使用surf命令进行曲面图绘制,其是一种平滑着色的三维曲面图。下图1展示了曲面图的绘制结果。
在MATLAB命令窗口输入:
4.2. 数据分析
本节展示了MATLAB在数据分析方面的应用,多项式作为线性方程组的表现形式,在数据的分析运算及应用中都具有非常重要的意义。本节叙述了从多项式创建到多项式运算等过程,为进一步的数据处理作了基础。
1) 多项式的表达式和创建
MATLAB中使用一维向量来表示多项式,将多项式的系数按照降幂次序存放在向量中,多项式的具体表示方法如下:
的系数的构成向量为[a0, a1, ∙∙∙, an−1, an]。
例如,多项式
就可以用[2 3 5 0 1]来表示。
在MATLAB命令窗口输入:
2) 多项式的导数
(一) MATLAB为多项式求导提供了函数polyder。例如多项式的求导:
在MATLAB命令窗口输入:
4.3. 经典智能算法
人工智能学科诞生于20世纪50年代中期,当时由于计算机的产生与发展,人们开始了真正意义上的人工智能的研究,其在自动推理、认知建模、机器学习、神经元网络、自然语言处理、专家系统、智能机器人等方面的理论和应用上都取得了成果。本节用一个案例展示了MATLAB中智能算法的实现。
1) 粒子群算法的MATLAB实现
粒子群算法(Particle Swarm Optimization, PSO)是一种基于群体智能的优化算法,常用于解决复杂的优化问题。在MATLAB中,可以通过以下步骤实现粒子群算法:
➢ 初始化粒子群:设定粒子群的大小、粒子位置和速度的范围,随机生成初始位置和速度。
➢ 计算适应度:根据问题的具体定义,计算每个粒子的适应度值。
➢ 更新个体最优解:对于每个粒子,根据当前位置和历史最优位置,更新其个体最优解。
➢ 更新全局最优解:在所有粒子的个体最优解中,选择全局最优解。
➢ 更新速度和位置:根据粒子群算法的公式,更新粒子的速度和位置。
➢ 判断停止条件:根据预设的停止条件,判断是否终止迭代。
➢ 返回最优解:当停止条件满足时,返回全局最优解作为算法的输出。(具体代码见附录)
2) 使用基于模拟退火的混合粒子群算法求解函数
的最小值。其中
,粒子数为50,学习银子均为2,退货常数为0.6,迭代步数为1000。
首先建立目标函数代码:
function y=immuFunc(x)
Y=(cos(x(1)^2+x(2)^2)-1)/((x(1)^2-x(2)^2))^2)+0.5;
End
在MATLAB命令行窗口中输入代码:
[xm,fv]=PSO_immu(@immuFunc,50,2,2,0.8,100,5,0.0000001,10,0.6,0.0000000000000000001,0)
运行结果如下:
>>xm= 1.139888959718036
fv= -1.515992561220435
5. 结语
MATLAB软件在高等数学中的应用具有广泛的潜力和重要的意义。MATLAB以其强大的计算能力、可视化工具、丰富的工具箱和灵活的编程环境等优势,为高等数学的教学改革带来了新的可能性和创新方法。MATLAB在高等数学教学中的实践中,它以学生为中心,强调以实践为导向,培养学生实际解决问题的能力,加强对高等数学的理解。本文根据MATLAB教学方式的基本特征,提出了将MATLAB应用于高等数学的应用策略,并给出了实际应用案例,以帮助MATLAB教学法可以达到预期的教学效果。希望通过利用MATLAB的强大功能和工具,可以提升学生的数学学习效果,通过理论实践相结合,提高学生的兴趣,提升课堂质量、促进教学改革,培养全面发展的人才。
基金项目
贵州省哲学社会科学规划一般课题“新时代贵州培育良好营商环境研究”(19GZYB71)、“新时代贵州经济高质量发展与绿色发展耦合协调机制研究”(21GZYB13)。
附录
粒子群算法:
function [bestPosition, bestFitness] = PSO (functionHandle, dim, particleCount, maxIterations, lb, ub)
% 初始化粒子群
positions = rand(particleCount, dim) .* (ub - lb) + lb;
velocities = zeros(particleCount, dim);
% 初始化个体最优解和全局最优解
pBestPositions = positions;
pBestFitness = zeros (particleCount, 1);
gBestPosition = [];
gBestFitness = Inf;
% 迭代优化
for iteration = 1:maxIterations
% 计算适应度
fitness = feval (functionHandle, positions);
% 更新个体最优解
updateIndices = fitness < pBestFitness;
pBestPositions(updateIndices, :) = positions (updateIndices, :);
pBestFitness(updateIndices) = fitness (updateIndices);
% 更新全局最优解
if minFitness < gBestFitness
gBestPosition = pBestPositions(minIndex, :);
gBestFitness = minFitness;
end
% 更新速度和位置
inertiaWeight = 0.7;% 惯性权重
cognitiveWeight = 1.4;% 认知权重
socialWeight = 1.4;% 社会权重
r1 = rand(particleCount, dim);
r2 = rand(particleCount, dim);
velocities = inertiaWeight * velocities ...
+ cognitiveWeight * r1 .* (pBestPositions - positions) ...
+ socialWeight * r2 .* (repmat(gBestPosition, particleCount, 1) - positions);
positions = positions + velocities;
% 边界处理
positions(positions < lb) = lb;
positions(positions > ub) = ub;
end
% 返回最优解
bestPosition = gBestPosition;
best
NOTES
*通讯作者。