编程和数学建模的区别是什么?

推荐  (2) | 56人关注关注
25个答案
55 0

非乌龟代数拓扑硕士,C#程序员

2013-04-29 22:03

如果是从我认识到的数学建模和编程来讲,二者相比较而言,
数学建模更像是从现实世界到数学抽象的过程。要经历把现实问题理想化的步骤,其间必须要决定舍弃哪些影响甚微的多余因素,好简化问题;只有简化了问题才能提出模型。
比如在国内好多数学建模入门的教材中被用烂了的一个例子:考虑下雨天的风速和人的不同情况,求解是否要跑、跑得多快才能淋雨最少。
然后教材里给出的一般参考过程,先把人抽象成了一个长方体,而不管你具体是将军肚还是瓜子脸,风速也假定是固定方向固定速度的。然后在这个极端简化的情况下就可以分析出人应该以多大速度前进身上(长方体形状的身体!)淋的雨最少。
这当然是一个相当粗糙的结果,如果想让模型更好,可以对你简化掉的东西重新考虑,更加精细地建立模型。比如考虑人的头部比身子小,修正长方体身体为下部大长方体上方接一个小长方体之类的,当然你可以继续考虑脖子比头更细,脖子和头都更趋向于圆形,甚至考虑到不同人高矮肥瘦的不同体型。
对于风,也是一样,你可以进一步考虑旋风、风时快时慢等等因素......

做到这些当然会使你的模型更加精细,但是它是绝对精确的吗?不,这根本不可能。因为你一旦提出一个模型,你一定就舍弃了现实问题中的某些因素,否则复杂的现实性会让你根本设计不出任何东西。再精细的模型,只可能一步一步逼近这个现实,但它永远不可能等于现实。所以检验一个模型的精度是否达到我们可以接受的范围,是否是现阶段我们能合理使用的,最可靠的方法就是输入足够多的参数去检验得到的结果与现实情况差别有多大。

编程更像是在抽象空间本身提出问题,解决问题。这么说来,编程问题反而更像“纯粹”的数学问题。因为程序世界本身就是基于0、1建立起来的抽象世界,编程更像是在抽象世界里,解决抽象问题。所以它一般不需要考虑对哪些因素作取舍。

当然,上面这种区别不是截然分明的,在这二者分别发展的情况下,它们各自的触角越伸越广泛,相互的边界也是日渐模糊的。比如图像处理、图像识别等等,虽然是编程问题,但它距离现实已比“一步之遥”还要近了。或者从另一个角度说,像这种问题是数学建模和编程通力合作解决的。
我尚学浅,不知道在这种情况下说“数学建模负责前期抽象,编程负责后期实现”对错有几何。但就现阶段来说,的确是数学建模距离现实问题更近一些,编程更侧重如何实现一些。

24 0

本人参加数学建模竞赛三年了,从华中地区赛,全国赛,直到美国赛,大大小小的比赛经历了四次,就我看来,数学建模是对实际问题的数学解释化,即将实际问题转换成能用数学解决的问题,这一点在美国大学生数学建模竞赛(MCM/ICM)中体现的很透彻,我记得第一次参加比赛(2012MCM)是要我们解决树叶的分类及不用称量的方法估算一棵树上叶子的重量,今年的比赛中我们刚刚解决了蛋糕盘角上为什么会糊和在烤炉中的摆放问题,这些都与我们生活中的问题,但是需要用数学去解决,我觉得这和果壳网创建的理念差不多,用科学解释你身边的事情,还有不要单纯的认为数学建模就是列方程,好多时候,你是列不出来方程的。
而在我参加竞赛的过程中,编程无疑使很重要的一环,有时候你建立一个很好的模型,很多时候你需要用编程来实现,拟合,仿真,计算,这是编程需要做的事情
我的理解就是这样,不知道你问这个问题的初衷是什么,是因为参加比赛么

22 2

同意@wugui 回复的“建模”部分,
但是对于“编程”部分有不同见解。

我认为本质上,“建模”是我们理解问题和分析问题的一个工具,通过这一工具,我们将实际问题简化,使其“可计算”。
编程”是一个纯粹的计算工具,这一工具不会帮助我们我们理解和分析问题,只是用来“计算”。

特别需要强调的是,“编程”适合用来处理“重复性”的计算,附带也可以做一些其他重复性的工作(例如输入、输出、排版之类)。

例:等差数列求和。
题目:求1至1000的所有整数的和。

解1:通过编程,将数字1至1000逐项相加,输出结果。
这种傻瓜解法,完全不用建模。虽然说手算1000次加法比较累,但是用计算机编程就毫无问题。

解2:通过分析,推导出等差数列前n项和的公式(建模),之后将题目中的数字代入,一次计算出来。
因为只有一次计算,所以没有编程的必要。

扩展题目:等差数列,首项为1,差为1,求前1项的和,至前1,000,000项和(总计要一百万个结果)。

解法及分析:既然是求等差数列的和,那么我们自然可以建立在解法1或解法2的基础上。
如果建立在解法1的基础上,总计约5万亿此的计算,这对于计算机来说也是过大的数字。
因此我们必须先建模,即在解法2的基础上,再通过编程,重复计算并输出一百万次,来获得我们需要的结果。

19 0

你倒是问数学建模和数学的区别是什么我都能接受。
数学建模和编程虽然有千丝万缕的关系,但他们是两码事。

首先,明确数学建模的官方定义:数学建模就是使用数学方法解决实际应用问题。 很明白很清晰的一句话,如果非要再解释就多举些栗子了呗。投资背后就涉及到“组合投资”模型,简单点来说他有两个目标:1.收益最大;2.风险最小。唔,但貌似现有处理多目标规划的方法都不太还用嘛,如果转化为两个单目标规划来计算就简单多了吧。(处理方法有多种,我是选较简单的来举个粒子),在用Lingo这样的软件来求解就简单多了。
说了这么多,我只是想说,数学建模的重点在于建模的过程,就是将具体业务抽象成数学语言来表示,这是建模最难的部分,一个模型的好坏也在此体现。
我们见到的比较多的数学模型大致有三种:优化模型,预测模型,评价模型。上面说的组合投资算是优化模型。

澄清数学建模和编程的关系。编程是建模实现的一种重要工具和手段,我们在建模训练和比赛中,几乎没有那道题是不要用到MatLab,C,Lingo或SPSS这样的编程工具的。他将我们用数学语言描述的问题再通过计算机来实现,好的程序确实能大大帮助我们模型的实现,听我们某老师说,“有位同学啊,一个程序在MatLab上跑了半个小时才算出结果”,囧~
@ ________________________________________________________@
中国和美国大学生数学建模都获一等的飘过~(我只是想增加我回答的可信度~)

17 0

数学建模:
核心是建模,即从现实世界的某个现象,分析其原因,建立一个模型来探讨原因对结果的影响。单纯的建模过程并不需要编程,编程的作用只是计算一个无法通过手算得到的实验结果。
编程:
程序有很多种了,像很多ACM算法题,跟数学建模有些相似,因为他有数学模型,或者至少有数学公式。但有些应用型程序只是为了实现某个功能(这样的程序应该更多,更有实用价值),里面并没有数学理论,这时就跟数学建模完全是两回事了。

14 0

这俩区别还是挺大的。
编程需要建立在建模基础上进行。
简而言之,就是假设我们需要让计算机帮助我们做一件比较复杂的事,建模的过程就是我们自己想明白该怎么办,而编程则是在自己想清楚的基础上,通过语言告诉计算机应该怎么算。

3 0

不_系_之_舟码农兼封建时代酸秀才

2013-05-02 12:37

程序员路过。
同意seancai110,编程仅仅是代替了手工计算的过程而已,与建模没什么关系。作为一个码农,深深知道数学家们才是真正牛掰的人物。

3 0

Waalle统计,融资并购,数值分析

2013-05-02 15:23
支持者: 微沧 然啊然 seancai110

软件工程 和数据结构的不同

2 0
支持者: 小彤花园 非乌龟

个人深有体会,我写的软件就是对河流建模,计算水的流量的软件。
不一定必须有软件才能建模,高手可以用纸和笔来建模,比如红牛的钮维。
计算机VS纸笔,计算机无疑有巨大的优势,因为可以代替人脑做很多高强度的运算,但是仍然需要人的参与,河流的参数有无数个,都需要人的经验来调整。

1 0

鱼大雷邪恶之王 大毒舌 欢乐

2013-05-02 19:59
支持者: 节操约束核聚变

建模是泡妞,编程是啪啪啪.

0 0

这两个有任何相重叠的地方么... 尽管建模需要编程, 但是建模最重要的是模型啊.
编程才不管你模型是什么, 又不是只有建模的人才编程.
LZ这个问题好奇怪啊

0 0

从没学过数学建模的人看见这个问题的第一反应是这两者应该区别不大

1 1
支持者: 做爱护动物的人

建模是模拟现实
编程的最终目的是代替现实

0 0

建模是提出算法,编程是实现算法。

0 0

模型对现实的抽象,形成数学公式,而编程就是替代人工计算的,感觉是这样,让计算机完成人感觉很烦的问题

0 0

在我看来,数学建模是把现实世界的逻辑用数学方法抽象化。编程则可以把数学模型用计算机语言表达出来,让更多的人可以应用现实世界的逻辑。

1 1
支持者: 非乌龟

建模党表示...自从PC普及之后...建模过程中对于计算量的考虑越来越少...与此同时算法越来越复杂和实际...
灰箱模型日益增多...想要做好数模必须需要掌握一些算法程序的编写...
与程序员不同在于...我们建模需要的不是UI,GUI,I/O流等等一些结构和表层的东西...
相比较来说我们会更加关注底层...数据的相关性...算法的可靠程度...拟合的优度...生成数据的置信度等等

0 0

两个完全是不同领域的问题。。。。建模三个人里面一个编程计算,一个数学建模~~

0 0

建模是建立模型
编程是将模型用程序语言描述出来

0 0

编程工作可以分为三步:1.把实际问题形式化,变成形式化问题;2.用专业领域(比如图形、网络、数据库等)知识解决形式化的问题;3.编码。

可以看出,第一步和第二步中除了专业领域知识以外,用到的主要就是数学建模。

0 1

建模更像是将复杂的问题简化,祛除些干扰能力较弱的变量从而使难以解决的问题变为有可能解决的问题,而且,建模更多的是在寻找类似问题的共性,而不是单纯地讨论某一个具体的问题,因此,建模出来的结果是有很强的举一反三性,即使不能完全解决另一个类似的问题,也能再那个问题上提供一些可行性的方法。
至于编程,虽然只是0-1方面的游戏,但是更多是因为问题有了大致的方向,而这个方向用人脑来做是非常繁琐的,所以借助机器的帮忙,机械式得不断运行和迭代,从而达到跳出循环,解决问题的目的。
综上所述,建模更像是航海中的指南针,而编程则似发动机罢了!

0 1

计算机科学家都是建模高手,他们有很好的解决问题的思想,提出算法。编程解决问题。

查看更多

添加回答

登录 后回答问题,你也可以用以下帐号直接登录

相关问答

关于我们 加入果壳 媒体报道 帮助中心 果壳活动 家长监控 免责声明 联系我们 移动版 移动应用

©果壳网    京ICP证100430号    京网文[2018] 6282-492号    新出发京零字东150005号     京公网安备11010502007133号

违法和不良信息举报邮箱:jubao@guokr.com    举报电话:18612934101    网上有害信息举报专区    儿童色情信息举报专区