使用MATLAB进行离散数学课程的项目构思?

时间:2009-07-30 17:49:34

标签: matlab

一位教授让我帮忙制定一个大学项目的规范。 当学生应该了解编程的基础知识时。

教授是一名数学家,在其他编程语言方面经验不足,所以它应该在MATLAB中。

我想要一些项目的想法。该项目应该

  1. 持续约1至2个月
    • 单独完成
    • 网页界面会很棒
    • 没有必要深入数学,但有些会很好
    • 使用数据库(或在文件中存储数据)
  2. 什么样的项目会让学生兴奋?

    如果您有任何其他提示我会很感激。

    更新:学生是二年级学生,已经学过矢量微积分。这个项目是为期一年的离散数学课程。

    更新2:课程涵盖的主题是

    1. 形式逻辑
    2. 证明,递归和算法分析
    3. 集合和组合
    4. 关系,功能和矩阵
    5. 图形和树木
    6. 图形算法
    7. 布尔代数和计算机逻辑
    8. 算术,计算和语言建模
    9. 它将基于这本书Mathematical Structures for Computer Science: A Modern Approach to Discrete Mathematics by Judith L. Gersting

8 个答案:

答案 0 :(得分:8)

一般建议:

The MathWorks有许多教学资源可以为课程项目提供一些想法。一些示例链接:

具体建议:

我发现有趣的非线性动力学研究生项目之一是Lorenz oscillators。 Lorenz振荡器是三个变量的非线性系统,可以表现出混沌行为。这样的系统将为学生介绍数值计算提供机会(iterative methods用于模拟微分方程系统,稳定性和收敛等)。

这个项目最有趣的事情是我们使用Lorenz振荡器对信号进行编码和解码。这种“加密通信”方面非常酷,并且基于以下期刊文章:

  

Kevin M. Cuomo和Alan V. Oppenheim,   同步混沌与应用的电路实现   通讯物理评论   信件 71(1),65-68(1993)

本文讨论了混沌通信系统的硬件实现,但等效的软件实现应该足够简单(并且更容易让学生实现!)

此类项目的其他一些有用方面:

  • 系统的行为可以在二维和三维图中可视化,从而使学生在MATLAB中展示了许多图形工具(PLOTPLOT3,{{3} },COMET等。)。
  • 可以从文件中读取音频信号,使用Lorenz公式加密,写入新文件,然后再次解密。您甚至可以让每个学生使用他们的Lorenz振荡器代码加密信号并将其交给另一个学生解密。这会将它们引入各种文件操作(COMET3FREADFWRITESAVE等等,您甚至可以将它们引入LOAD
  • 您可以向学生介绍在MATLAB中使用working with audio data file formats命令,它允许您PUBLISH(如HTML或Word文档)。这将教会他们为MATLAB代码制作有用的帮助文档的技术。

答案 1 :(得分:3)

我发现实施和可视化Dynamical systems非常棒 介绍编程和一个有趣的分支 应用数学。因为人们可以在这些系统中看到“生命”, 我们的学生真的很喜欢这个实用的模块。

我们通常从可视化一维吸引子开始,这样我们就可以 用当前的状态覆盖进化规则/变化率 系统。这样你就可以教授计算方面(整合系统)和 可视化,以及实现中的两者分离(在简单的层面上,刷新 每个第n个计算步骤都有图形,但是在C ++中导致线程,这里不确定MATLAB的功能。)

接下来我们添加噪声,然后在线性吸引子上添加一个S形非线性。我们将此扩展与版本控制的介绍(我们为此使用沙箱SVN存储库)结合起来: 学生首先必须创建分支,修改进化规则然后合并 它回到了HEAD。

当进入2D时,您可以简单地从旋转开始并将其修改为Hopf振荡器,并通过随时间变形网格或在以不同点开始时使用3D进行可视化。您还可以在3D中可视化分叉图。因此,您再次将3D绘图等通用MATLAB技能与数学结合起来。 要链接其他主题,请浏览维基百科:您可以引入猎人/捕食者模型,混乱系统,物理系统等等。

我们通常不会在MATLAB中教授面向对象的编程,尽管它可以在动态系统设置中轻松组成您自己的用例。 在介绍继承时,我们已经转向C ++了,我再次没有意识到MATLAB的功能。

回到你的五点:

  • 持续时间很容易调整,因为简单的一维吸引子可以 快速完成,从那时起,扩展是充足和模块化的。
  • 我们将此作为一项单独任务,但允许并鼓励学生讨论。
  • 关于网络界面我很茫然:你究竟想到了什么,为什么会这样 重要的是,它会给作业增加什么,它与学习MATLAB有什么关系。 我建议放弃这个。
  • 复杂性:一个简单的吸引子很容易被理解,但天空是极限:)
  • 使用数据库确实与配置文件有很大不同。至于第一个,那里 是一个用于从MATLAB访问数据库的数据库工具箱。很少有机构拥有许可证,除此之外:这个恕我直言不属于这样的课程。我建议引入配置文件的概念,例如:关于吸引子的位置和强度,以及后来系统各自的属性。

所有这些说,我至少还会告诉你的教授(和你的学生!)Python正在崛起,反对MATLAB。我们正在使用我们的教程开始使用Python,但我知道是否有人想要坚持熟悉的内容。

另外,我们实际上需要以后的科学内容,所以对你的用处可能取决于你的课程与哪个部门有关。

答案 2 :(得分:2)

很多事情都有可能。

第一个想到的例子是建立公共交通网络(您所在城市的网络,包括地下,公共汽车,有轨电车......)。它由加权有向图表示(例如,您可以使用稀疏矩阵来表示它)。

例如,您可以要求他们计算从一个站到另一个站的最短路径(例如,Moore-dijkistra算法)并显示它。

因此,对于学生来说,要做的几个步骤是:

  • 为网络选择合适的表示(可能是某些对象表示站点和线路的属性,以及网络的稀疏矩阵)
  • 加载所有数据(您可以在XML文件中提供数据)
  • 能够绘制网络(因为您将放置工作站的坐标)
  • 计算从一个点到另一个点的最短路径并以漂亮的方式显示
  • 创建一个前端(使用GUI)

当然,通过增加连接时间(当你从一条线路换到另一条线路时)可能会很复杂,要求几个选项(最短路径和最小连接数,请考虑等待火车/公共汽车的时间。 ,...)

详细程度取决于学生的水平以及他们可以花在上面的时间(可能非常简单,或非常现实)

答案 3 :(得分:2)

你想用Web界面和数据库做一个项目,但没有任何严肃的数学......你是在MATLAB中做的吗?您是否理解MATLAB专门用于“深度数学”,而不是用于Web界面或数据库?

我认为如果这是一个离散数学课程的介绍,你应该做一些涉及离散数学的事情,而不是浪费学生的时间,因为他们用这种语言学习一堆他们永远不会真正使用的东西。

为什么不做涉及音频的事情?我做了一个本科项目,我们使用MATLAB自动匹配不同的曲调和DJ之间的混音。整个课程花了整个学期,但你可以做一部分。 wavread()等内置且易于使用。

或使用finding Waldo进行cross-correlation之类的简单图像处理。

也许做一些涉及加密的事情,让他们破解一个简单的加密方案,感觉像黑客。

答案 4 :(得分:2)

MATLAB最初是作为MATrix LAB开始的,所以也许专注于线性代数中的问题是很自然的。

使用matricies的离散数学问题包括:

  1. 生成树木和最短路径
  2. 婚姻问题(二分图)
  3. 匹配算法
  4. 网络中的最大流量
  5. 运输问题
  6. 请参阅Gil Strang's "Intro to Applied Math"Knuth's "Concrete Math"了解相关信息。

答案 5 :(得分:0)

你可以看一下:http://www.mathworks.com/academia/student_center/tutorials/launchpad.html 在MathWorks网站上。互动教程(第二个链接)很受欢迎。

- 洛伦

答案 6 :(得分:0)

我一直认为在毕业学校分配的那个是一个很好的选择 - 一个magnetic lens模拟器。数学并不是完全压倒性的,所以你可以更专注于学习语言,它是图形功能的一个很好的介绍(例如,动画通过镜头的轴外电子的路径)。

答案 7 :(得分:0)

db I / O和花哨的接口在离散数学课程中不合适。

我的matlab实验室通常是算法实现,图表作为输出,简单的文件输入。

材料有多难?在matlab中图像处理真的很简单,你能做一些离散的2D过滤吗?模糊和东西。 http://homepages.inf.ed.ac.uk/rbf/HIPR2/filtops.htm