数学是一切科学的基础, 融于“现代化产业体系”建设和发展的各个领域. 数值计算问题普遍存在于新工科、新医科等领域的数学模型求解中,计算数学作为数学学科的一个重要分支, 旨在提出和研究借助计算机解决各种数学问题的高效而稳定的算法.
数值分析是计算科学的重要专业基础课,主要包括数据插值与逼近、数值微积分、(非)线性方程(组)求解、常(偏)微分方程数值解、矩阵计算、数值优化等内容.
实验实践教学一直是高校教学的重点, 也是“怎样培养人”(提升人才培养质量) 的关键环节. 笔者想在从实验实践教学方面, 强化学生的应用能力和创新能力, 提高学生的算法素养, 增强学生的数学实践与审美意识,写作《Python数值分析算法实践》一书.
本书的核心价值是基于数学原理设计和编写算法, 即“自编码”(区别于调用库函数), 相当于把原理照进现实, 让“静态”的原理“走动”起来, 进而解决数学模型中的数值计算问题. 可把“自编码”过程等价于“板书数学原理的推导和证明”, 两者仅仅是平台区别而已, 数学原理推导借助于黑板, 而“自编码”借助于Python 语言.
针对“自编码”, 笔者认为仍有三点需要思考:
一、数值计算是科学计算的基础, 从分析 (知识原理) 到计算 (计算方法或算法设计)、从计算到编码(计算机编码实现)、从编码到实际问题 (科学或工程问题) 的求解, 应是相辅相成的. 学生在“自编码”过程中, 可拓展数值计算方法的思路 (如验证原理、多角度分析问题等) , 加深对原理的认知, 进而领悟数值计算的奥妙和计算之美.
二、“自编码”可强化学生的实践动手能力, 推进学生在实践基础上的理论创新, 提升学生应用研究的计算基础. 以学术研究为例, 创新的前沿理论绝无现成的库函数, 而学生必然自己动手设计和编写算法, 以突破某领域框架范围内的计算数学问题.
三、当下新兴科技所涉及的数值计算、智能计算与算法设计、算法的高效性、问题求解的高精度关联密切. 在教育教学中, 学生“自编码”素养的提升可体现新时代“从零研发芯片”的勇气和担当.
综上, 学生应具备良好的算法设计和编写能力, 且应在学习阶段打下扎实的基础. 本书以数值分析原理为纲, 以算法设计和编写为本, 旨在提供一种提高学生“自编码”能力的思路, 抛砖引玉.
算法的设计以理论知识为其灵魂, 其核心是背后严谨科学的数学原理. 算法设计需借助于计算机语言实现, 但语言不是目的, 其本身也不是问题的关键或主要难点. 算法设计的关键或难点在于如何借助于某种语言验证原理、设计算法、科学计算、结果分析以及应用扩展研究等.
此外, 读者应该知道, 算法设计的难点还在于对原理知识的理解程度, 同时也在于算法设计的艺术、算法的可计算性与计算复杂性, 这些都应在实践中逐步积累.
本书的所有算法均采用Python语言编写, 原因有三:
其一, Python语言本身的优雅、明确、高效和简单的设计哲学;
其二, Python 汲取了其他语言数值计算的优点, 这意味着Python可以与以数学原理、数值计算为基础的学科(如机器学习) 有效结合, 适合进行数据分析与统计学习建模;
其三, 与当下时代的科技需求相符合. 比如,人工智能尤其是以深度学习为代表的智能计算, 多数以Python为开发语言.
本书包含了普通高等院校本科生、研究生数值分析或计算方法相关教材的绝大部分算法, 并在此基础上拓展了大量优秀算法, 且加入了该领域专著中所涉及的某些问题的部分优秀算法.
全书基本涵盖了现代数值分析中的重要基础方法, 共分13章, 除第1章Python与科学计算基础知识之外, 算法部分共分12个问题模块, 具体包括:
数据插值(第2章)、函数逼近与曲线拟合(第3章)、 数值积分(第4章)、数值微分(第5章)、解线性方程组的直接方法(第6章)、解线性方程组的迭代法(第7章)、非线性方程求根(第8章)、非线性方程组的数值解法(第9章)、矩阵特征值计算(第10章)、 常微分方程初边值问题的数值解法(第11章)、偏微分方程数值解法(第12章) 和数值优化(第13章).
在内容结构设计上, 全书对12个数值计算领域均完整呈现了算法的实现过程, 共设计算法(独立Python文件) 约140个, 同时结合经典的数值算例辅助学习者理解和应用, 即每个算法均有算例,用于验证算法的功能正确性, 以及算法的性能和求解精度等, 内容做到图文并茂,教学相长.
Python可视化图形中的各种标记均采用了LaTex格式, 遵从数学的严谨性、规范性和科学性.
此外, 为了强化学习者的创新实践能力, 提高学生的算法设计信心, 每章均配备实验题目, 有助于把学习者的兴趣和能力引向更深的层次.
当然,笔者更希望读者可以对数值分析的全貌和应用背景有更深入的了解, 而不局限于在某几个具体的算法实现上.
本书可作为数学与应用数学、信息与计算科学专业高年级本科生数值分析或其他理工科专业计算方法实验实践配套教材(加*的内容学生可自由学习), 特别适合作为计算数学专业研究生算法设计的参考用书, 或对计算数学感兴趣的工程技术人员参考阅读. 读者应具备数学分析、高等代数或高等数学、线性代数的知识, 以及Python程序设计方面的初步知识.
本文节选自《Python数值分析算法实践》(科学出版社,2024)前言.
(1) 本书包含了普通高等院校本科生、研究生数值分析或计算方法相关教材的绝大部分算法, 从实验实践教学方面,强化学生的应用能力和创新能力, 提高学生的算法素养, 增强学生的数学实践与审美意识.
(2)本书的核心价值是基于数学原理设计和编写算法, 即“自编码”(区别于调用库函数), 相当于把原理照进现实, 让“静态”的原理“走动”起来, 进而解决数学模型中的数值计算问题.
(3) 本书的所有算法均采用Python语言编写, Python可以与以数学原理、数值计算为基础的学科(如机器学习) 有效结合,与当下时代的科技需求相符合.
(4) 结合经典的数值算例辅助学习者理解和应用, 每个算法均有算例,用于验证算法的功能正确性, 以及算法的性能和求解精度等, 内容做到图文并茂,教学相长.
(5)强化学习者的创新实践能力, 提高学生的算法设计信心, 每章均配备实验题目, 有助于把学习者的兴趣和能力引向更深的层次.
(6)电子课件PPT,程序源代码齐备,易教易学.