首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用MATLAB实现离散数学课程的设计思想?

利用MATLAB实现离散数学课程的设计思想?
EN

Stack Overflow用户
提问于 2009-07-30 17:49:34
回答 8查看 8.4K关注 0票数 9

一位教授要求我帮助制定一个大学项目的说明书。到那时,学生应该知道编程的基本知识。

这位教授是一位数学家,在其他编程语言方面没有什么经验,所以应该使用MATLAB。

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

  1. 持续约1至2个月
    • 单独完成
    • 有网络接口就太棒了
    • 不一定要深入数学,但有些会很棒
    • 使用数据库(或将数据存储在文件中)

什么样的项目会让学生们兴奋?

如果你还有其他建议我会很感激的。

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

更新2:本课程涵盖的主题包括

  1. 形式逻辑
  2. 算法的证明、递归及分析
  3. 集与组合
  4. 关系、函数与矩阵
  5. 图与树
  6. 图算法
  7. 布尔代数与计算机逻辑
  8. 建模算法、计算和语言

它将基于这本书计算机科学的数学结构:朱迪思·格斯廷对离散数学的一种现代探讨

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-07-30 18:16:18

一般建议:

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

  • MATLAB中央博客,特别是罗琳的一些帖子,包括乐高思想风暴在教学中的运用MATLAB教学网络研讨会 (注意:您必须注册才能看到网络研讨会)
  • 课程交流:课程材料的存储库
  • MATLAB与Simulink的教学:您可能会发现许多其他的链接很有用

的具体建议:

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

这个项目最有趣的地方是,我们使用Lorenz振荡器来编码和解码信号。这个“加密通信”方面真的很酷,并且基于以下期刊文章:

KevinM.Cuomo和AlanV.Oppenheim,电路实现同步混沌与应用于通信,物理评论信函71(1),65-68 (1993年)

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

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

  • 该系统的行为可以在二维和三维图形中可视化,从而使学生能够在MATLAB中使用大量的绘图工具(绘图PLOT3彗星COMET3等)。
  • 音频信号可以从文件中读取,使用Lorenz方程加密,然后写入新文件,然后再解密。你甚至可以让每个学生用他们的Lorenz振荡器代码加密一个信号,并把它给另一个学生解密。这将向它们介绍各种文件操作(弗瑞德佛瑞特保存加载等),甚至可以将它们介绍给使用音频数据文件格式
  • 您可以向学生介绍如何在MATLAB中使用出版命令,该命令允许您使用格式化M-文件并将它们发布到各种输出类型 (如格式化M-文件并将它们发布到各种输出类型或Word文档)。这将教他们如何为他们的MATLAB代码制作有用的帮助文档。
票数 8
EN

Stack Overflow用户

发布于 2009-08-06 11:48:26

我发现动力系统的实现和可视化非常适合于介绍编程和应用数学的一个有趣的分支。因为我们可以在这些系统中看到‘生活’,我们的学生真的很喜欢这个实用模块。

我们通常从可视化一个一维吸引子开始,这样我们就可以根据系统的当前状态来叠加演化规律/变化率。通过这种方式,您可以教授计算方面(集成系统)和可视化,以及两者在实现中的分离(在一个简单的层次上,在第n个计算步骤中刷新图形,但是在C++中导致线程,不确定这里的MATLAB功能)。

然后,我们在线性吸引子中加入噪声,然后再加入一个σ型非线性。我们将此扩展与版本控制介绍(为此使用沙箱SVN存储库)相结合:学生首先必须创建分支,修改演化规则,然后将其合并回HEAD。

当你做2D的时候,你可以简单地从旋转开始,把它修改成Hopf振子,然后通过变形一个网格来可视化,或者在一个不同的点开始的时候用3D来可视化。你也可以在3D中可视化分岔图。所以你再一次结合了一般的MATLAB技巧,比如3D绘图和数学。要链接到其他主题,请浏览维基百科:您可以引入猎人/捕食者模型、混沌系统、物理系统、etc.etc。

我们通常不从MATLAB中教授面向对象的编程,尽管这是可能的,而且您可以很容易地在动态系统设置中创建自己的用例。当引入继承时,我们已经开始使用C++了,我再次不知道MATLAB在这里的功能。

回到你的五点:

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

所有这些话,我至少也会告诉你的教授(和你的学生!)Python正在崛起对抗MATLAB。我们正在用我们的教程开发Python,但是如果有人想坚持熟悉的东西的话,我可以理解。

此外,我们实际上需要科学的内容,所以对你有用的可能将取决于你的课程将涉及哪个部门。

票数 3
EN

Stack Overflow用户

发布于 2009-08-06 11:56:33

很多事情都是可能的。

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

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

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

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

当然,通过添加连接时间(当您从一条线路切换到另一条线路)、请求几个选项(连接最短的路径、等待火车/公共汽车的时间、.),这可能会变得更加复杂。

细节的程度将取决于学生的水平和他们花在上面的时间(可能非常简单,也可能非常现实)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1208205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档