数学软件在实践教学中的应用
2022-12-21张艳波闫慧洁
◎张艳波 闫慧洁
(桂林旅游学院,广西 桂林 541004)
数学是研究现实世界数量关系和空间形式的一门学科.Mathematica凭借其符号语言及高精度的运算功能受到了广泛关注,是目前比较流行的符号运算软件之一.在大学教育和科学研究中,Mathematica都是不可缺少的工具.
一、几个高等数学实验的应用举例
例1求方程lnx+xsinx=3的数值近似解.
Mathematica命令含 义NSolve[lhs==rhs,x]给出一个代数方程的数值解NRoots[lhs==rhs,x]给出一个代数方程的数值解FindRoot[lhs==rhs,{x,x0}]求方程的数值解,初值为x0
输入:NSolve[Log[x]+x*Sin[x]==3,x]或NRoots[Log[x]+x*Sin[x]==3,x]
得不出结果.因此,需要在区间[0.5,20]内画出函数y=lnx+xsin x-3的图形.
输入:Plot[Log[x]+x*Sin[x]-3,{x,0.5,20}],结果如图1.
图1
从图1看出,在区间[0.5,20]内,方程lnx+xsinx=3在x=6,10,12,16,19附近有解.
输入:FindRoot[Log[x]+x*Sin[x]==3,{x,6}]
FindRoot[Log[x]+x*Sin[x]==3,{x,10}]
FindRoot[Log[x]+x*Sin[x]==3,{x,12}]
FindRoot[Log[x]+x*Sin[x]==3,{x,16}]
FindRoot[Log[x]+x*Sin[x]==3,{x,19}]
结果:{x→6.45971};{x→9.34276};{x→12.6034};{x→15.6922};{x→18.8529}.
例2画出心形线r=2(1-cost)、三叶玫瑰线r=2cos 3t的图形.平面曲线的绘制涉及的基本命令如下:
Mathematica命令含义Plot[f,{x,xmin,xmax},选择项]在[xmin,xmax]内画出函数y=f(x)的图形Plot[{f1,f2,…},{x,xmin,xmax},选择项]在[xmin,xmax]内同时画出函数y=f1(x),y=f2(x)…的图形Show[P1,P2,…,Pn]将函数图形P1,P2,…,Pn同时显示ParametricPlot[{x[t],y[t]},{t,tmin,tmax},选择项]画参数方程x=x(t)y=y(t){,t∈[tmin,tmax]表示的曲线ListPlot[{y1,y2,…},选择项]画出坐标为(1,y1),(2,y2),…的点ListPlot[{{x1,y1},{x2,y2} …},选择项]画出坐标为(x1,y1),(x2,y2),…的点
输入:r[t_]:=2*(1-Cos[t])
ParametricPlot[{r[t]*Cos[t],r[t]*Sin[t]},{t,0,2*Pi},AspectRatio->Automatic]
r[t_]:=2*Cos[3t]
ParametricPlot[{r[t]*Cos[t],r[t]*Sin[t]},{t,0,2*Pi},AspectRatio->Automatic]
结果如图2.
图2
例3xsiny+yex=0,求y′(x),y′(0)
Mathematica命令含义D[f[x],x]求函数f(x)对x的导数D[f[x],{x,n}]求函数f(x)对x的n阶导数Dt[f(x)]计算函数f(x)的微分Series[f[x]{x,x0,n}]将函数f(x)在x0处进行n阶泰勒展开Normal[p]去掉泰勒展开式p后的皮亚诺余项
输入:Solve[Dt[x*Sin[y]+y*Exp[x],x]==0,Dt[y,x]]
结果:{{Dt[y,x]→(-Expx y+Sin[y])/(Expx+xCos[y])}}
Solve[x*Sin[y]+y*Exp[x]==0,y]/.{x->0}
结果:{{y→0}}
例4画出y=ex,y=e-x,x=1所围成的图形,并计算图形的面积.
在Mathematica命令窗口输入以下程序:
P1=Plot[E^x,{x,-2,2}];
P2=Plot[E^(-x),{x,-2,2}];
P3=ParametricPlot[{1,t},{t,-2,4}];
Show[P1,P2,P3].
图3
Mathematica命令含义D[f[x,y,z],x]求f(x,y,z)对x的偏导数D[z,y]求z对y的偏导数D[f[x,y,z],{x,2}]求f(x,y,z)对x的二阶偏导数D[z,{x,2}]求z对x的二阶偏导数D[f[x,y,z],x,y]求f(x,y,z)对x,y的混合偏导数D[z,x,y]求z对x,y的混合偏导数Dt[f[x,y],Constants->{a}]求f(x,y)的全微分Dt[z]求z的全微分Fit[data,funs,vars]输出结果是以基底函数(funs)的线性组合形式为拟合函数的最佳拟合函数Fit[data,{1,x},x]用线性函数a+bx拟合数据dataFit[data,{1,x,x^2},x]用二次函数a+bx+cx2拟合数据dataFit[data,Table[x^i,Table[x^i,{i,0,n}],x]用x的n次多项式拟合数据data
输入:
Clear[z];
z=Sin[x*y]+Cos[x*y]^2;
D[z,x]
D[z,y]
D[z,{x,2}]
D[z,x,y]
Clear[z];
结果:
ycos[xy]-2ycos[xy]sin[xy]
xcos[xy]-2xcos[xy]sin[xy]
-2y2cos[xy]2-y2sin[xy]+2y2sin[xy]2
cos[xy]-2xycos[xy]2-xysin[xy]-2cos[xy]sin[xy]+2xysin[xy]2
输入
Clear[z];
z=(1+x*y)^y;
D[z,x]
D[z,y]
结果:
y2(1+xy)-1+y
再输入
Dt[z]
结果:
输入:
eq1=D[x==E^u+u*Sin[v],x,NonConstants->{u,v}];
(*第一个方程两边对x求导数,把u,v看成x,y的函数*)
eq2=D[y==E^u-u*Cos[v],x,NonConstants->{u,v}];
(*第二个方程两边对x求导数,把u,v看成x,y的函数*)
Solve[{eq1,eq2},{D[u,x,NonConstants->{u,v}],
D[v,x,NonConstants->{u,v}]}]//Simplify
(*解求导以后由eq1,eq2组成的方程组*)
则输出:
其中D[u,x,NonConstants->{u,v}]表示u对x的偏导数,D[v,x,NonCosnstants->{u,v}]表示v对x的偏导数.类似地可求得u,v对y的偏导数.
例8画出分叉一次至五次的雪花图形.
用以下定义的自定义函数ShowSnow[n,Len](其中参数n表示雪花的分叉次数,参数Len表示三角形的初始边长,默认值为1)可以描绘出雪花图形.
ShowSnow[n_:Integer,Length:1]:=Block[{a={{{0,0},{1,0}},{{1,0},{0.5,Sqrt[3.]/2}},{{0.5,Sqrt[3.]/2},{0,0}}}},
Do[a=Flatten[Map[f,a],1],{n}];
Show[Graphics@(Line/@a),AspectRatio©Automatic];];
f[{{x1_,y1_},{x2_,y2_}}]:=Block[{s,t,p},p=(Sqrt[3.]Sqrt[(y2-y1)^2+(x2-x1)^2]/6.);
s={{x1,y1},{x1+(x2-x1)/3,y1+(y2-y1)/3},{(x1+x2)/2+Sqrt[3.](y2-y1)/6,(y1+y2)/2-Sqrt[3.](x2-x1)/6},{x1+2*(x2-x1)/3,y1+2*(y2-y1)/3},{x2,y2}};
{{s[[1]],s[[2]]},{s[[2]],s[[3]]},{s[[3]],s[[4]]},{s[[4]],s[[5]]}}];
使用时,先输入上述定义模块ShowSnow的命令,再调用此模块即可,例如输入命令Do[ShowSnow[i,1],{i,5}];可画出分叉一次至五次的雪花,如图4.
n=1
二、将数学软件辅助高等数学教学进行模块化
为了更好地辅助教学、提高教学质量,将数学实验的内容按照高等数学教学内容进行模块化,主要有:
(1)Mathematica软件入门.帮助学生掌握基本操作、了解基本的命令语句.
(2)一元函数的图形与极限.学习使用软件绘制一元函数图形,通过图形了解函数特性,建立数形结合的思想,并掌握一元函数极限的运算方法.
(3)一元函数微分学.主要学习使用软件进行一元函数导数和微分的基本运算;结合几何图形,直观的认识导数的定义和切线方程、法线方程;通过图形和计算,了解微分中值定理的几何意义,学会使用软件计算函数的泰勒展开式.
(4)一元函数积分学.通过学习Mathematica软件基本功能,理解并掌握一元函数积分学的基本概念和方法;能够使用软件计算一元函数的积分,并解决一些实际应用问题.
(5)微分方程.学会使用软件求解常微分方程的分析解和数值解,能够描绘积分曲线图,进而掌握积分曲线的含义.
(6)空间曲线与曲面的描绘.通过使用Mathematica软件描绘曲线和曲面的图形,观察其特点.
(7)多元函数微分法及应用.掌握使用软件计算多元函数偏导数和全微分的方法;能够使用软件解决多元函数极值问题;了解曲线拟合和最小二乘法拟合原理.
(8)重积分.学会使用Mathematica软件绘制空间立体几何图形,能够找到投影区域计算二重积分.
(9)曲线积分与曲面积分.掌握曲线积分和曲面积分的基本计算方法和思想,学会使用Mathematica软件计算曲线积分、曲面积分.
(10)级数.学会将函数展开成幂级数或傅里叶级数,了解函数展开成傅里叶级数的物理意义及其应用.
结语
高等数学课程理论性强、内容抽象且相对枯燥,这导致高等数学教学成了很多高校教学的难题.而利用计算工具能找到解决这一问题的途径并能最终解决问题.近些年盛行的数学建模,正是顺应时代这一要求的产物.应用数学软件解决各种数学问题,不仅可以减轻数学工作者、教师和工程技术人员的劳动强度,提高数学研究、教学工作的效率和质量,还可以让理论研究者们集中精力到开创性的问题上,使数学理论和方法得到进一步的完善、更新和发展.数学实验是以计算机为辅助工具,结合理论知识解决实际问题,能够有效地解决高等数学理论课堂上的一些难题的一种实验.数学实验与数学理论教学相结合,可以使一些复杂难懂的数学问题简单化,再通过软件计算和模拟使得一些问题更直观,教学效果就能够进一步提高.高等数学内容多、计算难度大,而数学软件有强大的计算功能和模拟能力,因此,开设数学实验课程可以使高等数学的教学压力得到缓解.