1、 《数学实验》上机指导书 实验题目 实验一 mathematica软件基本操作 (一).实验类型:验证型 (二).实验类别:基础实验 (三).每组人数:1 (四).实验要求:选修 (五). 实验学时:3个学时 (三).实验目的:(1)掌握Mathematica软件的计算器功能;(2)学会使用Mathematica软件求各种类型方程(或方程组)的数值解和符号解;(3)通过本实验深刻理解极限概念;(4)学习并掌握利用Mathematica求极限的基本方法。(5)通过本实验加深理解积分理论中分割、近似、求和、取极限的思想方法;(6)学习并掌握二重积分及线性积分的计算方法;(7)学
2、习常用积分命令。(8)掌握求函数的导函数和偏导数方法;(9)学会使用Mathematica软件进行函数的幂级数展开。 (四)【预备知识】 (1)方程(或方程组)代数解法的基本理论,函数的零点,方程(或方程组)的解及数值解; (2)本实验所用命令: ● 用“= =”连接两个代数表达式构成一个方程 ● 求方程(组)的代数解: Solve[方程或方程组,变量或变量组] ● 求方程(组)的数值解: NSolve[方程或方程组,变量或变量组] ● 从初始值开始搜索方程或方程组的解: FindRoot[方程或方程组,变量或变量组初值] ● 在界定范围内搜索方程或方程组的解: F
3、indRoot[方程或方程组,变量或变量组范围] ● 绘图命令: Plot[表达式,{变量,上限,下限},可选项] ● 微分方程求解命令: DSolve[微分方程, y[x], x] (3)极限、左极限、右极限的概念; (4)本实验所用Mathematica有关命令: ● Limit[expr, x->x0] 求表达式在时的极限 ● Limit[expr,x->x0,Direction -> 1] 求左极限 ● Limit[expr,x->x0,Direction ->-1] 求右极限 (5)定积分的概念、几何意义
4、二重积分的概念、二重积分化为定积分的过程及其计算方法; (6)本实验所用Mathematica有关命令: ● 无限积分:Integrate[f,x] ● 定积分:Integrate[f,{x,上限,下限}] (7)函数的导函数、偏导数以及函数的幂级数展开式; (8)本实验所用的Mathematica函数提示: (a)求导数(或偏导数) ● D[表达式F,x] 求F对于变量x的导数; ● D[表达式F,x1,x2,...] 按顺序求F关于x1,x2,…的偏导数; ● D[表达式F,{x,n}] 求F对x的n阶导数。 (b)幂级数展开 ● Series[
5、表达式F,{x,x0,n}] 求F关于变量x在x0的n阶泰勒展式。 (五).实验内容 (1)计算;。 (2)对于方程,试用Solve和Nsolve分别对它进行求解,并比较得到的结果,体会代数解即精确解与数值解的差别。 (3)先观察函数的图形,然后选择一个初始点求解,并且根据图形确定在某个区间中搜索它的零点。 (4)求方程组的解,然后代入系数和常数项的一组初值,并求解。 (5)求微分方程的通解。 (6)用 Mathematica软件计算下列极限: (1); (2); (3); (4); (5); (6); (7);(8);(9); (
6、10);(11);(12)。 (7)求函数的原函数; (8)求; (9)求; (10)求; (11)求。 (12)求出被积函数F(x)=的原函数和导函数,并画出被积函数、原函数和导函数的图形,试分辨出哪一条曲线属于哪个函数。 (13)对函数sinx在0点展开10阶和20阶,并以图形方式对比展开的结果和sinx的差别,并分析阶数高的展式对于原来函数的逼近程度是否优于阶数低的展式。 (六)【实验操作】 (1)学会N[]和expr//N的使用方法,并学会用Precision[]研究误差。 In[1]:=N[Exp[3],12] In[2]:= Precision[%] I
7、n[3]:=546*54564 // N In[4]:=46545^45676 // N (2)学会Solve[]和NSolve[]的使用方法。 In[5]:= p=x^4-2x^3-4x^2+3;Solve[p==0,x] In[6]:=NSolve[p= =0,x] (3)学会Clear[]和FindRoot[]的使用方法 In[7]:=Clear[x] In[8]:=f=Sin[x]-Cos[x] In[9]:=Plot[f,{x,-4,4}] In[10]:=FindRoot[f,{x,1}] In[11]:=FindRoot[f,{x,{0,1}}] (4)学会
8、用Solve[]求解方程组。 In[12]:=Clear[a1,a2,b1,b2,c1,c2] In[13]:=Solve[{a1*x+b1*y= =c1,a2*x+b2*y= =c2},{x,y}] (5)学会DSolve[]的使用方法 In[14]:=DSolve[y''[x]+3y'[x]+2y[x]= =Exp[x],y[x],x] (6)用 Mathematica软件计算下列极限: (1)In[1]:= Limit[(n^3)/(-n^3+n^2+1),n ->Infinity]; (2)In[2]:= Limit[Tan[x],x->Pi/2,Direction->1
9、] (3)In[3]:= Limit[Tan[x],x->Pi/2,Direction->-1] (4)In[4]:= (5)In[5]:= (6)In[6]:= (7)In[7]:= Limit[((1+x)^a-1)/x,x->0] (*Mathematica也能处理符号极限*) (8)In[8]:= (9)In[9]:= (10)In[10]:= (11)In[11]:= (12)In[12]:=Limit[Sin[1/x], x->0] (*无极限的例子*) (13)In[1]:=Integrate[a*Sin[x^2]x^3,x] (14)I
10、n[2]:=Integrate[a*x^n, x] (15)In[3]:=Integrate[a*x^n, {x, 0, 1}] (16)In[4]:=Integrate[Integrate[x*y, {y, 2x, x^2 + 1}], {x, 0, 1}] (17)In[5]:=Integrate[x*Cos[y],{x,0,Pi},{y,0,x}] (18)In[1]:=f1=(x+1)/(x^2+3x+5) In[2]:=f2=Integrate[f1,x] In[3]:=f3=D[f1,x] In[4]:=Plot[{f1,f2,f3},{x,-1,1}] (19)I
11、n[5]:=s1=Series[Sin[x],{x,0,10}] In[6]:=s2=Series[Sin[x],{x,0,20}] In[7]:=g1=Normal[s1] In[8]:=g2=Normal[s2] In[9]:=Plot[{g1,Sin[x]},{x,-5,5}] In[10]:=Plot[{g2,Sin[x]},{x,-5,5}] In[11]:=Plot[g1-g2,{x,-5,5}] 实验二 放射性废料的处理问题 (一).实验类型:综合型 (二).实验类别:基础实验 (三).每组人数:1 (四).实验要求:选修 (五)
12、 实验学时:3个学时 (三).实验目的:巩固和理解微分方程理论及其应用。 (四).预备知识:常微分方程理论和Mathematica解方程的命令。 (五).【实验内容与要求】 美国原子能委员会以往处理浓缩放射性废料的方法,一直是把它们装入密封的圆桶里,然后扔到水深90多米的海底。生态学家和科学家们表示担心,怕圆桶下沉到海底时与海底碰撞而发生破裂,从而造成核污染。原子能委员会分辩说这是不可能的。为此工程师们进行了碰撞实验,发现当圆桶下沉到海底时的速度超过12.2 m/s,圆桶与海底碰撞会发生破裂。为避免圆桶碰裂,需要计算圆桶沉到海底时的速度是多少?这时已知圆桶重为239.46 kg,
13、体积为0.2058 m3,海水密度为1035.71 kg/m3。如果圆桶下沉到海底时的速度小于12.2 m/s,就说明这种方法是可靠的;否则就要禁止用这种方法来处理放射性废料。假设水的阻力与速度大小成正比,其正比例常数为0.6。 (1)根据问题建立数学模型。 (2)根据数学模型求解的结果,判断这种处理废料的方法是否合理? (六).实验解答 一、问题分析及建立模型 圆桶运动规律: (1) (2) 其中, 由题设可得圆桶的位移
14、和速度分别满足如下微分方程: (3) (4) 2、若,类似上面,可得到这时圆桶的速度分别满足如下微分方程: 二、计算过程 1、由(1)(2)(3)(4)以及题设的初始数据,通过如下Mathematica程序就可以求出圆筒的位移和速度的方程。 源程序: In[1]:=m = 239.46; w = 0.2058; g = 9.8; p = 1035.71; k = 0.6; DSolve[{m*s''[t] == m*g
15、 - p*g*w - k*s'[t], s[0] == 0, s'[0] == 0}, s[t], t] DSolve[{m*v'[t] == m*g - p*g*w - k*v[t], v[0] == 0}, v[t], t] Out[1]= (5) (6) 2、由(5)及S(t)=90m,由下面程序 得到:t=12.994 ,带入(6),运行如下命令 得V=13.772>12.2,此时说明此法处理废料不行。 三、结果分析 在实际情况中k 与 v 的关系很难确定,所以上面的模型有它的局限性,且对不同的介质比如在空气中和在水中k 与 v 的关系就不同。在一般
16、情况下,k应是v的函数,即k=k(v),至于 是什么样的函数很难确定。 四、模型推广 这个模型可以推广到其他方面,比如说一个物体从高空落向地面的道理也是一样的,尽管物体越高,落到地面的速度也越大,但决不会无限大。 实验三 路程估计问题 (一).实验类型:综合型 (二).实验类别:基础实验 (三).每组人数:1 (四).实验要求:选修 (五). 实验学时:3个学时 (三).实验目的:能用数学软件进行数据拟合。 (四). 预备知识:多元函数的极值求法;线性拟合的最小二乘法原理。 (五)【实验内容与要求】 外出旅行或行军作战等,都可能涉及到两地路程的估计问题。当身边
17、带有地图时,这似乎是件很容易的事。然而,从地图上量出的距离却是两地的直线距离,你能由此估计出两地的实际路程吗?建立关于的模型:。 (1)要确定与的近似函数关系,必须收集若干及与之相应的的具体数据,通过分析找出规律。这里将《中国地图》中量得四川省彭州市到其他几个城市的直线距离,并按比例尺(1cm为20km)进行转换,以及从到汽车站了解到的对应的实际路程的有关数据列于表2-2。 表2-2 城市间直线距离和实际路程 彭州市 成都 郫县 都江堰 什邡 德阳 新繁 广汉 温江 崇庆 → 地图直线距离(cm) 1.8 1.08 1.55 1.32 2.3 0.7
18、5 1.64 1.7 2.38 地图转换距离d(km) 36 21.6 31 26.4 46 15 32.8 34 47.6 实际路程s(km) 42 30 58 43 68 16 43 50 65 (2)启动数学软件,将上表中d与s两组数据,按拟合时所需形式输入。 (3)画出数据散布图,观察它们是否大致在一条直线附近。 (4)进行直线拟合,并在同一图中显示拟合直线与数据点。观测拟合情况,并记下所得到的模型(称为经验模型)。 (5)在只作粗略估计的情况下,为便于计算,若将上面得到的模型修改成(简单模型)行吗?根据表中数据,取b=3,试画出简
19、单模型与样本数据点的图形,并与(4)所得到的图形相对照。 (6)试计算由两个模型得到的估计值与实际值的差(残差),以大致观测一下两个模型的差异。在只作粗略估计的前提下,你愿意用哪个模型? (六)实验解答 一、问题分析与建立模型 问题的关键在于收集数据,然后描出数据散布图,通过观测,决定用什么函数去拟合。由所给数据,发现它们大致在一条直线附近,故用直线拟合,又因d=0时,S必为零,因此,不妨设模型为S=ad。 二、计算过程 1、ln[1]= x={36,21.6,31,26.4,46,15,32.8,34,47.6}; y={42,30,58,43,68,16
20、43,50,65}; data=Table[{x[[i]],y[[i]]},{i,1,9}]; shu=ListPlot[data,PlotStyle®PointSize[0.02]] (*作数据散布点*) s=Fit[data,{d},d]; (*拟合直线*) Print[“s=”,s] P=Plot[s,{d,0,50}] (*作拟合直线图*) Show[shu,p] (*在同一图上观测拟合效果*) Out[6]= S
21、1.42852d Out[8]= -Graphics- 由此,得出经验模型S=1.42952d 将经验模型修改为简单模型S=1.5d-b,其目的很清楚,是为了便于计算,在只作粗略估计的情况下,我们更宁愿这样作,作为实践中的一条经验,它比前者更具有优势。式中的b显然应因短程与远程而有所不同,这实际上给我们提出了这样一个问题: 对某值比如50km以内的较短路程用一个公式,对较长的路程再用一个公式是否会更好呢? 2、a=1.5 b=3 b因路程长短有所不同 ln[9]= m=Plot[1.5*d-3,{d,0,50}]; show[shu,m
22、] (*显示简单模型与样本数据点的图形*) Out[10]:= -Graphics- 三、结果分析 In[11]:= sp=1.42952*x (*由经验模型算估计值*) ss=1.5*x-3 (*由简单模型算估计值*) error1=y-sp (*计算残差值*) error2=y-ss (*计算残差值*) Out[11]:={51.5,30.9,44.3,37.7,6
23、5.8,21.4,46.9,48.6,68} {51.,29.4,43.5,36.6,66.,19.5,46.2,48.,68.4} {-9.5,-0.88,14.,5.3,2.2,-5.4,-3.9,1.4,-3.} {-9.,0.6,14.5,6.4,2.,-3.5,-3.2,2.,-3.4} 所得结果可见:两个模型的差异并不大,且它们对多数点都吻合得较好,但也有误差较大的,分析其原因: 一:是我们的模型本身是根据小样本而得到,不可能是很精确的; 二:是有两种极端情形(它们的误差都较大)应该注意:(1)路较直,如彭县成都(误差为-9);(2)路线起伏大,如彭县灌县,实际路线是彭县唐昌灌县,相当于走三角形的两边(误差为+14.5)。这是不是提醒我们,应该把与AB垂直的最大偏离h测量出来,并结合到模型中以提高精度呢? 14






