计算机编程与解数学题的联系和区别是什么?

求举个具体例子说明。

推荐  (0) | 3人关注关注
2个答案
4 0

方程应用数学专业

2014-06-13 15:00

先看下面这样一道题:
————————————————————
求解整数方程的解的个数

其中





————————————————————


由于题目数据不是很大,可以直接写枚举的代码,跑一下就可以看到解答:


但相信大多数学生会更习惯下面这样解
——以下内容略繁复,高能预警,嫌麻烦的同学可以跳过,跳到【结束】标记继续正题。
————————————————————
先换元,让





有整数方程

对这个方程,假如五个变量取值都是以零为下界,而不设有上界,那么问题转化为

「18个球要分成5组(有顺序,某组可以0个球)的方案一共多少种

那就可以用中学里常用的隔板法求解了。但是情况略有不同——

五个整数变量有取值范围:





于是,再利用包容排斥原理动动手脚:

设原问题的解集为,五个变量分别得到满足的解集为。可知

根据包容排斥原理

之所以将全部转化为满足条件的变量取值的补集,再进行计数,是因为取值范围为的变量非常不便于计数;但对取值范围形式为的,可通过换元使得有
都取补集后,结果就可以用手工计算了——原本集合为满足的解集,其补集是满足的解集,这就很容易按上面的方法——再次换元、屡次用隔板法、容斥原理——进行手算。最后就可以求得要求的结果。

好了,解题过程——

【结束】




现在主帖的问题,也许是指上面的两种求得最终解的手段的联系与区别。我说说我的总体看法。

前者是通过C++编程求解,本质是枚举;后者是通过组合数学方法,本质是多次换元和容斥原理。
两者看起来不太一样,但我觉得它们没有绝对的区别:
都是根据合理的条件、假设,和有限度的定理、算法,推导出需要的结果。

如果不想写代码,也可以手工枚举可能解,再逐个检验。
再者,若有时间有条件,也可以在C++上重现那个使用了容斥原理的算法。而这又可以视为算法优化——毕竟全盘枚举是很没有时间效率的做法,这里绝对可以算法分析,找到更好的算法。
另外,在没有电子计算机的时代,人们也只能利用有限度的优化,不辞辛劳地手工计算,制作对数表之类的表格。

代码和手工计算两者没有绝对的鸿沟。我是相信假若时日,甚至计算机也能自己动脑设计新的算法
(不是神经网络那种哦,而是以人类看得懂的逻辑明文写出来的解题方法)。



最后突然想插一句:四色猜想变成四色定理,主要功劳才不是计算机跑程序呢。
有人会觉得四色问题是被计算机全权包揽证明的,而人类只是写枚举的代码而已。但就我所知的,计算机在这里的角色只是最后的临门一脚(维基的这一条目写得很详细,可以当科普读了~~)

0 2

没空的人懂一点计算机和生活上的事情,认真灌水。

2014-06-13 12:40

联系:
比如一道乘法题目,10×10。
人工计算过程可以使用口算算出来。
而计算机内部可以理解成要用加法去算,就是10+10+10+……+10,总共十次。
虽然方法不同,但结果是一样的。

区别:
编程除了能解决数学题,还能能解决计算机能做到的范围内的非数学问题,比如写一个Office软件解决办公数字化的问题。
而数学只能解决与数字相关的东西,比如经济学中使用到的数据分析。

查看更多

添加回答

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

相关问答

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

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

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