前言 FOREWORD
在大学阶段,我们获得知识的一般途径是通过对教材的理论学习及相应的实验验证。具体到教材的每一节(章),大体上是先提出某个已被确定的理论,然后由简入繁组织一些模式相似的例子,用于练习或验证先前提出的理论,这种学习方法实际上就是对模型(model)的学习。在学习数学的过程中,如果能逐步自我训练,把每一节的学习当作一个模型去对待,理解这个模型的理论基础,它能解决什么样的问题以及如何解决,这种训练无疑比陷入题海或过分专注于一些技巧要好得多。积累的模型多了,在解决实际问题时才会更快地定位到正确或接近正确的解决模式上,也才有可能得到这个问题的确切解或近似解(解决方案),但如果用错误的模型去匹配一个未知问题,结果很可能大幅偏离正解,甚至南辕北辙。
科学计算是对已知理论或假设,运用特定算法或程序,并对这一理论(假设)进行验证或进一步探索的试验过程,是手工计算在机器上的延伸与拓展,同时也是科技人员必须具备的一项技能。由此,我和我的同事编写了和“高等数学”(含“线性代数”)、“概率论与数理统计”和“运筹学”几门基础课程配套的科学计算辅导用书,我们希望科学计算从这几门基础课开始生根。
Python是当下开发语言的第一选项,原因在于以下两方面:①就科学计算来说,基于Python的库是相对完备且开放的,使用人群的基数也决定着学习资源的品质与多样性;②相对于C、C++、Java等编程语言,Python对于非计算机类专业来讲有着更为合适的生长土壤,我们不太可能用C语言来求解诸如热处理问题、资源配置问题或实验中某些因素的交互作用问题等。
数学为我们提供了丰富多彩的素材用以学习编程:从读者已掌握的知识(例如绘制一条抛物线,计算一个函数的导数)到未知的领域(如求一个复杂函数的极值),这期间有验证的快乐,也有探索的艰辛。在不断重复这些活动的过程中学会熟练运用这一工具,工具的熟练使用反过来也会帮助我们对特定问题进行更为深入的探讨与研究。
Visual Studio Code为我们提供了良好的工作环境。
基本理论和手工计算是根本,然后才可以使用机器进行实践,切莫本末倒置。如果自己无法解释程序或程序输出,那就要调整为理论优先。建议读者依据自身对基本知识的理解,可以采用理论与实践按节融合、按章融合或学期后融合的策略。
本书的第1~3章由贾爱娟编写,第4~6章由张灵帅编写,第7~9章由陈继红编写,第10、11章由郭晓玉编写,第12章由杨怀霞编写,第13~21章由毛悦悦编写,第22~33章由毕文斌编写。文档的审核及校对由赵文峰、程方荣、崔红新和时博完成。
毕文斌
2022年6月