前言 随着信息技术的发展,我们经常会收发电子邮件、网购、追剧、玩电子游戏等,但这是否意味着我们非常熟悉身边的这些新技术呢?虽然每天都要和各种各样的数字媒体打交道,但是有能力自己创建并分享数字内容的人不多。随着技术的进步,不远的将来,生活在这个“数字世界”的“数字原住民”应既是消费者也是生产者。 大部分人可能认为编写计算机程序是专业性极强的工作,是少数人才可以完成的任务。其实并非如此。学习计算机语言就好比学习一门自然语言、游泳或者驾驶汽车,大多数人稍微花点时间便能够掌握。 计算机语言是一种特殊形式的语言,它可以被用来定义计算机程序,向计算机发出指令。计算机科学发展至今,产生了600多种计算机语言,至今仍流行的语言有20多种,新的计算机语言也在不断产生。它们可分为三类: 机器语言、汇编语言和高级语言。这里“高级”仅指语言发展的阶段,并不是说它的功能较前者更强。对于初学者来讲,应该从高级语言入门,因为计算机高级语言接近于数学语言或人类自然语言,学习起来较为容易。 一般情况下,学习计算机编程有如下一些困难: (1) 编程语言的语法规则晦涩难懂。 (2) 语言教程中所涉及的例子远离我们的日常生活经验。 因此,入门学习的计算机语言需要满足以下两个条件: (1) 语法规则简单。 (2) 学到的知识可以很快应用到实践中。 那么,Python能够满足笔者提出的这两个条件吗?Python的语法规则相对于C++或Java简单,能够满足条件1。Python拥有丰富的内建和第三方扩展库,因此有着丰富的应用方式,也能够满足条件2。在Python语言的众多应用中,处理数学问题无疑是非常热门和有实用价值的应用方向,因此,笔者在学习Python编程的过程中,便萌生了编写一本书,介绍如何使用Python处理数学问题的念头。 Python语言拥有丰富的针对数学的扩展库: NumPy库支持高维度矩阵运算,内含大量针对数组运算的函数; Matplotlib为Python语言提供了绘图扩展; SciPy库支持线性代数、微积分、概率统计等; SymPy库使得Python语言能够支持符号计算。在熟悉Python的基本语法结构之后,如果能够熟练掌握这些库的使用方法,则在日后的工作和学习中完全可以使用Python来处理遇到的数学问题。 本书首先简要介绍了Python的基本语法,涵盖了处理数学问题时需要用到的基本语法。接下来详细介绍了第三方库的使用方法。相关章节如果继续深入,则完全可以独立成书。特别是关于如何使用Python进行数值计算,目前已有多本非常优秀的著作或译作出版。希望本书中的相关章节能帮助读者熟悉如何使用Python的数值运算库。这样,在将来阅读相关图书时,可以专注于算法而不会受困于Python语法和相应库的使用方法。 一本书的编纂并非易事。很多自以为已经掌握的概念,在编写例程时,会突然变得很生疏。所幸,Python的世界是开放的,很多问题都能够通过互联网找到答案,因此,当读者在遇到本书中未曾涉及的概念时,可以通过互联网寻求帮助,笔者相信读者一定能够找到满意的答案。由于本人能力的限制,书中难免存有舛误,欢迎读者指正。 要特别感谢清华大学出版社的赵佳霓编辑,她在本书的编辑过程中给予笔者大量帮助。此外,还要感谢曾庆华、韩雷、曹睿、刘亚辉,感谢他们抽出宝贵的时间通读本书的初稿,指出错误并给出了修改建议。 张骞 2022年1月 本书源代码