新書推薦:
《
理想城市:环境与诗性
》
售價:NT$
390.0
《
逆风翻盘 危机时代的亿万赢家 在充满危机与风险的世界里,学会与之共舞并找到致富与生存之道
》
售價:NT$
625.0
《
工业互联网导论
》
售價:NT$
445.0
《
孤独传:一种现代情感的历史
》
售價:NT$
390.0
《
家、金钱和孩子
》
售價:NT$
295.0
《
形而上学与测量
》
售價:NT$
340.0
《
世界航母、舰载机图鉴 【日】坂本明
》
售價:NT$
340.0
《
量价关系——透视股票涨跌脉络
》
售價:NT$
340.0
|
內容簡介: |
本书基于Matlab平台介绍了工程计算的相关概念、原理、方法和计算的实现过程。书中重要的知识点后都有相关的工程实例,这些案例更直观地描述了工程计算的应用场景和用法,同时加深了对基础概念的理解;每个案例都给出了相应的Matlab代码,使读者掌握一般的实现方法。
|
目錄:
|
出版者的话
译者序
前 言
第1章 计算机和程序开发导论1
1.1 背景1
1.2 计算机架构的历史1
1.2.1 巴贝奇差分机2
1.2.2 巨人计算机2
1.2.3 冯·诺依曼架构2
1.3 现代计算系统3
1.3.1 计算机硬件3
1.3.2 计算机存储器3
1.3.3 计算机软件5
1.3.4 运行计算机程序7
1.4 解释型程序的运行7
1.5 预期结果8
1.5.1 MATLAB简介8
1.5.2 学习编程概念8
1.5.3 解题技巧8
本章小结9
自我测验9
第2章 入门11
2.1 编程语言的背景11
2.1.1 抽象12
2.1.2 算法12
2.1.3 编程范式12
2.2 基本的数据处理13
2.2.1 启动和退出MATLAB13
2.2.2 变量赋值13
2.2.3 数据类型14
2.2.4 类和对象15
2.3 MATLAB用户界面16
2.3.1 命令行窗口16
2.3.2 命令历史窗口17
2.3.3 工作空间窗口18
2.3.4 当前目录窗口21
2.3.5 变量编辑器21
2.3.6 图形窗口21
2.3.7 编辑器窗口22
2.4 脚本23
2.4.1 文本文件23
2.4.2 创建脚本23
2.4.3 当前目录24
2.4.4 运行脚本24
2.4.5 脚本中的标点24
2.4.6 调试脚本25
2.5 工程实例—航天器发射25
本章小结27
特殊字符、保留字和函数28
自我测验28
编程29
第3章 向量和数组31
3.1 概念:使用内置函数31
3.2 概念:数据集合31
3.2.1 数据抽象31
3.2.2 同质集合31
3.3 向量32
3.3.1 创建向量32
3.3.2 向量大小33
3.3.3 索引向量33
3.3.4 缩短向量34
3.3.5 向量运算35
3.4 工程实例—力和力矩41
3.5 数组41
3.5.1 数组的属性42
3.5.2 创建数组42
3.5.3 访问数组的元素43
3.5.4 删除数组的元素44
3.5.5 数组运算44
3.6 工程实例—计算土壤体积50
本章小结52
特殊字符、保留字和函数52
自我测验54
编程54
第4章 执行控制57
4.1 概念:代码块57
4.2 条件语句的一般形式57
4.3 if语句58
4.3.1 通用模板58
4.3.2 MATLAB实现59
4.3.3 重要的概念60
4.4 switch语句61
4.4.1 通用模板61
4.4.2 MATLAB实现62
4.5 迭代的一般形式63
4.6 for循环63
4.6.1 通用模板63
4.6.2 MATLAB实现64
4.6.3 索引实现方式65
4.6.4 退出for循环65
4.7 while循环66
4.7.1 通用模板66
4.7.2 MATLAB实现66
4.7.3 loop-and-a-half的实现67
4.7.4 退出while循环68
4.8 工程实例—计算液体的体积68
本章小结69
特殊字符、保留字和函数70
自我测验70
编程71
第5章 函数74
5.1 概念:抽象和封装74
5.2 函数的黑盒视图74
5.3 MATLAB实现75
5.3.1 通用模板75
5.3.2 定义函数75
5.3.3 函数的保存和使用76
5.3.4 函数的调用76
5.3.5 可变数量的参数77
5.3.6 返回多个结果77
5.3.7 辅助函数78
5.3.8 MATLAB函数中的封装78
5.3.9 全局变量79
5.4 工程实例—测量固体79
本章小结81
特殊字符、保留字和函数81
自我测验81
编程81
第6章 字符串85
6.1 概念:映射、类型转换、分词、分隔85
6.2 MATLAB实现86
6.2.1 字符串的切片与连接87
6.2.2 算术运算和逻辑运算87
6.2.3 函数87
6.3 类型转换函数88
6.3.1 将数字转换为字符串88
6.3.2 将字符串转换为数字88
6.4 字符串的运算90
6.4.1 简单的数据输出:disp…函数90
6.4.2 复杂的数据输出90
6.4.3 字符串的比较91
6.5 字符串数组92
6.6 工程实例—加密93
本章小结95
特殊字符、保留字和函数95
自我测验96
编程96
第7章 元胞数组和结构体99
7.1 概念:异构集合99
7.2 元胞数组99
7.2.1 元胞数组的创建99
7.2.2 元胞数组的访问100
7.2.3 元胞数组的使用101
7.2.4 元胞数组的处理102
7.3 结构体103
7.3.1 结构体的构造和访问103
7.3.2 构造函数104
7.4 结构体数组106
7.4.1 构建结构体数组106
7.4.2 访问结构体的元素107
7.4.3 操作结构体109
7.5 工程实例—建造一个建筑物111
本章小结114
特殊字符、保留字和函数114
自我测验114
编程115
第8章 文件的输入和输出118
8.1 概念:串行IO118
8.2 工作空间IO119
8.3 高级IO函数119
8.3.1 探索120
8.3.2 电子表格120
8.3.3 带分隔符的文本文件121
8.4 低级文件IO122
8.4.1 文件的打开与关闭123
8.4.2 文本文件的读取123
8.4.3 读取文本文件的例子123
8.4.4 文本文件的写入124
8.5 工程实例—电子表格数据125
本章小结126
特殊字符、保留字和函数127
自我测验127
编程127
第9章 递归130
9.1 概念:活动栈130
9.1.1 栈130
9.1.2 活动栈130
9.1.3 函数实例131
9.2 递归的定义131
9.3 递归函数的实现132
9.4 异常133
9.4.1 早期的方法133
9.4.2 异常处理的通用方法134
9.4.3 MATLAB实现134
9.5 封装函数136
9.6 递归的例子137
9.6.1 检测回文138
9.6.2 斐波那契数列138
9.6.3 函数零点140
9.7 工程实例—机器人手臂运动141
本章小结144
特殊字符、保留字和函数144
自我测验144
编程145
第10章 解决问题的原则147
10.1 解决简单问题147
10.2 解题步骤148
10.3 运算概述148
10.3.1 基
|
內容試閱:
|
本书向之前没有或有很少计算经验的工科专业新生介绍计算的强大和乐趣。它是佐治亚理工学院向工程师介绍计算的入门读本。然而,它的内容已被大大地扩充了,以满足想了解编程的广大学生和教育者的需要。在本书中,为了理解计算,我们使用了MATLAB的基本语法和功能,这是一种用户友好的语言,正在成为工程学中最流行的计算语言之一。
第3版的新增内容
很多工程学科使用图的概念来表达一些具体含义。所以,这版我们增加了一章,从工程的角度讨论图处理的内容(第17章),着重介绍如何寻找最小生成树和寻找两点之间的最佳路径(分别介绍了精确方法和近似方法)。我们还介绍了MATLAB的一些新功能,学习编程入门课程的学生应该会比较感兴趣。例如,用户可以通过调整和保存值来操作绘图数据。虽然这些功能很有趣,但是通过编辑原始数据和重复绘图可以获得相同的结果,并且可跟踪性和可重复性更好。
在更新第16章中的排序算法时,出现了一个有趣的现象。使用老版MATLAB(R2008之前)时,归并排序和快速排序的递归实现没有达到预期的效果。我们推断的原因是:数据在输入和输出函数时,必须在工作空间和调用函数之间进行复制。但是,使用R2011时,同样的代码却运行得非常出色,这表明早期低效的参数传递机制已经得到了显著的改进。
教学方法
计算不是一门“旁观”的课程。学习计算的方法是使用计算系统来解决问题。本书不仅介绍了计算的概念及其MATLAB实现,还为学生提供了很多练习。本书使用工程领域的实例阐明了各种知识,提出了很多要点,还展示了学生可能遇到的一些案例。每一章都包含一些超出入门级基本内容的知识点。教师可以在两个学期慢慢地、充分地讲解本书的知识。同时,本书也为高年级学生提供了丰富的自学材料。
本书讲解各个知识点的方式如下:
1)全面解释一个计算的概念。
2)讨论其MATLAB实现。
3)提供一些让学生理解这个概念的练习。
为了帮助学生理解概念及其实现,本书使用了两种方法:通用模板和MATLAB清单。通用模板能让学生从整体上理解概念,可以应用于任何编程语言。MATLAB清单显示了如何在MATLAB中实现概念,清单后面还有对这些代码的详细解释。
本书的特点
练习:让学生“自己动手”,通过使用刚刚学到的知识来熟悉概念。每个知识点都有相应的练习。
样式要点:建议学生编写易于理解、调试和重用的高质量代码。
提示:加深学生对知识点的理解。在学生可能从中受益的内容间穿插了提示。
工程实例:提供稳健的模型,并将其应用于现实世界中的问题。每一章的最后都给出了不同工程学科的实例。
特殊字符、保留字和函数:为各章讨论的关键的MATLAB原理提供快速参考。
自我测验:帮助学生检查对各章内容的理解程度。
编程:提供各种大型项目,学生可以通过这些项目来巩固自己的技能。
各章概述
第1章讨论计算机架构的历史及其与当今计算系统的关系。该章概述了计算机的硬件和软件,以及程序如何运行。
第2章讨论计算的一些基本概念,然后介绍MATLAB用户界面的基本操作。该章还描述了如何通过脚本的形式来获得简单的MATLAB程序。
第3章介绍MATLAB区别于其他编程语言的基本机制—它能对同质集合执行数学和逻辑运算。
第4章描述控制代码块执行的常用技术—条件运算和迭代。
第5章描述如何通过定义可重用代码块来实现过程抽象。
第6章讨论MATLAB如何处理包含文本的变量。
第7章讨论按索引和按名称访问的两种异构数据集合。
第8章描述MATLAB读写数据文件的三个层次的能力—保存工作空间,读写特定数据文件的专用工具,处理任何类型文件的通用工具。
第9章讨论并演示一种重复执行代码的替代方法。
第10章介绍帮助学生解决新问题的思路,避免“一片空白”—如何开始一个程序。
第11章将学生从二维基本绘图引入绘制三维物体的高级工具中,利用这些工具能绘制出平滑的阴影效果和多种发光效果。
第12章描述实现矩阵计算的MATLAB能力。
第13章讨论如何使用向量和数组计算来处理彩色图像。
第14章演示如何对声音文件进行分析、合成和操作。
第15章介绍工程中几种常见的数值技术:插值、曲线拟合、积分和微分。
第16章给出排序数据的五种算法(插入排序、冒泡排序、快速排序、归并排序和基数排序),同时介绍这些算法特定的适用环境,然后比较它们应用于大量数据时的性能。
第17章讨论如何表示一般的图形,然后讨论如何解决两个重要的工程问题—寻找最小生成树、寻找图上两个节点之间的最优路径。
附录总结本书用到的MATLAB的特殊字符、保留字、函数,介绍ASCII字符集和计算机内部的数字表示,给出判断题和填空题的答案。
本书的阅读顺序
不是所有涵盖编程和MATLAB的课程都使用相同的教学大纲。本书旨在提供适用于不同风格、不同进度课程的教学内容。例如,第3~5章讨论MATLAB的数组操作、迭代和函数编写。引入这些概念的方法有三种。第一种方法是首先介绍数组的结构,然后引入更“传统”的迭代概念;第二种方法是先讲解迭代,然后介绍MATLAB特有的数组操作;第三种方法是先探讨函数。为了适应特定的教学风格,我们选择按照第一种方法来编写本书。但是,如果你更喜欢迭代或函数,可以按照自己的顺序来使用第3~5章。多年来,我们的课程在实践中已经变成了第三种方法,这样我们就可以使用函数接口来分隔学生的代码,以便自动进行代码分级。第6~9章应该按顺序讲解—各章之间存在依赖关系,改变顺序会变得很难理解。第10章是一个很难列入课程体系的重要章节,它在书中的位置还算比较合理。但是,在每个学期的那个时候,学生还没有准备好去思考更大的问题,所以我通常会在每学期结束时以复习的方式来讨论这些材料。第11章介绍了基本的绘图能力,是其余章节所需的。第12~17章实际上是独立的,可以按任何顺序进行教学,但是应该放在第2~9章和第11章之后。
补充材料
本书的各种补充材料可以从配套网站www.pearsonhighered.comsmith获取。所有读者均可查阅以下内容:
一些编程项目的解决方案。
一些彩色图。
所有MATLAB清单的源代码。
更多章节,包括面向对象编程、链表、N叉树和图、计算成本。
此外,通过访问www.pearsonhighered.comirc或发送电子邮件到computing@aw.com,Addison-Wesley教师资源中心的教师可以得到更多补充材料:
所有编程项目的解决方案。
PowerPoint幻灯片。
致谢
本书的基本理念和形成其框架的材料来源于Russell Shackelford教授1996年左右的工作。Melody Moore博士是佐治亚理工学院交互式计算系的副教授,他帮忙创建了许多教学材料(并被制作成幻灯片),这门课第一次使用的就是这些教学材料。非常感谢佐治亚理工学院航空航天工程系的James Craig教授,他和我一起教了CS1的第一个工程版本,还告诉我很多关于MATLAB的知识,我们一起开创了这门课,从最初的35名学生发展到现在的每学期超过1000名学生。这门课成了一个向学生介绍MATLAB语言的平台。
我要感谢以下审稿人在本书编写期间给予的帮助和意见:
Kenneth Rouse,奥本大学
Suparna Datta,东北大学
Gerardine G. Botte,俄亥俄大学
Mica Grujicic,克莱姆森大学
Kuldip S. Rattan,莱特州立大学
Y. J. Lin,阿克伦大学
Mark Nagurka,马凯特大学
Michael Peshkin,西北大学
Howard Silver,菲尔莱狄更斯大学
Steve Swinnea,德克萨斯大学奥斯汀分校
本书材料来自佐治亚理工学院每一位教CS1的助教、研究生、讲师和教授(人员太多,无法一一列举)的努力。特别是那些富有创造力的助教,他们为书中的例子提出了很多想法,极大地丰富了它的内容。Aaron Bobick教授说的一段话对本书做出了重要贡献。这段话将这门课从MATLAB编程课的边缘拉回到以CS概念为基础的课程。2004年秋,Bobick教授和我一起教CS1。学期初,他提出了一个非常简单的要求:如果每一堂课中明确地表达出计算概念,而不是让他和学生从教材中梳理出这些概念,那么会更容易讲授这门课程。
我无法充分地表达我对Addison-Wesley团队的感激之情,他们为本书的出版做了很多 “幕后”工作,他们是:Michael Hirsch、Emma Snider、Yez Alayan、Kayla Smith-Tarbox、Pat Brown和Jeff Holcomb。我也真的很感谢Kailash Jadli和他的团队在设计和维护第3版时所做的工作。
最重要的是,我要感谢其他两个人的贡献,没有他们就没有这本书的存在。在写这本书的过程中,我的妻子和我最好的朋友Julie一直给我力量和鼓励。Bill Leahy是我1998年春天教的第一个CS1班的学生,他还继续攻读了计算机科学硕士学位,现在是计算机学院的讲师。除了要感谢他对本书无数的技术贡献之外,我还要感谢他的友谊、鼓励和睿智的判断,在我编写本书的过程中,这些都给了我很大的启发。
|
|