实验项目名称 | 实验五 动态模型的建模分析 | 实验成绩 | |||||||||||||||||||||||||||||||||
实 验 者 | 专业班级 | 组 别 | 无 | ||||||||||||||||||||||||||||||||
同 组 者 | 无 | 实验日期 | 2018年10月18日 | ||||||||||||||||||||||||||||||||
第一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等) 一、实验目的、意义 二、实验基本原理与方法 动态模型的分析方法,数据分析工具Mathematica的使用方法,以及帮助指南文档等。 利用Mathematica绘图。 三、实验内容及要求 1、动态模型的建模分析,写出求解过程及分析结论。 (1)求解微分方程y'-xy=3x (2)求微分方程x2y''-2xy'+2y=3x满足条件y(1)=0,y'(1)=1的特解。 (3)求微分方程组的通解。 (5)已知一组数据(-1,2),(0,2.5),(1,3),(2,4),(3,4.5),(4,5.5),求已知数据的拟合函数。 (6)应用Mathematica求解传染病模型,模型Ⅰ(指数模型)的通解与特解,并绘图。 (7)应用Mathematica求解传染病模型,模型Ⅱ(阻滞模型,SI模型),的通解与特解,并绘图(三种形状: S形状,正态形状,钟形)。 (8)应用Mathematica求解传染病模型,模型Ⅲ(SIS模型),的通解与特解。 (9)课程第7讲中的问题。在一片没有管理的林区,硬材树与软材树竞争可用的土地和水分。越可用的硬材树生长得越慢。软材树靠生长快、有效消耗水分和土壤养分与硬材树竞争。硬材树靠生长的高度与软材树竞争,它们遮挡了小树的阳光,也更抗疾病。这两种树能否同时在一片林区中无限期地共存,或者一种树是否会迫使另一种树灭绝?应用Mathematica求解以下方程。分析问题。 2、写出简短程序,绘制特殊图形 (1)在Mathematica中绘制如下的星空图。 (2)在Mathematica中绘制心形图。提示:心形曲线的方程为,r=a(1-sinθ) (3)在Mathematica中绘制三叶草或四叶草的图形。 (4)在Mathematica中绘制瓶子或罐子。 (5)在Mathematica中绘制海螺。 (6)在Mathematica中绘制魔方。 (7)在Mathematica中绘制漫画人形图。 (8)绘制其它任何,你觉得有意思的图形,现实存在的,或幻想的,或未来的图形。 四、实验方案或技术路线(只针对综合型和设计型实验) 按照实验任务要求,理论结合实际的实验方案,巩固课程内容,温故知新,查遗补漏,夯实理论基础,提升实验动手能力。 技术路线是,从整体规划,分步骤实施,实验全面总结。 | |||||||||||||||||||||||||||||||||||
第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等) 1、动态模型的建模分析,写出求解过程及分析结论。 (1)求解微分方程y' – xy = 3x Mathematica 中求解微分方程通解的命令: DSolve[微分方程或方程组, 未知函数, 自变量] 具体的运行结果如下图所示: 图1 求解微分方程y' – xy = 3x (2)求微分方程x2y''-2xy'+2y=3x满足条件y(1)=0,y'(1)=1的特解。 Mathematica 中求解微分方程特解的命令: DSolve[{微分方程或方程组, 初始条件}, 未知函数,自变量] 具体的运行结果如下图所示: 图2 求微分方程x2y''-2xy'+2y=3x满足条件y(1)=0,y'(1)=1的特解 (3)求微分方程组的通解。 Mathematica 中求解微分方程通解的命令: DSolve[微分方程或方程组, 未知函数, 自变量] 具体的运行结果如下图所示: 图3 求微分方程组的通解 (4)求函数f(x) = x3 - 4x + 3在区间[-2,2]的极值。 首先绘出函数f(x) = x3 - 4x + 3的图形,如下图所示: 一元函数作图的命令:Plot[函数, 作图范围, 可选项] 图4 函数f(x) = x3 - 4x + 3的图形 通过观察可以发现,函数f(x) = x3 - 4x + 3在 x=1 附近有极小值,在 x= -1 附近有极大值。 求函数的极小值近似值的命令: FindMinimum[函数, {自变量, 初始值}] 求函数的极大值近似值的命令: FindMaximum [函数, {自变量, 初始值}] 或 对- f[x]求极小值。 最后得到:极小值 - 0.0792014 和极小值点1.1547;极大值 - 6.0792和极大值点 -1.1547 具体运行结果如下图所示: 图5 求函数f(x) = x3 - 4x + 3的极值点 (5)已知一组数据(-1,2),(0,2.5),(1,3),(2,4),(3,4.5),(4,5.5),求已知数据的拟合函数。 由一组数据求函数的近似解析式,就是数据拟合问题。 求已知数据的拟合函数的命令: Fit[数据表, 基本函数组, 自变量或自变量组] 具体运行结果如下图所示: 图6 求函数的近似解析式 为了检验拟合的程度,可以画出数据的散点图以及拟合的函数图像进行比较。 绘制散点图的命令:ListPlot[点列, 可选项] 图7 绘制散点图 对求得的函数的近似解析式f1, f2分别单独绘图。 一元函数作图的命令:Plot[{函数1, 函数2,…},作图范围, 可选项] 得到f1, f2的图形如下图所示: 图8 函数解析式f1的图形 图9 函数解析式f2的图形 将多个函数的图像画在同一坐标系中:Show[图形变量组, 可选项] 图10 函数解析式f1的拟合情况 图11 函数解析式f2的拟合情况 从图中可见,两次的拟合程度都比较理想。 第二次比第一次的拟合程度高,但从简单实用的角度,可以选择第一个拟合函数。 如需要更精确,只要增加基本函数组的幂次即可。 基本函数组包括幂函数、正弦函数、对数函数等 (6)应用Mathematica求解传染病模型,模型Ⅰ(指数模型)的通解与特解,并绘图。 Mathematica 中求解微分方程通解的命令: DSolve[微分方程或方程组, 未知函数, 自变量] Mathematica 中求解微分方程特解的命令: DSolve[{微分方程或方程组, 初始条件}, 未知函数, 自变量] 具体运行结果如下图所示: 图12 求传染病模型中模型I的通解与特解 一元函数作图的命令:Plot[函数, 作图范围, 可选项] 不妨假设x0 = 1, k = 1, 绘出的图形如下图所示: (其中y = e ^x用Exp[x]格式表示) 图13 传染病模型中模型I的图形 (7)应用Mathematica求解传染病模型,模型Ⅱ(阻滞模型,SI模型),的通解与特解,并绘图(三种形状: S形状,正态形状,钟形)。 Mathematica 中求解微分方程通解的命令: DSolve[微分方程或方程组, 未知函数, 自变量] Mathematica 中求解微分方程特解的命令: DSolve[{微分方程或方程组, 初始条件}, 未知函数, 自变量] 具体运行结果如下图所示: 图14 求传染病模型中模型II的通解与特解 一元函数作图的命令:Plot[函数, 作图范围, 可选项] 不妨假设n = 10000, x0 = 1, k = 1, 绘出相关图形如下图所示: 图15 传染病模型中模型II的图形:x - t 由上图可知,x – t曲线为S形。 图16 传染病模型中模型II的图形:dx/dt - t 由上图可知,dx/dt – t曲线为正态形状。 图17 传染病模型中模型II的图形:dx/dt - x 由上图可知,dx/dt – x曲线为钟形。 (8)应用Mathematica求解传染病模型,模型Ⅲ(SIS模型),的通解与特解。 Mathematica 中求解微分方程通解的命令:DSolve[微分方程或方程组, 未知函数, 自变量] Mathematica 中求解微分方程特解的命令: DSolve[{微分方程或方程组, 初始条件}, 未知函数, 自变量] 具体运行结果如下图所示: 图18求传染病模型中模型III的通解与特解 (9)应用Mathematica求解以下方程: 求解方程组的命令:Solve[{方程1, 方程2, …}, {未知数1, 未知数2, …}] 图19 应用Mathematica求解方程组 由方程组的解可知,这两种树不能同时在一片林区中无限期地共存。 2、写出简短程序,绘制特殊图形 (1)在Mathematica中绘制如下的星空图。 在Mathematica中输入以下代码便可得到星空图,代码及图形如下图所示: (其中涉及到使用伪随机实数以及使用表格Table来存储等相关知识点) 图20 在Mathematica中绘制星空图 (2)在Mathematica中绘制心形图。提示:心形曲线的方程为,r = a(1-sinθ) 极坐标式函数作图的命令:PolarPlot[极坐标函数, 变量范围, 可选项] 根据题目提示的心形曲线方程,绘出的图形如下图所示: 图21 在Mathematica中绘制心形图:r = a(1-sinθ) 除此之外,我还采用了另一种心形曲线,绘出的图形如下图所示: 图22 在Mathematica中绘制其他的心形图 (3)在Mathematica中绘制三叶草或四叶草的图形。 极坐标式函数作图的命令:PolarPlot[极坐标函数, 变量范围, 可选项] 参数方程作图的命令:ParametricPlot[参数方程, 参数范围, 可选项] 本题可以使用极坐标方程和参数方程分别绘制三叶草的图像。具体代码如下: 极坐标方程绘图:PolarPlot[1 + Cos[3x] + 1.5 Sin[3x]^2, {x, 0, 2 Pi}] 参数方程绘图:ParametricPlot[{(1 + Cos[3x] + 1.5 Sin[3x]^2) Cos[x], (1 + Cos[3x] + 1.5 Sin[3 x]^2) Sin[x]}, {x, 0, 2 Pi}] 这两个代码绘出的图形是相同的。具体运行结果如下图所示: 图23 使用极坐标式函数的作图命令绘制三叶草 图24 使用参数方程的作图命令绘制三叶草 四叶草其实是异变后的三叶草,并非另一个物种。那么,只要尝试改变一个系数就可以得到四叶草的方程。 以极坐标绘图为例,具体绘图命令是: PolarPlot[1 + Cos[4 x] + 2 Sin[4 x]^2, {x, 0, 2 Pi}] 具体运行结果如下图所示: 图25 使用极坐标式函数的作图命令绘制四叶草 (4)在Mathematica中绘制瓶子或罐子。 瓶子可以看作是一个近似的圆柱体,我画圆柱体时采用的方法是将一条线段绕z轴旋转实现。这里可以进行类比,瓶子可以看作是某一曲线绕z轴旋转得到的图形。 绘制三维旋转图要用到RevolutionPlot3D命令。 本题我采用的是将函数{1,Sin[t],t}绕z轴旋转,最后得到的图形如下图所示: 图26 在Mathematica中绘制瓶子 (5)在Mathematica中绘制海螺。 绘制三维参数图要用到ParametricPlot3D命令。 要消除网格、边界框、坐标轴,只需将Mesh, Boxed, Axes设置为False 图27 在Mathematica中绘制海螺 (6)在Mathematica中绘制魔方。 绘制三维等高线图要用到ContourPlot3D命令。 以三阶魔方为例,我先将x = -1, 0 , 1, 2; y = -1, 0, 1, 2; z = -1, 0, 1, 2 这几个平面画出,并规定x, y, z的取值范围,使其出现图中形状。然后再利用Mesh->False将网格线消除。 最后具体的运行结果如下图所示: 图28 在Mathematica中绘制魔方(以三阶魔方为例) (7)在Mathematica中绘制漫画人形图。 此处我本来想自己设计一个卡通人物,先写一些局部(如鼻子,嘴巴等)的函数,再用Show命令整合到一起。但是由于存在一些bug,最终我改用Wolfram知识库里的卡通流行曲线。Wolfram知识库里大约有数千条卡通流行曲线,在Mathematica中输入: EntityValue["PopularCurve","Entities"] 会显示出所有曲线的名字,如下图所示:(此处截图只截了部分) 图29 在Mathematica中调用Wolfram知识库里的卡通流行曲线 再输入: Print[Labeled @@ EntityValue[#, {"Image", "Name"}]] & /@ EntityValue["PopularCurve", "Entities"]; 便可以打印出所有曲线的信息,并按照这些曲线名字的字母表顺序依次显示。 具体运行结果如下图所示:(此处只列举了部分) 图30 在Mathematica中输出Wolfram知识库里的卡通流行曲线(举例1) 图31 在Mathematica中输出Wolfram知识库里的卡通流行曲线(举例2) (8)绘制其它任何,你觉得有意思的图形,现实存在的,或幻想的,或未来的图形。 a. 在Mathematica中绘制出莫比乌斯环的图形: 绘制三维参数图要用到ParametricPlot3D命令。 具体运行结果如下图所示: 图32 在Mathematica中绘制莫比乌斯环 b. 在Mathematica中画出一个弹簧绕成的圈: 绘制三维参数图要用到ParametricPlot3D命令。 具体运行结果如下图所示: 图33 在Mathematica中绘制弹簧圈 c. 在Mathematica中画出一个球体浮在正方体水杯内的图形: 绘制三维图形要用到Graphics3D命令。 绘制球体用到Sphere函数,绘制立方体要用到C彩轮胎uboid函数。 不透明度通过Opacity来设置。 具体运行结果如下图所示: 图34 在Mathematica中绘制如上图形 d. 在Mathematica中画出彩轮胎的图形: 绘制三维图形要用到Graphics3D命令。 实现彩效果要用到颜函数ColorFunction。 具体运行结果如下图所示: 图35 在Mathematica中绘制彩轮胎的图形 | |||||||||||||||||||||||||||||||||||
第三部分 结果与讨论(可加页) 一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等) (1)问题1:如何求函数f(x) = x3 - 4x + 3在区间[-2,2]的极值。 求解方法: 首先绘出函数f(x) = x3 - 4x + 3的图形,如下图所示: 一元函数作图的命令:Plot[函数, 作图范围, 可选项] 图36 函数f(x) = x3 - 4x + 3的图形 通过观察可以发现,函数f(x) = x3 - 4x + 3在 x=1 附近有极小值,在 x= -1 附近有极大值。 求函数的极小值近似值的命令:FindMinimum[函数, {自变量, 初始值}] 求函数的极大值近似值的命令:FindMaximum [函数,{自变量, 初始值}] 求函数极大值时,也可以对- f[x]求极小值。 最后得到:极小值 - 0.0792014 和极小值点1.1547;极大值 - 6.0792和极大值点 -1.1547 具体运行结果如下图所示: 图37 求函数f(x) = x3 - 4x + 3的极值点 (2)问题2:已知一组数据,如何求已知数据的拟合函数。 求解方法: 由一组数据求函数的近似解析式,就是数据拟合问题。 求已知数据的拟合函数的命令:Fit[数据表, 基本函数组, 自变量或自变量组] 以题目中的数据(-1,2),(0,2.5),(1,3),(2,4),(3,4.5),(4,5.5)为例,具体步骤如下: 首先,在Mathematica中求出函数近似解析式,具体运行结果如下图所示: 图38 求函数的近似解析式 然后,为了检验拟合的程度,可以画出数据的散点图以及拟合的函数图像进行比较。 绘制散点图的命令:ListPlot[点列, 可选项] 图39 绘制已知数据的散点图 对求得的函数的近似解析式f1, f2分别单独绘图。 一元函数作图的命令:Plot[{函数1, 函数2,…},作图范围, 可选项] 得到f1, f2的图形如下图所示: 图40 函数解析式f1的图形 图41 函数解析式f2的图形 将多个函数的图像画在同一坐标系中:Show[图形变量组, 可选项] 图42 函数解析式f1的拟合情况 图43 函数解析式f2的拟合情况 从图中可见,两次的拟合程度都比较理想。 第二次比第一次的拟合程度高,但从简单实用的角度,可以选择第一个拟合函数。 如需要更精确,只要增加基本函数组的幂次即可。基本函数组包括幂函数、正弦函数、对数函数等。 (3)问题3:如何在Mathematica中绘制瓶子。 求解方法: 瓶子可以看作是一个近似的圆柱体,我画圆柱体时采用的方法是将一条线段绕z轴旋转来实现。这里可以进行类比,瓶子也可以看作是某一曲线绕z轴旋转得到的图形。 绘制三维旋转图要用到RevolutionPlot3D命令。 本题我采用的是将函数{1,Sin[t],t}绕z轴旋转,最后得到的图形如下图所示: 图44 在Mathematica中绘制瓶子 (4)问题4:如何在Mathematica中绘制三叶草、四叶草的图形。 求解方法: 极坐标式函数作图的命令:PolarPlot[极坐标函数, 变量范围, 可选项] 参数方程作图的命令:ParametricPlot[参数方程, 参数范围, 可选项] 本题可以使用极坐标方程和参数方程分别绘制三叶草的图像。具体代码如下: 极坐标方程绘图:PolarPlot[1 + Cos[3x] + 1.5 Sin[3x]^2, {x, 0, 2 Pi}] 参数方程绘图:ParametricPlot[{(1 + Cos[3x] + 1.5 Sin[3x]^2) Cos[x], (1 + Cos[3x] + 1.5 Sin[3 x]^2) Sin[x]}, {x, 0, 2 Pi}] 这两个代码绘出的图形是相同的。具体运行结果如下图所示: 图45 使用极坐标式函数的作图命令绘制三叶草 图46 使用参数方程的作图命令绘制三叶草 四叶草其实是异变后的三叶草,并非另一个物种。那么,只要尝试改变一个系数就可以得到四叶草的方程。 以极坐标绘图为例,具体绘图命令是: PolarPlot[1 + Cos[4 x] + 2 Sin[4 x]^2, {x, 0, 2 Pi}] 具体运行结果如下图所示: 图47 使用极坐标式函数的作图命令绘制四叶草 (5)问题5:如何在Mathematica中绘制一些其他较难的特殊图形,如星空图、海螺等。 求解方法: 首先在网上进行检索得到类似的代码,然后对已有代码进行解读,进而自己再根据相关需要写出所求的图形代码。 以绘制海螺为例,涉及到的知识点如下: 绘制三维参数图要用到ParametricPlot3D命令。 要消除网格、边界框、坐标轴,只需将Mesh, Boxed, Axes设置为False 图48 在Mathematica中绘制海螺 二、小结、建议及体会 此次实验的内容主要是应用Mathematic求解动态模型和利用Mathematica进行绘图。应用Mathematica求解动态模型具体包括:利用 Mathematica求解微分方程,求函数的极值和进行数据拟合。利用Mathematica进行绘图指的是编写简单程序绘制特殊图形,例如:星空图、心形图、三叶草、四叶草、瓶子或罐子、海螺、魔方、漫画人物等其它图形。 在此次实验之前,我通过阅读相关资料和文档,回顾了动态模型的分析方法和理论,以及如何应用Mathematica求解动态模型的相关方法。上机实验时,我遇到不懂的问题及时查阅了相关帮助文档,或者在网上进行检索,或者在网络教学平台上与其他同学交流讨论,然后顺利完成了此次实验。 此次实验,帮助我熟悉和掌握了动态模型的分析方法和理论,以及应用数据分析工具Mathematica进行动态模型求解的方法。同时,还促使我学会了如何绘制某些特殊图形,进而提高了我的数据分析能力、检索能力和实验动手能力,也巩固了课程所学内容,夯实了理论基础,实现了理论与实践相结合。 此次实验面临的问题主要是如何绘制特殊图形。在对题目给定的图形进行了一定的分析后,我通过在网上进行检索以及查阅、揣摩老师提供的参考图片,最终在Mathematica中基本实现了题目中所要求的相应图形,完成了此次实验。 虽然我目前还只掌握了Mathematica的部分功能,甚至还有很多的功能都了解得不够深入、不够透彻,但是我相信通过不断的学习和练习,我一定能慢慢发现和学会 Mathematica的其他潜在功能。同时,我还将不断使用Mathematica解决一些现实问题,让Mathematica发挥出它的价值。 老师提供的课件和相关资料比较有用,此次实验进行得较为顺利。无进一步建议。 | |||||||||||||||||||||||||||||||||||
第四部分 评分标准(教师可自行设计)及成绩
教师签名: 。 | |||||||||||||||||||||||||||||||||||
实验报告-实验五 动态模型的建模分析
本文发布于:2024-12-26 22:58:48,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
- 上一篇: 中班体育游戏教案《好玩的沙包》
- 下一篇: 大班科学教案彩的泡泡教案及教学反思
实时天气 2024-12-26 21:55:36发布
北京
-
温度:-5℃~2℃
北风3-4级
-
明天晴
2 西北风
-
后天晴
5 西南风
-
大后天晴
5 西风
发布评论