译 者 序
数值方法原属于数值计算的问题,现在又引入了计算机。本书从应用的角度来描述数值方法,又直接用计算机来实现这些方法,这不仅对于学生,而且对于广大工程技术人员来说,是很有帮助的。有了本书,对数学不很精通的人也能解决工程中的数值计算问题,因为书中有了现成的程序;而对计算机不很熟悉的人来说,也能用计算机解决数值计算的问题,也是因为书中有了现成的程序。这就是本书的最显著的特点。
本书不仅可以作为高等院校理工科专业《数值方法》等课程的教材或参考书,也是广大工程技术人员在进行数值计算时的一本很好的工具书。
担任本书主要翻译工作的有徐士良、葛兵、徐艳,同时参加翻译工作的还有马尔呢、白小玲、徐娟、刘庆元、张苹、彭明静、卢谦、王瑄等。
因水平有限,译文中有错误或不妥之处,恳请读者批评指正。
译者前 言
本书是一本关于使用计算机程序语言C++求解数值问题的书籍,它展示了计算机在解决科学和工程问题中所扮演的重要角色。计算机除了速度优势外,它们还具有准确性、灵巧性和多功能性。
你可以找到很多相关的书籍,这些书可以让你很好地认识数值方法和如何应用它们去解决问题。所以问题来了: 我们还需要另外一本这方面的书吗?当我让同项目中的同事去写一本关于数值方法的书时,他们抱怨说: “什么?另一本书?”我确信,一本能在提供计算机语言的同时,清晰示范出如何使用它们解决科学工程问题的数值方法的书是必要的。
有很多理由来支持这一观点,其中最重要的是,近些年,C++语言已经成为软件开发者的首选,因为它有很多吸引人的特征,很多科学工程学科的学生毕业后都选择了软件开发的职业。
市场上使用这一强大语言的数值方法的书籍并不多,本书在第一章对C++语言作了简短的介绍。现在,学校里会讲授C程序设计语言。在很多的工科院校,工科新生都要学习高级C和C++语言。所以,程序设计语言不会成为计算机实现数值方法的障碍。
目前,一门关于数值方法的课程通常会达到一周2~3小时的授课以及3~4小时的计算机实验部分。上机时学生可以在计算机上实践算法。本书就是针对这样的课程而写的。它主要用于大学工科课程。不必将15章的内容在一个学期内全部讲完,根据学生的需求,教师可以挑出部分章节进行讲授。本书也适用于那些需要计算机数值方法实现的专业人士。
本书由三个主要部分组成: (1)数学基础(包括一些定理和推论); (2)科学工程中的方法应用; (3)计算机实现。这三部分涵盖了本科生的整个课程,很少有一本书能包括全部内容。在市场上能够看到很多优秀的书籍,这些书籍都提供了数值方法的理论。本书从应用的角度来描述数值方法。那些简单的问题可以通过手算得到结果,但重点是如何使用计算机来解决问题。就像计算机手册一样,很多已解决的问题会在所有的章节出现,便于概念的理解。学生需要对每章最后给出的问题进行实践。并详细参考在每章结尾处列出的参考书籍,对本章中的主题进行深入学习。在本书的最后给出了很多不错的参考书籍,建议学生阅读。
在学习了一个程序如何工作以及如何开发这样一个程序后,你足以理解一个数值算法是如何工作的了。此时你可能还能开发出一个简洁的程序。然后你就可以开始使用像MATLAB、Mathematica、 Polymath、 NAG和IMSL这些商业软件了。
我要感谢IIT Guwahati的主任和代理主任的支持,并出版了本书。我的学生们一直希望有一本这样的计算机程序书,他们给出了有价值的反馈和建议,为此我表示感谢。准备本书期间,我得到了姐姐Kakali以及双亲一贯的支持。我的同事很热情、亲切友好并且很配合工作,我同样要感谢他们。我要特别感谢我以前的同事--Anupam Shukla教授对我写这本书的支持。最后,我想感谢出版者Prentice-Hall of India,特别是经理和编辑与发行组,感谢他们在出版本书过程中的紧密合作。
如果本书能激发大家对数值方法及其计算机实现的兴趣,我会感到很高兴。欢迎广大读者对本书内容提出宝贵意见。
Pallab Ghosh
IIT Guwahati
