1、个人收集整理 勿做商业用途一 课程设计的目的计算方法是信息与计算科学专业的一门核心基础课。计算方法是研究各种数学问题求数值解的方法,离散化、递推化是它处理问题的主要手段,误差分析是它研究的核心问题,以计算机和数学软件为工具进行数值计算是它的显著特征。通过这门课程的学习与课程设计,为今后进行科学计算,对实际问题进行数值的或者图像的仿真模拟打下良好的实验基础。该课程设计的主要目的如下:1 能够运用所学的计算方法的理论和知识,在MATLAB下编程解决实际问题时。2 利用MATLAB下的GUI,开发一些应用程序软件包。3 培养一定的独立分析问题、解决问题的能力.二 课程设计要求1 分析题目,独立完成设
2、计概要。2 完整地给出主要功能模块的设计思想、方案和详细设计,并阐述理由。3 系统的开发与实现采用基于MATLAB的GUI技术。3 准备测试数据并上机调试通过。4 书写设计报告。设计报告应包括下面几个部分:(1)封面(填写设计题目、学院、专业、班级、学号、姓名)(2)问题的描述(细化设计的目的和要求)(3)基本功能(描述自己编制的程序可实现的基本功能)(4)设计概要(5)程序流程图(7)程序使用的说明(用户级接口或者重要的公有成员函数的用法说明(参数意义,返回值,注意事项,错误信息及其诊断,提供必要的例子或者图片帮助用户理解)(8)测试数据列表(9)测试结果(10)设计总结(心得体会,对设计或
3、者论文的评价,设计或者论文中存在问题及改进意见)(11)致谢(对指导教师、同学、参考文献作者及网络资源提供者的感谢)(12)参考文献(13)源代码(分文件列出(类的头文件在前,源文件在后)代码及必要的注释)说明:具体课程设计论文撰写,请参考论文模板。三 课程设计选题A类选题 数值计算软件包设计与开发(一) 插值软件包【问题描述】设计一个集成多种插值多项式逼近被插函数的数值与图像显示的软件包。【基本要求】用基于MATLAB下的GUI技术,设计相应的界面与程序。 (二) 常微分方程数值解软件包【问题描述】设计一个集成多种求常微分方程数值解方法的软件包.【基本要求】用基于MATLAB下的GUI技术,
4、设计相应的界面与程序。 (三) 数值积分软件包【问题描述】设计一个集成多种数值积分方法数值计算软件包.【基本要求】用基于MATLAB下的GUI技术,设计相应的界面与程序。 (四) 非线性方程求根软件包【问题描述】设计一个集成多种求非线性方程根方法的软件包。【基本要求】用基于MATLAB下的GUI技术,设计相应的界面与程序。 (五) 线性方程组求解软件包【问题描述】设计一个集成多种迭代法求线性方程组解的软件包。【基本要求】用基于MATLAB下的GUI技术,设计相应的界面与程序。B类选题 典型应用问题的求解(一) 利用蒙特卡罗方法计算圆周率【问题描述】蒲丰(Buffon)是法国著名学者,于1777
5、年提出了用随机投针试验求圆周率的方法。在平面上画有等距离为的一些平行直线,向平面上随机投掷一长为()的针.设投针次数为,针与平行线相交次数为.试求针与一平行线相交的概率.令表示针的中点,表示针投在平面上,点与最近一条平行线的距离,表示针与平行线的交角(如下图所示)。 显然 ,.随机投针的概率含义是:针的中点与平行线的距离均匀地分布于区间内,针与平行线交角均匀分布于区间内,与是相互独立的。而针与平行线相交的充分必要条件是:。我们把投掷针到平面上理解为向区域G内“均匀分布”地投掷点,而求点落入G中的概率,显然,这一概率为此此表明:可以利用投针试验计算值.当投针次数充分大且针与平行线相交次,可用频率
6、作为概率的估计值,因此可求得的估计值为【基本要求】1 设计一个界面,用于参数n,l,a的输入.2 点落入区域G的演示3 m的动态显示。4 给出的近似值.【系统实现】1 投针状态的生成,可由两个随机数表示。2 当投针次数n过大时,系统运行时间较长,可考虑使用进度长来显示所需运行的时间。(二) 利用蒙特卡罗计算二重积分【问题描述】设积分区域为矩形区域,被积函数为连续函数。利用蒙特卡罗方法,计算二重积分的近似值。【基本要求】1 给出具体的计算模型。2 设计一个界面,输入相应的参数,输出二重积分的近似值.(三) 光盘存储问题【问题描述】设有n个文件,每个文件所需的存储空间为不超过1G。欲将这n个文件存
7、入容量为2G的光盘,应选择多少张光盘,又该如何安排文件来进行存储,使所有光盘剩余空间之和达到最小。这是一个多背包问题,可考虑使用贪心法来求解。【基本要求】1 建立文件存储光盘的策略模型。2 设计一个界面,可以输入所有文件存储容量,单张光盘容量。输出每张光盘所存储文件的容量。(四) 进水与出水问题研究水池内有2000m3盐水,含盐2kg,现以每分钟6 m3速度向池中注入含盐率为0.5 kg/m3的盐水,同时又以每分钟4 m3的速度从池中抽出搅拌均匀的盐水,每隔10分钟计算池中的水的体积、含盐量和含盐率。试用计算机模拟实际过程,将摸拟数据列表,从表中查出含盐率达到0.2kg/ m3时所用的时间。(
8、五) 分形图形的描绘【问题描述】组成部分以某种形式与整体相似的形体,称为分形。由生成元产生的分形是一种规则分形,是数学家们按一定规则构造出来的,相当于物理学中的模型,人们用这些人为构造出来的分形的性质来说明自然界中的实际问题。早在一百多年前,就有一些数学家构造出一些边界形状极不光滑的图形,这些图形长期以来被视为“病态”图形,只有当人们需要用到反例时才想到它们。这类图形有Cantor三分集、Koch雪花曲线、Weierstrass函数曲线、Sierpinski垫片等,它们的构造方式都有一个共同特点,即最终图形F都是按照一定规则R通过对初始图形F0不断修改得到的。找出绘制这些分形图像的方法,绘制这
9、些经典的分形图像。根据生成分形图像的规律,你创作出一至两幅分形图形。【基本要求】1 设计一个绘制常见分形图像的界面,并绘制这些经典的分形图形.2 总结分形图像的生成规律,自行设计分形图像。(六) 利用插值原理进行图像放大【问题描述】将一个图像放大,一般需要增加图像的像素点,而像素点的增加,可以根据插值原理来选取。【基本要求】1 对一幅图像,建立不同插值方法进行放大的处理界面。2 给出原图像经过放大后的图像。3 对各种插值方法放大图像的优缺点进行评价.C类选题 仿真系统设计与开发(一) 拉格朗日中值定理的仿真证明【问题描述】若在上连续,在上可导,则至少存在着一点,使得这是数学分析中著名的拉格朗日
10、中值定理。给出这一定理的计算机仿真证明。【基本要求】1 设计界面,输入函数和闭区间,演示拉氏中值定理的几何意义.2 给出计算近似值的计算方法,并将它输出在屏幕上。(二) 哥西中值定理的仿真证明若,在上连续,在上可导,且,则至少存在着一点,使得这是数学分析中著名的哥西中值定理.给出这一定理的计算机仿真证明。【基本要求】1 设计界面,输入函数、和闭区间,演示哥西中值定理的几何意义。2 给出计算近似值的计算方法,并将它输出在屏幕上。(三) 定积分第一中值定理的仿真证明若在上连续,则至少存在着一点,使得这是数学分析中著名的定积分中值定理。给出这一定理的计算机仿真证明.【基本要求】1 设计界面,输入函数
11、和闭区间,演示定积分中值定理的几何意义。2 给出计算近似值的计算方法,并将它输出在屏幕上.(四) 定积分第二中值定理的仿真证明若在上连续,则至少存在着一点,使得这是数学分析中著名的定积分中值定理.给出这一定理的计算机仿真证明。【基本要求】1 设计界面,输入函数和闭区间,演示定积分中值定理的几何意义。2 给出计算近似值的计算方法,并将它输出在屏幕上。(五) 龙格现象的演示【问题描述】对于龙格函数,在定义区间上,根据插值条件,其中,,作拉格朗日插值多项式。当时,龙格函数图像与其拉氏插值函数图像,在区间端点处,具有十分显蓍的差异.这是计算方法中一个十分有名的实验,称着龙格现象。试对于任意函数,定义区
12、间a,b以及n,演示是否存在着这种现象.【基本要求】设计界面,输入函数、闭区间和n,演示是否存在着龙格现象.(六) 闭区间的有限覆盖定理的仿真证明【问题描述】如果开区间的集合S盖住了一个有界的闭区间I,那么从S中必可选出有限个区间,它们也可以盖住闭区间I。这就是数学上著名的有限覆盖定理。对于某个给定的闭区间I和一系列开区间集合S,判断S是否可覆盖I.若S可覆盖I,则采用某种挑选策略,选出有限个区间,使它们可盖住I。【基本要求】1 设计被盖闭区间I,覆盖开区间集合S的输入界面.2 寻找S能否盖住I的判定条件.3 当S可盖住I时,寻找从S中挑选有限个开区间的策略(如使总区间的长度最小),使它们能覆
13、盖住I4用图像来演示其覆盖的状态,为使所演示的图像更逼真,应设置绘图的比例.(七) 埃特金加速法的演示【问题描述】将一般迭代通过埃特金加速法,将它改造成一个加速收敛的方法。并对其是否收敛,以及加速效果加以演示。【基本要求】设计界面演示其收敛性和收敛效果。(八) 用正交函数作最小二乘拟合的演示【问题描述】对于给定的数据点集以及权函数,构造带权正交的多项式,其中, ,而系数,满足以下关系式,所得到的最小二乘拟合函数为其中,系数满足以下关系式 这里,n可以事先给定,也可以通过仿真实验,确定n值.【基本要求】设计界面演示用最小二乘法拟合出来的多项式对离散数据点的拟合效果,离散数据点的输入,n值的输入以
14、及最小二乘拟合函数的输出。(九) 高尔顿钉板试验问题【问题描述】四级高尔顿钉板如下图所示,10个圆点示意10颗钉子,分别在1,2,3,4层上钉上1,2,3,4颗,下层钉了位于上层两颗钉子的中央位置,有一个球从顶部滑下,碰到第一层钉子将各以1/2的概率向左或向右滑入第二级,再滑至第三级,等等,一个一个地投放某个数量(例如100个)的球,滑入底层的收集槽内后,由概率得知将按一定的分布(二项分布)B(4,1/2)的近似图形堆积.我们希望能用动态图形在计算机屏幕上示意X的n次独立重复试验是二项分布B(n,1/2),即,这里,的意义是一小球钉板底层(标有0,1,2,3,4)的槽的号数,再用对分布函数和假
15、设检验法验证试验结果的正确性。【基本要求】设计界面演示高尔顿板实验,统计出相应数据,检验它是否服从B(4,1/2)分布。(十) 处处连续但处处不可微函数演示【问题描述】大约1860年前后,数学史上发生了一件引人注目的事情,魏尔斯特拉斯(Weierstrass。K)发现了在上处处连续但处处不可微的函数,他的例子于1874年由他的学生发表:其中,是正奇数且(例如,),这个函数有时称为魏尔斯特拉斯函数。继魏尔斯特拉斯之后,不断有人举出这样的例子,其中,被公认为形式与思想都比较简单的是,由范。德。瓦尔登(Van der Waerden。B.L。)于1930年给出的下述函数:对,设,即与离它最近的整数点
16、的距离,其中表示不超过的最大整数.的图象是以1为周期的折线,在0,1上的端点是(0,0)(1/2,1/2)(1,0)。对,,则在R上连续但处处不可微。1918年,克诺普(Knopp,K。)在一篇论文中给出了构造无处可微连续函数的一般方法,发现函数可以有处处连续但无处可微这样的反常性质,对于区分连续性与可微性,加深对函数本身的了解有重大推动作用.对诸如此类的病态函数的研究直接促进了实变函数论的建立.现在已经知道,处处连续但无处可微的函数是非常多的,它们的集合是贝第2范畴集.通过绘制这类病态函数的图象,直观地揭示其处处连续但处处不可微的特性,使学生能更好地理解函数的连续性与可微性。【基本要求】1
17、设计界面,输入相应参数,作这类病态函数图象.2 设计一个对图象局部可进行放大的功能,以便与读者更仔细地观察这类病态函数的任意点附近的细节。(十一) 黎曼定理的仿真证明【问题描述】在级数的收敛理论中,黎曼曾证明了这样的一个具有挑战性的定理:设有任意项级数,如果它条件收敛,则改变级数项的位置,可使改变后的级数发散。对于任意给定的实数,适当改变级数中项的位置,可使其级数收敛于。这一定理的发现与证明,对解决数学史上的第三次危机(即由微积分所带来的危机),提供了极大的帮助。交错级数是一个著名的条件收敛级数,以此例作为具体对象,研究黎曼定理的正确性。【基本要求】1 从理论上证明:改变条件收敛级数的某些项的
18、位置,可使其发散。2 设计一种算法说明:对于给定的实数,总可以找到一个重排级数,使它收敛于。并在计算机上实现你所设计的算法。D类选题 数值计算方法研究(一) 达芬奇方程的研究【问题描述】1225年,达芬奇研究了方程并得到了它的一个根。没有人知道他用什么方法得到的,分别对上述方程建立迭代法1 ,2 ,分别研究这两个迭代法的收敛性,收敛速度以及用埃特金加速的可能性,通过数值计算加以比较.【基本要求】1 完成问题描述中所提出的要求。2 对该问题尽可能地给出你所研究的一些结果或想法。(二) 用算法来实现除法计算的研究【问题描述】有些专用单板控制计算机上没有除法指令,需要实际算法计算(a0),他等价于求
19、解方程。对于此方程建立牛顿迭代公式,分析其收敛性,找出其收敛域。【基本要求】1 完成问题描述中所提出的要求。2 对该问题尽可能地给出你所研究的一些结果或想法.(三) 找出一维搜索的最佳方法【问题描述】假设在a,b区间内只有一个根(可以是重根),求解该方程等价于在a,b区间找的极小值点。设计一种寻找极小值点的方法,使得计算的次数尽可能少,并完成数值实验。你能从理论上证明你的搜索方法最好吗?【基本要求】1 给出寻找极小值点的搜索方法。2 给出具体算法。3 从数值计算实验上,比较两分法与你发现的方法的优劣。(四) 用数值方法估计收敛阶【问题描述】用割线法,可以求方程在a,b区间内的根设计一个数值实验
20、估计该算法的收敛阶(理论值为)。【基本要求】1 对于某个具体的以及根,给出其割线迭代法的表达式。2 假设收敛阶为,由,取对数,具体计算,然后,通过最小二乘拟合,求出与(五) 牛顿迭代法收敛域的结构与“局部”收敛性【问题描述】牛顿法可以直接用为求解复数方程在复平面上的三个根,它们分别是,。选择中心位于坐标原点边长为2的正方形内的点为初始值,把收敛到三个不同根的初始值分别标上不同颜色,只要计算足够多的点,你将得到关于牛顿迭代法收敛域的彩色图片。【基本要求】1 实现上述实验,并对实验结果给出你的解释。2 可否将这种研究方法用来研究其他迭代法。 (六) 混沌现象研究【问题描述】迭代公式取0。2 ,4中
21、不同的值,并取进行计算.画出和(k50)之间的关系图,你将对于迭代法有更深刻的认识.【基本要求】1 给出迭代公式的实际数学背景。2 查阅相关资料,理解迭代问题中的另一些相关概念:如周期点。(七) 利用混沌对文本加密【问题描述】利用迭代取0.2 ,4中不同的值,并取进行计算.的敛散性分布是混沌的,利用这一特性,设计一段加密程序。【基本要求】1 设计加密程序与界面.2 给出对文本加密后的状态.(八) 利用混沌对图像加密【问题描述】利用迭代取0.2 ,4中不同的值,并取进行计算。的敛散性分布是混沌的,利用这一特性,设计一段加密程序。【基本要求】1 设计加密程序与界面.2 显示对图像加密后的状态。 (
22、九) 数值研究最佳均方逼近多项式的收敛性质【问题描述】取函数或,在-1,1上以勒让德多项式为基函数,对于构造最佳均方逼近多项式,令,把与的曲线画在一张图上,令画出把与的曲线,做出与之间的最小二乘曲线,能否提出关于收敛性的猜测。【基本要求】1 求可以利用MATLAB中的内建函数。(十) 随机数与伪随机数【问题描述】随机数的概念的简介:考虑(0,1)中的一个实数序列,如果这些数杂乱地分布于整个区间上,且其排列次序也是无规则的,就称这一序列是随机的.例如,若序列是单调递增的,则它不是随机的;若,其中是一个连续函数,则也不是随机的(尽管它看起来可能是随机的).多数计算机系统都有随机数发生器,由计算机生
23、成的随机数显然不可能是真正随机的.因为它们的生成方式是完全确定的,但由于这样产生的序列看起来是随机的,而且确能达到某些随机数的统计检验,故称为“伪随机数”.例如下面的整数列,它“看起来”限随机1,13,14,27,10,6,16,22,7,29,5,3,事实上,该数列是由 (1)生成的,其中a=13,c=0,m=31,而种子。这里的运算mod m的意义为“除m取余数,如果再将它的结果除以m则得到区间(0,1)上的均匀分布的小数0.0323, 0.4194, 0.4516, 0。8710, 0.3226, 0.1935, 0。5161,这样生成的数总是有限的,对于m=31的情况,共有30个数,最
24、小的数是1/31,最大的数大约为30/31.生成伪随机数目前已有多种算法.如果在(1)式中取a=65539,c=0,m=2 31是60年代IBM公司使用的算法。由于a=216 + 3,所以该算法在32位系统上高速实现,对当时的计算机而言,速度是首要的。而如果在(1)中取a=75=16807c=0m=2 31 1=2147483647则是下面常用的算法。算法 取一个整数,满足。对于令为除的余数上述算法中总满足,称为算法的种子.由此生成的数列.算法中起重要作用的数2 31 1=2147483647是著名的Mersenne质数,1和2 31 1之间的任何一个整数都可以取成算法中的种子。它生成的最大和
25、最小数分别为0.00000000046566和0.99999999953434.算法所生成的数经过m-1个之后开始重复,也就是说该算法的周期为m1。Matlab中也有几个生成随机数的函数.积分数值计算通常要使用的函数“rand”,它产生均匀分布在(0,1)区间上的随机数,该函数在Matlab5。0之前的版本中使用过(其算法就是以上算法)。1995年开始的Matlab使用了完全不同的随机数生成方法,其特点是周期更长。【基本要求】1 实现随机数生成算法。2 参考吴文虎程序设计基础一书中的最后的综合习题.(十一) MATLAB绘图方法的研究【问题描述】在MATLAB下绘图,一般都是利用数学方法来实现
26、的。例如,根据所给定的函数表达式,绘制一元函数的平面图象,二元函数的空间图象.还可以利用迭代方法,绘制分形图象,混沌图象。利用一些变换公式,绘制一些连续变换的几何图象等等。对MATLAB下绘制图象的方法,进行逐一的研究与介绍。给出这些图象描绘的数学方法,以及在MATLAB下绘制图象的主要技巧。【基本要求】1 介绍各类图象的数学原理,在MATLAB下绘制图象时,所涉及到的主要技术.E类选题 算法应用与研究(一) MATLAB与C+的递归深度比较研究【问题描述】设有角夫函数其复合函数的定义如下:,,,在MATLAB与C+中,分别定义递归函数f(n,x),n表示复合的重数,x表示正整数自变量。【基本
27、要求】1 找出在MATLAB与C+中,分别允许的最大n值。2 利用数据结构的知识,讨论这种递归运算的时间与空间复杂度,并利用这些复杂度解释为什么递归运算的速度较慢,以及递归深度会有所限制。3 若将该函数改造成为非递归的形式,又该如何定义,它的时间复杂度与空间复杂度又是多少,其运算的速度较递归形式更快吗?而n的取值理论上是否有限制?(二) 汉诺塔求解步骤的字符显示【问题描述】参见吴文虎教材。【基本要求】1 设计界面,输入汉诺塔中盘子数量,输出汉诺塔移动的步骤,以及总移动次数。(三) 汉诺塔求解步骤的动画显示【问题描述】参见吴文虎教材。【基本要求】1 设计界面,显示汉诺塔各柱间的盘子数量以及移动状
28、态。(四) 循环赛日程表【问题描述】设有个运动员要进行网球循环赛.现要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他n-1个选手各赛一次;(2)每个选手一天只能赛一次;(3)循环赛一共进行n-1天。【基本要求】1 将比赛日程表设计成有n行n1列的表,在表中的第i行和第j列处填入第i个选手在第j天所遇到的选手。2 按分治策略,可以将所有的选手分为两半,n个选手的比赛日程表就可以通过为n/2个选手设计的比赛日程表来决定。递归地用这种一分为二的策略对选手进行分割,直到只剩下2个选手时,这时只要让这2个选手进行比赛就可以了. (五) 工作分配问题【问题描述】设有件工作分配给个人。将工作分配
29、给第个人所需的费用为。试设计一个算法,为每一个人都分配1件不同的工作,并使总费用达到最小.【基本要求】1 提供关于费用矩阵C的输入窗口2 根据回溯算法,设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。3 其工作分配方案可否设计成直接在费用矩阵C的相应元素中标识。(六) 邮局选址问题【问题描述】在一个按照东西和南北方向划分成规整街区的城市里,年居民点散乱地分布在不同的街区中。用坐标表示东西向,用坐标表示南北向。各居民点的位置可以由坐标表示。街区中任意两点和之间的距离可以用数值度量.居民们希望在城市中选择建立邮局的最佳位置,使个居民点到邮局的距离总和最小.【基本要求】1
30、输入n个居民点的位置坐标2 设计一个算法,计算n个居民点到邮局的距离总和的最小值。(七) 最优服务次序问题【问题描述】设有个顾客同时等待一项服务。顾客需要的服务时间为,。应如何安排个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是个顾客等待服务时间的总和除以。【基本要求】1 输入n个顾客需要服务的时间2 设计一个算法,使n个顾客平均等待时间达到最小.(八) 汽车加油问题【问题描述】一辆汽车加满油后可行驶公里,旅途中有k个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少.【基本要求】1 输入一辆车加满油后可行驶的公里数n,沿途的加油站个数k以及每个加油站位置所在的
31、公里数。2 对于这些输入数据,设计一个算法,输出需停靠在哪几个加油站加油。 (九) 删数问题【问题描述】给定n位正整数a,去掉其中任意kn个数字后,剩下的数字按原次序排列组成一个新的正整数。设计一个算法,找出剩下数字组成的新数最小的删数方案。【基本要求】1 输入n位正整数a,去掉数的个数kn2 设计一个算法,输出剩下的数字所组成的新数.(十) 区间覆盖问题【问题描述】设是x轴上的n个实数点,用固定长度的闭区间覆盖这n个点,至少需要多少个这样固定长度的闭区间?【基本要求】1 输入,以及用于覆盖的区间固定长度。2 设计一个算法,输出所需要的区间个数,以及所有覆盖区间。 (十一) 区间相交问题【问题
32、描述】给定轴上个闭区间,去掉尽可能少的闭区间,使剩下的闭区间都不相交。【基本要求】1 输入n个闭区间的左右端点值。2 设计一个算法,计算去掉区间的个数,输出所第剩下的区间.(十二)机器分配问题 【问题描述】某工业生产部门根据国家计划的安排,拟将某种高效率的5台机器,分配给所属的A、B、C3个工厂,各工厂在获得这种机器后,可以为国家盈利如下表所示:表1 盈利表(单位:万元)SABCSABC000039111113544121112271065131112问:这5台机器如何分配给各工厂,才能使国家盈利最大?其中,第一列S为机器台数,A,B,C3列为3个工厂在拥有不同台数的机器时的盈利值。【基本要求
33、】1 建立数学模型,设计求解算法,求出最优解。(十三) 连续邮资问题 【问题描述】假设国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,在1张信封上可贴出从邮资1开始,增量为1的最大连续邮资区间.例如,当n=5和m=4时,面值为(1,3,11,15,32)的5种邮票可以贴出邮资的最大连续邮资区间是170。【基本要求】1 建立数学模型,设计求解算法,求出最优解。(十四) 印刷任务安排 【问题描述】某一印刷厂有6项加工任务,对印刷车间和装订车间所需时间见表411。表2 加工时间表(时间单位:天)任务J1J2J3J4J
34、5J6印刷车间31252911装订车间8109631完成每项任务都要先去印刷车间印刷,再到装订车间装订。问怎样安排这6项加工任务的加工工序,使得加工总工时最少。【基本要求】1设计求解算法,求出最优解。(十五) 拿扑克牌游戏 【问题描述】54张扑克牌,两个人轮流拿牌,每人每次最少取1张,最多取4张,谁拿最后一张牌谁输.编写摸拟计算机先拿牌且必胜的算法。【基本要求】1 给出这一博奕问题的博类点。2 人每次拿牌张数随机生成。3 输出人与机器每次拿牌的状况。(十六) 真分数的埃及分数分解 【问题描述】把一个真分数表示为埃及分数之和的形式。所谓埃及分数,是指分子为1的分数,一个真分数的埃及分数表示方式肯
35、定是不唯一的,例如7/8=1/2+1/3+1/247/8=1/8+1/8+1/8+1/8+1/8+1/8+1/8设计一个算法,快速地找到一个用最少埃及分数来表示一个真分数.【基本要求】1 对于任意输入的真分数,能输出表示它的埃及分数以及其个数。 (十七) 取数游戏 【问题描述】有2个人轮流从2n个数中进行取数,假设取数者只能看到最左边或最右边的两个数,所取数之和大者为胜。设计一个算法,让计算机先取并获胜,摸拟取数过程。例如:数据为:6,16,27,6,12,9,2,11,6,5,用贪心策略,每次两人都取两边数中较大的一个数,先取者胜:以A先取为例.取数结果:A 6 27 12 5 11 =61 胜B 16 6 9 6 2 =39又例如:数据为:16,27,7,12,9,2,11,6,仍用贪心策略,先取者败(A先取)取数结果:A 16 7 9 11 =43B 27 12 6 2 =47 胜其实,若只能看到两边的数据,则此题无论是先取还是后取,都没有必胜的策略。若能看到全部2n个数,取数仍坚持每人每次取两边的数,可采用近似贪心算法,恰当时候专门取一次小的数,也许会有获胜的必胜策略或者算法.【基本要求】1 给出这一问题求解中的数学模型以及取数策略。2 对于任意输入的2n个数,根据你的模型与策略,输出取数结果。18