数学建模对程序设计的影响
大学学过N多数学,高等数学,线性代数,概率等,除了枯燥外,没见有什么用处。有人说计算机专业学生学数学,锻练了思维。如果是这样,真感觉不很值得。
最近偶然接触Matlab,顺着找到了数学建模,原来在数学领域,关于数学建模的研讨还是非常热烈的,怪我孤陋寡闻,到现在才知道。我google了一段时间,初步了解了数学建模――用数学的方法解决实际问题。
于是,我忽然一下子想到了很多。数学建模应该能够大量地在软件开发中用到。尤其适用于对现有数据进行分析,做出预策的情况。
比如,客运企业,对旅客流量的分析;建立旅客流量预测模型,在此基础上可以预计客运企业能够实现的利润,据此制订年度增长计划。优化调度策略,使得客车所运行的线路安排无论在淡季还是旺季总是最佳。建立旅客满意度模型,使运营线路、客车、时间、行李运输最大限度地符合旅客需要。
比如,进销存软件,根据销售量建立销售数学模型,预测销售趋势;给出销售建议;建立库存量预警模型,根据计算,软件给出最优化建议:哪些商品应继续大量购进,哪些即使已到预警线,也应谨慎采购。
这些功能需求,如果进行数学建模,然后根据数学模型编写程序,其科学性和准确性将大大提高。数学可以做为程序设计的工具而使用。我们不需要去学枯燥的数学,去做复杂的数学推导――那是数学专业的事情。我们只是应用已知数学知识解决实际问题,这就是我所理解的数学建模。
这两天在google过程中,对数学建模领域的几句话印象比较深:
⑴高新技术实际上是数学技术;
⑵最有用的数学是数值分析和数学建模;
⑶数学建模已成为解决实际问题的关键手段;
⑷数学建模与数学实验是不同的,后者是学数学,前者是用数学。
所以,应用数学技术解决软件开发中的复杂商业问题是更高级的软件开发;在这方面,我只找到了一些只言片语,比如华尔街应用Matlab进行经济分析了,比如IBM利用数学解决商业问题了,IBM在谈到高级数学应用是如何在现实中解决复杂的商业问题时,说:我们会分析该公司的所有数据,找出我们所感兴趣的内容,一旦了解了公司的运作情况,你就可以针对这个公司的业务进行优化了。这种方式具有极好的性价比,客户可以在自己的预算内实现所期待的结果。还有,google的pagerank就是应用了线性代数的理论;postgresql数据库早期作者的论文中,我看到了大量的数学公式。除了这些比较高阶应用,我相信,数学模型在普通商业问题中应该有更广阔的应用前景。
数学建模与软件开发相结合能够更进一步促进软件向智能化方向发展。但是国内在这方面还没看到热潮。国内在这两方面都比较狭窄;数学技术人员所讨论的数学建模更关注参加数模大赛和Matlab的使用;而程序员们则更关注软件建模和软件应用,两者不能很好结合,进行这方面讨论的也很少,至少我的水平低,没google到。
当然,我想,对我们一般程序员来讲,如果将两者结合起来,是有相当难度的。不但要掌大量高等数学知识,还要能够熟练应用――这么高的门槛,绝非一朝一夕之功,这一下子就挡住了许多人的进入。我对数学虽然感兴趣,也只是门外汉,掌握数学所付出的努力,要比学会几门编程语言要高得多。象我这种为生存而奋斗的人,可能只有想想的份,哪有勇气拿出大段时间再读数学呢。
本人水平很低,先扔一块砖,看看大家的观点,也让我有所收益。