数学对于计算机的重要性
数学建模与计算机的重要性

数学建模与计算机的联系及重要性摘要:在当今科技发达的今天,计算机已经得到了广泛的应用,也为数学建模的计算提供了有力工具。
本文浅谈了数学建模与计算机在人类生产和生活中的重要性。
关键词:数学建模计算机重要性当今社会计算机已经被广泛的应用了,在计算机的协助下许多问题的求解变得简单、方便、快捷。
而数学建模是把现实世界中的实际问题加以提炼,抽象为数学模型,求出模型的解,验证模型的合理性,并用该数学模型所提供的解答来解释现实问题。
在科技迅猛发展的今天计算机和数学建模在人类的生存和发展中都具有举足轻重的作用。
一、数学建模与计算机息息相关其一、我们在模型求解时,有些计算单纯的用纸和笔是难以完成的,这就需要利用计算机上机计算、编制软件、绘制图形等,当结果通过计算机算出后也必须通过打印机随时进行输出。
其二、数学建模的学习对计算机能力的培养也起着极大推动作用,如报考计算机方向的研究生时,对数学的要求非常高;在进行计算机科学的研究时,也要求有极强的数学功底才能写出具有相当深度的论文,计算机科学的发展也是建立在数学基础之上的,许多为计算机的发展方面做出杰出贡献的人,在数学方面也颇有造诣。
我们在遇到一些实际问题时往往需要计算机和数学建模同时应用才能解决问题,否则问题将无法进行。
数学问题与计算机通常采用一些数学软件(lingo,Matlab,MathCAD 等等)的命令来描述算法,既简单又容易操作。
例如下面有这样一道题就是利用数学软件lingo 求解的。
例1 某工厂有两条生产线,分别用来生产M 和P 两种型号的产品,利润分别为200元每个和300元每个,生产线的最大生产能力分别为每日100和120,生产线没生产一个M 产品需要1个劳动日(1个工人工作8小时称为1个劳动日)进行调试、检测等工作,而每个P 产品需要2个劳动日,该工厂每天共计能提供160个劳动日,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?解 设两种产品的生产量分别为1x 和2x ,则该问题的数学模型为:目标函数 12max 200300z x x =+约束条件 1212100,120,160,0,1,2.i x x x x x i ≤⎧⎪≤⎪⎨+≤⎪⎪≥=⎩编写LINGO 程序如下:MODEL:SETS:SHC/1,2 /:A,B,C,X; YF/1,2,3 /:J;ENDSETSDATA:A=1,2 ; B=100,120; C=200,300;ENDDATAMAX=@SUM(SHC:C*X);@FOR(SHC(I):X(I)<B(I)); @SUM(SHC(I):A(I)*X(I))<=160; END程序运行结果如下Global optimal solution found.Objective value: 29000.00Total solver iterations: 0Variable Value Reduced CostA( 1) 1.000000 0.000000A( 2) 2.000000 0.000000B( 1) 100.0000 0.000000B( 2) 120.0000 0.000000C( 1) 200.0000 0.000000C( 2) 300.0000 0.000000X( 1) 100.0000 0.000000X( 2) 30.00000 0.000000J( 1) 0.000000 0.000000J( 2) 0.000000 0.000000J( 3) 0.000000 0.000000Row Slack or Surplus Dual Price1 29000.00 1.0000002 0.000000 50.000003 90.00000 0.0000004 0.000000 150.0000最优解为12100,30,x x ==最优值为29000.00z =.即每天生产100个M 产品30个P 产品,可获得29000元利润.可见数学建模和计算机共同为问题求解提供了有效的手段,对其它课程的辅助学习帮助也是极大的。
数学在现代科学中的重要性

数学在现代科学中的重要性数学作为一门学科,不仅仅是一种工具或一种计算方法,其在现代科学中扮演着重要的角色。
无论是自然科学领域还是社会科学领域,数学的应用都是不可或缺的。
本文将从几个方面探讨数学在现代科学中的重要性。
一、数学在物理学中的应用物理学作为自然科学的基础学科,离不开数学的支持和应用。
通过数学方法,可以更准确地描述物理现象,并推导出相应的数学公式和模型。
例如,牛顿的运动定律就是通过微积分的方法得出的,这个定律为整个力学体系的理论奠定了基础。
另外,狄拉克方程和薛定谔方程等著名方程也是通过数学的力量来推导和描述的。
数学为物理学提供了一种精确的语言和工具,使得物理学家能够更深入地理解宇宙的奥秘。
二、数学在生物学中的应用生物学作为研究生命现象的科学,也需要数学的支持。
生物学中常常涉及到大量的数据分析和模型建立。
而数学统计方法可以帮助生物学家对数据进行处理和分析,找出其中的规律和模式。
此外,数学模型也可以用来描述生物系统的行为,比如在生态学中,可以通过微分方程来描述种群的变化规律。
在遗传学中,通过概率和统计的方法可以研究基因的传递和变异。
生物学正逐渐从传统的实验科学转向数量化的科学,数学的应用对于推动生物学的研究具有重要价值。
三、数学在经济学中的应用经济学作为社会科学的一门重要学科,也需要数学来支持其理论研究和实证分析。
经济学在研究经济现象时,常常需要建立相应的数学模型来描述经济行为和经济系统的运行机制。
数学工具可以帮助经济学家对经济现象进行建模、分析和预测。
例如,经济学中常用的供需模型、效用函数、成本函数等都是通过数学方程来表示的。
此外,数学统计方法也被广泛应用于经济学中的数据分析和经济政策的评估,通过统计的手段对市场行为和经济波动进行分析,为经济学家提供科学的决策依据。
四、数学在计算机科学中的应用计算机科学是现代科学的一个重要分支,而数学在其中的应用更是不可或缺的。
计算机科学中常常涉及到算法的设计与分析、网络的优化与调度、密码学的研究等问题,而这些问题都需要数学的方法来解决。
学习《离散数学》心得体会

学习《离散数学》心得体会《离散数学》是一门重要的数学基础课程,其内容丰富多样,涵盖了数论、集合论、图论等多个领域。
通过学习这门课程,我深刻体会到了离散数学在计算机科学、信息技术等领域中的广泛应用,也收获了很多宝贵的体会和经验。
以下是我学习《离散数学》的心得体会。
首先,在学习《离散数学》的过程中,我深刻认识到了数学对于计算机科学的重要性。
离散数学是计算机科学的一门基础课程,它不仅为后续的学习奠定了坚实的数学基础,而且能够培养我们的逻辑思维和分析问题的能力。
在课程中,我们学习了很多与计算机相关的概念和方法,例如集合、逻辑、函数、图论等。
这些概念和方法不仅在计算机科学中有广泛的应用,而且能够帮助我们更深刻地理解计算机科学中的各种算法和数据结构。
通过学习《离散数学》,我对计算机科学的整体框架和基本原理有了更全面的认识。
其次,在学习《离散数学》的过程中,我体会到了数学理论与实际问题的联系和应用。
离散数学的研究对象主要是离散结构,而离散结构在实际问题中具有重要的应用价值。
在课程中,我们学习了很多关于离散结构的理论和方法,例如集合的运算、关系的定义、图论中的路径和回路等。
通过学习这些离散结构的理论与方法,我们能够更好地分析和解决实际问题。
例如,在网络设计中,我们需要考虑节点之间的连接关系,这就需要运用到图论中的概念和算法。
通过学习《离散数学》,我对数学理论与实际问题的联系和应用有了更深刻的认识。
再次,在学习《离散数学》的过程中,我收获了很多解决问题的思维方法和技巧。
离散数学是一门注重逻辑思维和证明方法的学科,而这些方法在实际问题的解决中也是非常重要的。
在课程中,我们学习了很多关于证明方法的技巧和策略,例如数学归纳法、反证法、直接证明法等。
通过学习这些证明方法,我们能够培养自己的逻辑思维和推理能力,从而更好地解决实际问题。
此外,离散数学中也有很多与编程相关的题目和算法,例如排列组合、递归等。
通过学习这些题目和算法,我们能够锻炼自己的编程能力和算法思维,提高自己解决实际问题的能力。
计算机科学中的数学基础知识

计算机科学中的数学基础知识计算机科学与数学密切相关,数学为计算机科学提供了重要的基础知识和技能。
在计算机科学的各个领域,数学都发挥着关键作用。
本文将介绍计算机科学中的数学基础知识。
一、离散数学离散数学是计算机科学的基础,它研究离散对象及其关系,包括集合论、图论、逻辑等。
集合论是研究集合及其操作的数学分支,它在计算机科学中被广泛应用于数据结构和算法设计。
图论是研究图及其性质的数学分支,它在网络分析、图像处理等领域起着重要作用。
逻辑是研究推理和证明方法的数学分支,它是计算机科学中设计和分析算法的基础。
二、概率论与统计概率论与统计是计算机科学中用于处理不确定性的重要工具。
概率论研究随机现象的规律性,统计学研究数据的收集、分析和推断。
在机器学习、数据挖掘和人工智能等领域,概率论与统计提供了建立模型、分析数据和做出决策的方法。
例如,对于一个分类问题,我们可以使用概率论和统计学的方法来计算不同类别的概率,并根据概率做出分类决策。
三、线性代数线性代数是计算机图形学和机器学习等领域必备的数学工具。
它研究向量空间和线性变换等概念,提供了描述和解决多维数据和变换的工具。
在计算机图形学中,线性代数用于描述和处理三维图形的变换和投影。
在机器学习中,线性代数提供了处理高维数据和建立模型的基础。
四、微积分微积分是研究变化和极限的数学分支,它在计算机科学中广泛应用于优化、算法分析和模拟等领域。
在优化中,微积分提供了求解最优化问题的方法,如梯度下降和牛顿法等。
在算法分析中,微积分用于分析算法的时间复杂度和空间复杂度。
在模拟中,微积分用于描述和求解物理、生物和经济等系统的动态行为。
五、数论数论是研究整数和整数运算的数学分支,它在密码学和算法设计等领域起着重要作用。
在密码学中,数论提供了建立安全密码系统和解密密码系统的基础。
在算法设计中,数论用于设计高效的算法和数据结构。
六、离散概念与自动机离散概念与自动机是研究离散结构和自动计算的数学分支,它在编译器设计和计算理论等领域起着重要作用。
数学与应用数学论文范文

数学与应用数学论文范文摘要:本文旨在探讨数学与应用数学在现代社会中的广泛应用及重要性。
通过分析数学在物理学、计算机科学、经济学等领域的具体应用案例,阐述数学作为基础学科对于推动科技进步和社会发展的关键作用。
同时,对数学模型在解决实际问题中的构建和应用方法进行了研究,强调了培养数学思维和应用能力的重要性。
关键词:数学;应用数学;数学模型;实际应用一、引言数学作为一门古老而深邃的学科,其发展历程源远流长。
从古希腊时期的欧几里得几何,到现代的微积分、线性代数等,数学不断地拓展着人类认知世界的边界。
而应用数学则是将数学理论与实际问题相结合,为解决各种现实难题提供了有力的工具。
二、数学在物理学中的应用物理学与数学之间有着密不可分的联系。
例如,牛顿运动定律的表述和推导离不开微积分的应用。
在研究物体的运动轨迹、速度和加速度等问题时,微积分能够精确地描述这些变化量之间的关系。
爱因斯坦的相对论中,张量分析和黎曼几何等数学工具发挥了至关重要的作用。
通过复杂的数学运算和推理,揭示了时间和空间的相对性,颠覆了传统的牛顿力学观念。
量子力学中的薛定谔方程,也是基于数学中的偏微分方程理论建立起来的。
这些数学方程为物理学家理解微观世界的粒子行为提供了理论基础。
三、数学在计算机科学中的应用在计算机科学领域,数学的应用更是无处不在。
算法设计是计算机程序的核心,而算法的优劣往往取决于其背后的数学原理。
数据结构的设计和分析,如链表、栈、队列、树等,都需要运用数学中的集合论、图论等知识。
密码学中的加密和解密算法,如 RSA 算法,基于数论中的大素数分解难题,保障了信息的安全传输。
人工智能领域的机器学习和深度学习,离不开线性代数、概率论和统计学等数学知识。
神经网络的训练过程本质上是一个优化问题,需要运用梯度下降等数学方法来求解。
四、数学在经济学中的应用经济学研究中,数学模型的应用越来越广泛。
例如,在微观经济学中,消费者的需求函数和生产者的成本函数可以通过数学函数来表示,从而分析市场的供求关系和均衡价格。
浅谈高职院校数学课对计算机专业课教与学的作用

20 0 8年
《 田师范专科学校学报 》( 和 汉文综合版 )
J1 0 8第 2 u. 0 2 8卷第六期
总第 5 6期
浅谈高职院校数学课对计算机专业课教与学的作用
艾尼瓦尔 ・ 买买提
( 新疆交通职业技术学院 新疆乌鲁木齐 810) 341
L 妥J 獭 本文主要就数学 知识和方 法对计算 机专业课学习 中的作 高职高专的 《 用及 计算机数学》作为教材,因该教材突出逻辑代数和线 性代数,很适合计算机专业中 《 数据结构》 操作系统》课程的学 、《 L 键 词J 天 数学:专业课:教学 习,过去这两门课对学生来说是一个难点,主要是线性代数和逻辑 作一名职业院校的数学教师,常听专业课教师报怨:专业课多 代数能力太差,改为 《 计算机数学》这本教材后,因为有了相应的 难教,同样,学生也反映专业课多难学。笔者通过对相关专业教学 基础和方法, 提高了 《 数据结构》和 《 操作系统》这两门课的教学。 进行了解,使笔者对专业课教与学中反映的问题有了一定的认识, 当然 , 于为专业 课服务 的指 导思想 , 基 并不是说随意舍取数 学内容, 专业课教学中之所 以教与学之间同时产生困难, 其中主要的原因是: 应当是在不破坏数学的系统性和循序渐进原则的基础上,对教学内 数学知识掌握的数学方法应用不够。笔者认为,数学在专业课教学 容进行合理的选取,切实做到为专业课服务。
计算机专业高等数学教材

计算机专业高等数学教材第一章:导论1.1 数学在计算机科学中的重要性1.2 高等数学的基本概念和方法1.3 本教材的组织结构第二章:函数与极限2.1 实数与数集2.1.1 实数的性质与运算2.1.2 数集的分类与运算2.2 函数及其图像2.2.1 函数的定义与性质2.2.2 初等函数与常用函数的图像2.3 三角函数与周期性2.3.1 三角函数的定义与性质2.3.2 三角函数的图像与性质2.4 无穷小与无穷大2.4.1 极限的概念与性质2.4.2 无穷小与无穷大的定义与运算2.4.3 极限存在准则第三章:微分学3.1 导数与微分3.1.1 导数的定义与性质3.1.2 微分的定义与性质3.1.3 导数与微分的基本计算法则3.2 高阶导数与隐函数求导3.2.1 高阶导数的定义与计算3.2.2 隐函数求导的方法与应用3.3 函数的单调性与极值3.3.1 函数的单调性概念与判定3.3.2 函数极值的概念与判定3.4 函数的图形与曲线的凹凸性3.4.1 函数的图像与曲线的绘制3.4.2 函数的凹凸性与拐点的判断第四章:积分学4.1 不定积分与定积分4.1.1 不定积分的概念与性质4.1.2 定积分的概念与性质4.2 定积分的计算4.2.1 计算定积分的基本方法4.2.2 曲线下面的面积与定积分4.2.3 反常积分的概念与判定4.3 积分与微分的关系4.3.1 牛顿-莱布尼茨公式4.3.2 微积分基本定理4.4 微分方程与数学建模4.4.1 微分方程的定义与分类4.4.2 常微分方程的基本解法与应用第五章:级数与幂级数5.1 级数的概念与性质5.1.1 数项级数的概念5.1.2 收敛级数的判定5.2 幂级数与函数展开5.2.1 幂级数的概念与性质5.2.2 幂级数表示的函数与展开5.3 泰勒级数与近似计算5.3.1 泰勒级数的定义与性质5.3.2 泰勒级数在函数表达与近似计算中的应用结语本教材综合了计算机科学中常用的高等数学知识,涵盖了导数、积分、级数等重要内容。
高考计算机专业选科要求

高考计算机专业选科要求
不同学校的要求可能会有所区别,以下是一般情况下高考计算机专业选科要求:
1.数学必须要选:数学是计算机专业必须掌握的基础学科,必须要学好数学才能更好地掌握计算机专业知识。
2.物理或者信息技术:这两门学科都可以作为计算机专业选科的补充,对于学习计算机专业知识会有一定帮助。
3.英语:由于计算机专业需要阅读大量的英文文献资料,所以英语能力必须要达到一定水平。
4.其他选修科目:除了以上三门必修科目,学生还可以选择其他科目来加强自身能力。
例如:化学、生物、地理、政治等。
总的来说,数学、英语是必选科目,物理或信息技术可以根据自身兴趣和特长进行选择,其他科目可以根据自身情况进行选修,但是不要忽略了数学和英语的重要性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学对于计算机的重要性 可能有很多朋友在网上看过google公司早几年的招聘广告,它的第一题如下了:{first 10-digit prime found in consecutive digits e}.com,e中出现的连续的第一个10个数字组成的质数。据说当时这个试题在美国很多地铁的出站口都有大幅广告,只要正确解答了这道题,在浏览器的地 址栏中输入这个答案,就可以进入下一轮的测试,整个测试过程如同一个数学迷宫,直到你成为google的一员。 又如Intel某年的一道面试题目:巴拿赫病故于1945年8月31日。他出生年份是他在世某年年龄平方减去这年年龄的差,问:他是哪年出生的?这道看似很简单的数学问题,你能不能很快地解答呢? 下面则是一道世界第一大软件公司微软的招聘测试题:中间只隔一个数字的两个素数被称为素数对,比如5和7,17和19,证明素数对之间的数字总能被6整 除(假设这两个素数都大于6),现在证明没有由三个素数组成的素数对。这样的试题还有很多很多,这些题目乍初看上去都是一些数学问题。但是世界上一些著名 的公司都把它们用于招聘测试,可见它们对新员工数学基础的重视。数学试题与应用程序试题是许多大型软件公司面试中指向性最明显的一类试题,这些试题就是考 察应聘者的数学能力与计算机能力。 某咨询公司的一名高级顾问曾说:微软是一家电脑软件公司,当然要求其员工有一定的计算机和数学 能力,面试中自然就会考察这类能力。微软的面试题目就考察了应聘人员对基础知识的掌握程度、对基础知识的应用能力,甚至暗含了对计算机基本原理的考察。所 以,这样的面试题目的确很“毒辣”,足以筛选到合适的人。 四川大学数学学院的曹广福教授曾说过:“一个大学生将来的作为与他的数 学修养有很大的关系”。大学计算机专业学生都有感触,计算机专业课程中最难的几门课程莫过于离散数学、编译原理、数据结构,当然像组合数学、密码学、计算 机图形学等课程也令许多人学起来相当吃力,很多自认为数据库学得很好的学生在范式、函数依赖、传递依赖等数学性比较强的概念面前感到力不从心,这些都是因 为数学基础或者说数学知识的缺乏所造成的。 数学是计算机的基础,这也是为什么考计算机专业研究生数学都采用最难试题(数学一)的 原因,当然这也能促使一些新的交叉学科如数学与应用软件、信息与计算科学专业等飞速发展。许多天才程序员本身就是数学尖子,众所周知,BillGates的数学成绩一直都很棒,他甚至曾经期望当一名数学教授,他的母校——湖滨中学的数学系主任弗雷福?赖特曾这样谈起过他的学生:“他能用 一种最简单的方法来解决某个代数或计算机问题,他可以用数学的方法来找到一条处理问题的捷径,我教了这么多年的书,没见过像他这样天分的数学奇才。他甚至 可以和我工作过多年的那些优秀数学家媲美。当然,比尔也各方面表现得都很优秀,不仅仅是数学,他的知识面非常广泛,数学仅是他众多特长之一”。影响一代中国程序人的金山软件股份有限公司董事长求伯君当年高考数学成绩满分进一步说明了问题。很多数学基础很好的人,一旦熟悉了某种计算机语言,他可以很快地理 解一些算法的精髓,使之能够运用自如,并可能写出时间与空间复杂度都有明显改善的算法。 程序设计当中解决的相当一部分问题都会涉 及各种各样的科学计算,这需要程序员具有什么样的基础呢?实际问题转换为程序,要经过一个对问题抽象的过程,建立起完善的数学模型,只有这样,我们才能建 立一个设计良好的程序。从中我们不难看出数学在程序设计领域的重要性。算法与计算理论是计算机程序设计领域的灵魂所在,是发挥程序设计者严谨,敏锐思维的 有效工具,任何的程序设计语言都试图将之发挥得淋漓尽致。 程序员需要一定的数学修养,不但是编程本身的需要,同时也是培养逻辑思 维以及严谨的编程作风的需要。数学可以锻炼我们的思维能力,可以帮助我们解决现实中的问题。可以帮助我们更高的学习哲学。为什么经常有人对一些科学计算程 序一筹莫展,他可以读懂每一行代码,但是却无法预测程序的预测结果,甚至对程序的结构与功能也一知半解,给他一个稍微复杂点的数学公式,他可能就不知道怎么把它变成计算机程序。很多程序员还停留在做做简单的MIS,设计一下MDI,写写简单的Class或用SQL语句实现查询等基础的编程工作上,对于一些 需要用到数学知识的编程工作就避而远之,当然实现一个累加程序或者一个税率的换算程序还是很容易的,因为它们并不需要什么高深的数学知识。 一名有过10多年开发经验的老程序员曾说过:“所有程序的本质就是逻辑。技术你已经较好地掌握了,但只有完成逻辑能力的提高,你才能成为一名职业程序 员。打一个比方吧,你会十八班武艺,刀枪棍棒都很精通,但就是力气不够,所以永远都上不了战场,这个力气对程序员而言就是逻辑能力(其本质是一个人 的数学修养,注意,不是数学知识)。” 程序员的数学修养不是一朝一夕就可以培养的。数学修养与数学知识不一样,修养需要一个长期的过程,而知识的学习可能只是一段短暂的时间。下面是一些我个人对于程序员怎么样提高与培养自己的数学修养的基本看法。 首先,应该意识到数学修养的重要性。作为一个优秀的程序员,一定的数学修养是十分重要也是必要的。数学是自然科学的基础,计算机科学实际上是数学的一个 分支。计算机理论其实是很多数学知识的融合,软件工程需要图论,密码学需要数论,软件测试需要组合数学,计算机程序的编制更需要很多的数学知识,如集合 论、排队论、离散数学、统计学,当然还有微积分。计算机科学一个最大的特征是信息与知识更新速度很快,随着数学知识与计算机理论的进一步结合,数据挖掘、 模式识别、神经网络等分支科学得到了迅速发展,控制论、模糊数学、耗散理论、分形科学都促进了计算机软件理论、信息管理技术的发展。严格的说,一个数学基 础不扎实的程序不能算一个合格的程序员,很多介绍计算机算法的书籍本身也就是数学知识的应用与计算机实现手册。 其次,自身数学知 识的积累,培养自己的空间思维能力和逻辑判断能力。数学是一门分支众多的学科,我们无法在短暂的一生中学会所有的数学知识,像泛函理论、混沌理论以及一些 非线性数学问题不是三五几天就可以掌握的。数学修养的培养并不在与数学知识的多少,但要求程序员有良好的数学学习能力,能够很快地把一些数学知识和自己正 在解决的问题联系起来,很多理学大师虽然不是数学出身,但是他们对数学有很强的理解能力和敏锐的观察力,于是一系列新的学科诞生了,如计算化学、计算生物 学、生物信息学、化学信息学、计算物理学,计算材料学等等。数学是自然学科的基础,计算机技术作为理论与实践的结合,更需要把数学的一些精髓融入其中。从 计算机的诞生来看它就是在数学的基础上产生的,最简单的0、1进制就是一个古老的数学问题。程序设计作为一项创造性很强的职业,它需要程序员有一定的数学 修养,也具有一定的数学知识的积累,可以更好地把一些数学原理与思想应用于实际的编程工作中去。学无止境,不断的学习是提高修养的必经之路。第三,多在实 践中运用数学。有些高等学校开设了一门这样的课程——《数学建模》。我在大学时期也曾学过,这是一门内容很丰富的课程。它把很多相关的学科与数学都联系在 一起,通过很多数学模型来解决实际的生产生活问题,很多问题的解决需要计算机程序来实现。我在大学和研究生阶段都参加过数学建模竞赛,获得了不少的经验, 同时也进一步提高了自己的数学修养。实际上,现在的程序设计从某些角度来看就是一个数学建模的过程,模型的好坏关系到系统的成败,现在数学建模的思想已经 用于计算机的许多相关学科中,不单只是计算机程序设计与算法分析。应该知道,数学是一门需要在实践中展示其魅力的科学,而计算机程序也是为帮助解决实际问题而编制的,因此,应该尽量使它们结合起来,在这个方面,计算机密码学是我认为运用数学知识最深最广泛的,每一个好的加密算法后面都有一个数学理论的支 持,如椭圆曲线、背包问题、素数理论等。作为一名优秀的程序员,应该在实际工作中根据需要灵活运用数学知识,培养一定的数学建模能力,善于归纳总结,慢慢 使自己的数学知识更加全面,数学修养得到进一步提高。 第四,程序员培养制度与教学的改革。许多程序员培养体制存在很多缺陷,一开 始就要求学员能够快速精通某种语言,以语言为中心,对算法的核心思想与相关的数学知识都一笔带过,讲得很少,这造成很多程序员成为背程序的机器,这样不利 于程序员自身的快速成长,也不利于程序员解决新问题。我在长期的程序员培训与计算机教学工作采用了一些与传统方式不一致的方法,收到了一定的效果。很多初 学程序的人往往写程序时有时候会有思维中断,或者对一些稍难的程序觉得无法下手,我采用了一些课前解决数学小问题的方法来激励大家的学习兴趣,这些小问题 不单单是脑筋急转弯,其中不少是很有代表意义的数学思考题。通过数学问题来做编程的热身运动,让学员在数学试题中激发自己的思维能力,记得有位专家曾经说 过,经常做做数学题目会使自己变聪明,很长时间不去接触数学问题会使自己思维迟钝。通过一些经典的数学问题来培养学员的思维的严谨性和跳跃性。很多人可能 不以为然,其实有些看似简单的问题并不一定能够快速给出答案,大脑也在不断的运用中变更加灵活的。不信吗?大家有兴趣可以做做下面这道题目,看看能不能在 1分钟之内想到答案,这只是一道小学数学课后习题。很多人认为自己的数学基础很好,但是据说这道题目90%以上的人不能在一个小时内给出正确答案。 证明:AB+AC>DB+DC(D为三角形ABC的一个内点)。 最后,多学多问,多看好书,看经典。我在这里向大家推荐两部可能大家已经很熟悉的经典的计算机算法教材,它们中间很多内容其实就是数学知识的介绍。第一 部是《算法导论》,英文名称:Introduction to Algorithms,作者:Thomas H. Cormen,Charles E. Leiserson ,Ronald L. Rivest ,Clifford Stein。本书的主要作者来自麻省理工大学计算机,作者之一Ronald L.Rivest由于其在公开秘钥密码算法RSA上的贡献获得了图灵奖。这本书目前是算法的标准教材,美国许多名校的计算机系都使用它,国内有些院校也将 本书作为算法课程的教材。另外许多专业人员也经常引用它。本书基本包含了所有的经典算法,程序全部由伪代码实现,这更增添了本书的通用性,使得利用各种程 序设计语言进行程序开发的程序员都可以作为参考。语言方面通俗,很适合作为算法教材和自学算法之用。另一部是很多人都应该知道的 Donald.E.Knuth所著《计算机程序设计艺术》,英文名称:The Art of Computer Programming。 Donald.E.Knuth人生最辉煌的时刻在斯坦福大学计算机系渡过,美国计算机协会图灵奖的获得者,是本领域内当之无愧的泰斗。有戏言称搞计算机 程序设计的不认识Knuth就等于搞物理的不知道爱因斯坦,搞数学的不知道欧拉,搞化学的不知道道尔顿。被简称为TAOCP的这本巨著内容博大精深,几乎涵盖了计算机程序设计算法与理论最重要的内容。现在发行的只有三卷,分别为基础运算法则,半数值算法,以及排序和搜索(在写本文之际,第四卷已经出来了, 我也在第一时间抢购了一本)。本书结合大量数学知识,分析不同应用领域中的各种算法,研究算法的复杂性,即算法的时间、空间效率,探讨各种适用算法等,其 理论和实践价值得到了全世界计算机工作者的公认。书中引入的许多术语、得到的许多结论都变成了计算机领域的标准术语和被广泛引用的结果。另外,作者对有关 领域的科学发展史也有深入研究,因此本书介绍众多研究成果的同时,也对其历史渊源和发展过程做了很好的介绍,这种特色在全球科学著作中是不多见的。至于本 书的价值我觉得BillGates先生的话足以说明问题:“如果你认为你是一名真正优秀的程序员读Knuth的《计算机程序设计艺术》,如果你能读懂整套 书的话,请给我发一份你的简历”。作者数学方面的功底造就了本书严谨的风格,虽然本书不是用当今流行的程序设计语言描述的,但这丝毫不损伤它“程序设计史 诗”的地位。道理很简单,它内涵的设计思想是永远不会过时的。除非英语实在有困难,否则建议读者选用英文版。