打开主菜单

求真百科

数值方法

来自 孔夫子网 的图片

数值方法》,副标题:C++与C#语言描述,王乐 著,出版社: 中国轻工业出版社。

中国轻工业出版社有限公司(简称“轻工出版社”)成立于1954年10月。多年来,轻工出版社秉承着“立足科技,专注生活”的出版理念,为我国的出版事业奉献了一大批特色鲜明的图书、期刊、音像制品及网络电子出版物,深受广大读者喜爱,得到业内普遍认可和好评[1]。年出版图书1500余种,书刊码洋近4亿元[2]

目录

内容简介

计算方法、科学计算、数值方法、数值分析中的主要内容基本相同,都是讲解如何实现数值计算,只是侧重点不尽相同,有的侧重算法本身的精度和误差分析,有的则侧重程序的编写与实现。数值计算的核心就是对数据的操作。而数据大多数以矩阵的形式存在。数值计算的算法即数值方法,大多数是公开透明的,只是实现过程需要的工作量比较大,有的较为复杂。进行数值计算的软件平台非常多,常见的有 MATLAB、Mathematica、R、Python等 , 大多数实现过程也都很简单,短短几行代码就可以实现复杂的过程,根本不需要知道算法实现的细节。

关于数值方法(计算方法、数值分析、科学计算)的书籍非常多,也非常成熟。针对不同的数值问题,讲解的主要内容都是相同的。各种教材更多关注算法本身相关的概念、步骤、精度、误差等数学相关概念。而在如何将算法变成程序实现方面却非常少。

讲述数值计算程序实现的教材大多数以 MATLAB 为主,因为 MATLAB 具有强大而简单的矩阵运算,声明和使用矩阵都非常方便,因此学习数值方法算法的实现过程变得简单。而与 MATLAB 相同的 Python,同样作为解释型语言,由于其完成矩阵的操作略显麻烦,需要调用 numpy 模块,目前没有发现用 Python 语言讲述数值计算方法的书籍,但是直接用 Python 进行科学计算的书籍却不少。R 语言同样作为解释型数据分析语言,在国内的用户非常少,更很难见到其实现数值计算。既然数值方法中的算法在大多数数值计算软件中都可以直接简单调用函数名称实现,那为什么还要学习数值计算方法自己编程实现科学计算呢?这是因为不经过编程实现数值计算算法的训练过程,就不可能深入理解数值计算方法的实现过程与细节,

计算方法的编程能力与技巧得不到有效锻炼,更不容易顺利地编写更多具有复杂数值算法的程序。数值方法编程是学习数值方法的有效和必然途径,可以为提高数值计算水平打好基础。

针对数值方法编程,在编译型语言上实现更具有意义,因为编译型语言应用范围广泛,手机移动端、个人用户端、服务器端、各种环境下都会用到编译型语言进行编程。编译型语言中 C 语言、C++、C#、Visual Basic、Java 这几种语言的使用者数量庞大。学习使用 C++ 与 C# 语言的人员,并不一定同时熟悉 MATLAB 或者 R 这类数值计算语言。在采用 C++ 和 C# 等语言编程过程中,直接遇到的数值计算问题非常不方便,解释型语言虽然可以方便地处理数值计算问题,但是需要在编译型语言与解释型语言之间交互编程,而且这种交互编程由于 API 接口的开放程度限制并不能灵活处理特别复杂的计算问题。例如 C++ 或者 C# 与 MATLAB 之间交互编程,插值函数与优化函数都不能方便生成 .NET 组件与动态链接库。所以在编译型语言中实现数值计算很有必要,使得通用编程与数值计算编程有机结合起来。

本书采用编译型语言作为数值计算方法的程序编写语言,具体来讲就是采用 C++语言和 C# 语言同时描述书中的算法。这主要是基于 C++ 和 C# 语言语法较为相似,而且建立矩阵类比较容易。一方面,使用 C++ 和 C# 语言编程的技术人员非常多,对理解数值计算方法的需求很大;另一方面,市场上关于 C++ 和 C# 描述数值方法的书籍非常有限,大多数需要参考基于 MATLAB 计算方法的书籍。因此,这里同时采用两种语言描述数值计算算法。语言只是描述方式,背后算法是相同的。

本书同时采用 C++ 与 C# 两种流行的计算机语言实现数值计算方法,目的就是让大家掌握计算方法的基本算法本身,把更多精力放在如何通过基本算法实现更复杂的数值计算问题上。增强使用计算机编程语言编写数值计算程序的能力与信心。由于 C++ 与 C# 语言在实现算法的过程与效果上都是相同的,除了实现过程的微小差异,程序的主要内容是相同的。由于国内 C++ 的使用者更多,本书更多算法将以C++ 为主编写,不再所有程序都同时采用 C++ 与 C# 程序实现一遍。在程序算法上如果没有特别的差异,对于复杂问题不再以 C# 展示具体的程序。当然,C# 用户也不必担心,C++ 程序做微小改动即可转变为 C# 程序并在 C# 平台上正常使用。即使没有相应C# 版的程序也可以采用 C++/CLI 对 C++ 程序包装,使用 C# 与 C++ 混合编程。

本书主要介绍数值计算方法的主要内容,包括非线性方程求解,线性方程组求解,插值与拟合,数值微分,数值积分,常微分方程(组)求解,数值优化,以及偏微分方程求解。同时本书将简单介绍统计分析、神经网络的基本内容。本书的定位不是 C++ 和 C# 语言的学习教程,同时因为作者能力所限,对于 C++ 和 C# 语言的介绍并不深入,使用的编程技巧也是够用即可。同时,本书也不是单独介绍数值方法的教程,由于讲述数值方法的书籍浩如烟海,作者并不想只做文字的搬运工,故对其他书中常见的内容并不做过多的描述,总体原则就是将数值方法的内容讲清楚即可。虽然本书中的程序没有提供注释,但是程序编写规范,具有很强的自明性,了解计算方法的人必然很容易看懂程序。本书的意义是让不熟悉数值计算的人变得熟悉数值计算,让熟悉数值计算的人变得精通数值计算。如果读者需要本书的计算程序,请通过电子邮箱联系发送。E-mail:wangleztri@outlook.com.

由于水平有限,书中难免存在疏漏之处,恳请广大读者批评指正,以便后续修订完善。

参考文献

  1. 我国出版社的等级划分和分类标准,知网出书,2021-03-01
  2. 关于我们,中国轻工业出版社有限公司