内容提要    本书介绍了工程计算中的一些基本概念及其其MATLAB实现。它采用将计算机程序设计院的基本思想融入到MATLAB的内容之中的介绍方法,首先从总体上介绍有关计算的概念,在每台然后讨论该概念的MATLAB实现 ,并给出相关的MATLAB模板或代码清单。    且每一章都会讨论一个有针对性的工程实例,以增强读者解决实际问题的能力。同时,章后面提供了大量容易上手的练习,读者可依此检验对本章内容的掌握程度。本书还一本具有很少或者根本没有计算经验的工程专业初学者,不仅介绍了计算的基本概念、MATLAB实现 ,更提供了大量的MATLAB模板、代码清单及工程实例向我们展示了计算的强大力量。本书的前身是作者在乔治来工学院为工程师们介绍科学计算的课程式讲义,它经过 了不断的修改和完善。    因此,本书非常适合作为工程式计算机专业学生系统学习的教材同时也可发作为广大科技工作撑握MALAB计算工具的自学用书。
这本书将具有很少或者根本没有计算经验的工程专业初学者引入科学计算的领域,向他们展示计算的力量。它的前身是笔者在乔治亚工学院为工程师们介绍科学计算的课程讲义。经过不断地完善和修改,这本书已经能够适应更为广泛的读者群的要求,对于因其他原因想要了解程序设计的学生和教师来说,它也一样很有帮助。在本书中,为了帮助读者理解科学计算,介绍了一种新兴的界面友好的语言—— MATLAB,它是当前工程界最为流行的计算语言之一。 教学风格 计算不是吸引许多观众的体育比赛,学生只能通过计算来学习计算。这本书不仅介绍了计算的概念及如何用MATLAB来实现,还给学生提供了大量容易上手的练习。书中举例说明了一些工程应用的基本思想,给出了编程风格,还介绍了一些学生可能会遇到的典型问题。 除了介绍入门课程的基本内容之外,每一章还会讨论一些更加深入的课题。因此,教师可以选择用于循序渐进的教学模式,用两个学期的课时讲授这门课程,把内容介绍得更加全面和完整。高年级学生也可通过自学本课程来丰富自己的计算知识。 本书介绍程序设计的总体思路如下: 1. 从总体上介绍一个有关计算的概念 2. 讨论该概念的MATLAB实现 3. 提供相关练习,帮助读者掌握概念 为了方便学生更容易地理解概念及其具体实现过程,本书采用了两种特殊的描述方法:通用模板和MATLAB代码清单。通用模板从总体上向学生展示了概念的基本思想,它可适用于任何语言。MATLAB代码清单告诉学生概念是如何在MATLAB中实现的,代码清单后面还有代码的详细说明。 本书的特色 ● 练习:要求学生“自己动手”解决,在练习中使用刚刚学到的知识,进一步掌握概念。每介绍完一个新的概念,后面都附有练习。 ● 编程风格:提供建议,帮助学生编写高质量的程序—— 使代码易于理解、调试和重复使用。 ● 提示:丰富学生对内容的了解。“提示”分散在整本书中,学生可以从这些额外的“旁白”中获得不少知识。 ● 工程实例:提供健壮的模型,可用于解决实际问题,对学习有促进作用。每章的末尾都附有来自不同工程领域的问题。 ● 特殊字符、保留字和函数:有助于读者快速查阅每一章重点讨论的MATLAB操作。 ● 自测题:帮助学生检验自己对每章内容的掌握程度。 ● 程序设计题:提供各种类型的设计问题,帮助学生巩固知识。 内容概述 第1章:“计算机和编程概述”讨论当今计算系统中使用的计算机体系结构的发展历史。这一章从总体上介绍了计算机软硬件和程序的执行方法。 第2章:“MATLAB入门”讨论了一些基本的计算概念,然后介绍了MATLAB用户界面上的一些基本操作。除此之外,这一章还介绍了如何采用脚本的形式编写简单的MATLAB程序。 第3章:“数组”阐述MATLAB系统与其他语言的基本区别—— 它可以直接对存放同类数据的集合进行数学和逻辑操作。 第4章:“流程控制”介绍了控制代码块执行过程的常见方法—— 条件操作和循环。 第5章:“函数”阐述如何通过可重用代码块的定义来实现过程抽象。 第6章:“字符串”讨论如何在MATLAB中操作包含文本的变量。 第7章:“元胞数组和结构”讨论两种异类数据集合,它们分别通过索引和名称进行寻址。 第8章:“文件输入输出”在三个层次上讲述MATLAB进行数据文件读写的能力—— 保存工作区、利用专门工具读写特定类型的数据文件及使用可处理任何文件类型的通用工具。 第9章:“递归”讨论并举例说明了另一种广泛使用的代码块重复方式。 第10章:“解题原则”讨论如何设计一个新问题的求解方案,避免“一张白纸”问题—— 如何着手解决问题。 第11章:“绘图”向学生展示MATLAB的绘图功能,内容涉及二维基本绘图指令,以及能够绘制具有光滑着色,并且表示多光源效果的三维物体图像的高级工具。 第12章:“矩阵”阐述MATLAB中实现矩阵代数的特定工具。 第13章:“图像”讨论如何利用向量和数组代数处理彩色图像。 第14章:“声音的处理”说明如何分析、合成和操作声音文件。 第15章:“数值方法”介绍工程中常见的数值技术—— 插值、曲线拟合、积分和微分。 第16章:“排序”给出了5种数据排序算法—— 插入排序、冒泡排序、快速排序、归并排序和桶排序,每一种均在特定条件下有效,然后将它们应用到大量数据的排序过程中,从而比较它们的性能。 “附录”汇集了本书涉及到的所有MATLAB特殊字符、保留字和函数,还有ASCII字符集、数的内部表示、Web参考资料、判断题和填空题的答案等。 本书内容的组织方式 并不是所有介绍程序设计和MATLAB的课程都采用同一套教学大纲。《MATLAB工程计算》一书在设计时就考虑到了不同的教学风格和不同的讲课速度。例如,第3~5章包括MATLAB数组操作、循环和编写自定义函数等内容。介绍这些概念的适当途径有三种。一种是先讲授数组的概念,然后是更加“传统的”概念—— 循环;另一种是先讲授循环,然后介绍MATLAB的特定数组操作;第三种是先讲授函数。笔者选择使用先介绍数组的方式来组织这本书,以适应某种特定的教学模式。然而,也完全可以先学习循环或者函数,根据个人的喜好来安排第3~5章的顺序。 笔者曾经在课堂上尝试用各种不同的顺序来介绍第1~9章的内容。从教师和许多学生的角度来看,这些章节在本书中的排列方式是最自然而直接的一种。另外,第10~16章实际上是相互独立的,因此这几章的内容可以按照任何顺序讲述。 补充 本书涉及到的各种补充材料可以从本书的相关站点上下载。下面是所有读者都可以获取的内容: ● 部分程序设计题的答案 ● 所有MATLAB代码清单列出的源代码 ● 额外的章节,包括图搜索、面向对象程序设计、链表、二叉树、N-叉树和图,以及计算开销。 除此之外,具有教师资格的读者还可以从Addison-Wesley教师资源中心下载以下内容(请登录,或者发送E-mail至computing@aw.com信箱)。 ● Web参考资料 ● 所有程序设计题的答案 ● 讲课时使用的幻灯片