MATLAB程序设计导论
作者 : [美] 尤金尼·E.米哈伊洛夫(Eugeniy E. Mikhailov) 著
译者 : 于俊伟 刘楠 译
丛书名 : 计算机科学丛书
出版日期 : 2019-05-16
ISBN : 978-7-111-62598-8
定价 : 69.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 203
开本 : 16
原书名 : Programming with MATLAB for Scientists:A Beginner's Introduction
原出版社: Taylor & Francis -CRC Press
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书分三个层次进行内容组织:计算基础、使用MATLAB解决日常生活问题、深入研究和扩展。计算基础部分除了介绍MATLAB的基础知识,还包含计算历史和编程语言的简要介绍,以及良好的编程实践。这部分内容凝练了大学中常开设的“计算机基础”和“计算机科学导论”等课程的精华。第二部分主要涉及线性代数方程求解、数值求导、求根算法等内容,利用高等数学和线性代数等课程的基本知识,简单快速地解决日常生活中的常见问题。最后一部分是关于MATLAB的深入研究和扩展,介绍了随机过程、蒙特卡洛仿真、优化问题和离散傅里叶变换等内容,当你深入到实际科学研究和工程项目时都会用到这方面的内容。

图书特色

图书前言

目标读者
本书适合任何想学习MATLAB编程的读者。如果你正在寻求关于编程、MATLAB和数值方法的简明易懂的教程,那本书正好适合你。我们希望读者能在这里找到处理日常计算和程序设计问题的必要知识。即使是经验丰富的读者也能从书中得到对常见方法的有用见解,找到可能遇到的困惑问题的解释。
我们从简单的概念开始,帮你逐步掌握建模、模拟和分析真实系统的技能。此外,还概述了成功的科学或工程工作所必需的数值方法。本书帮你熟悉计算的“学问”,这样当你决定学习高级技术时,会知道该学习什么。
本书是根据“科学家的实用计算”(Practical Computing for Scientists)课程材料编写的,该课程为威廉与玛丽学院开设的一学期课程,教学对象为尚未确定主修学科的学生,以及物理、神经科学、生物学、计算机科学、应用数学和统计学或化学等专业的学生。成功学习这门课的学生水平也不相同,有的是大一新生,有的是大四毕业生,有的介于两者之间。
为什么选择MATLAB
我们选择MATLAB作为编程语言,是因为MATLAB对一些已实现的功能有很好的平衡,这些功能对科学家来说非常重要又易于学习。MATLAB为用户隐藏了许多底层细节,你不需要考虑变量类型、编译过程等。MATLAB使用起来就是这么便利,它可以在不跟踪每个元素的情况下对整个数组进行计算,这正是MATLAB的核心。
从教师的角度来说,你不必为学生安装MATLAB而担心。软件安装过程很简单,学生都能独立完成。更重要的是,MATLAB在Windows、Mac和Linux等操作系统中的界面和工作方式都一样,在不同计算机上产生的结果完全相同。
从学生的角度来说,MATLAB可能是从事工程或科学研究工作最常用的编程语言。因此,如果你现在学习MATLAB,或许就不需要再强迫自己学习其他行业标准编程语言了。
MATLAB的主要缺点是价格昂贵,如果学校或单位不能提供,就得高价购买了。但这不是一个大问题,你可以选择免费的替代软件GNU Octave。本书所有章节的练习,除了数据拟合外都可以通过Octave完成。Octave中的数据拟合使用了一套不同的命令,其他部分和MATLAB的工作方式相同(对于一些高级选项可能需要稍作调整)。
本书不包含哪些内容
本书没有广泛介绍MATLAB命令,因为MATLAB已经有一个很好的手册,我们没有必要再编写一本,也无须重做一个在线教程。
本书也不能代替讲解数值方法的来龙去脉的书。我们尽可能讨论可以用数值方法完成的有趣的事情,而不必关心最有效的实现方法。然而,这本书的开头是个例外——通过数值算法的实现解释了一些编程基础知识,这些算法大多是MATLAB的内置函数。
如何阅读本书
如果你不是编程新手,可以跳过第一部分的大部分内容,但是要确保熟悉其中的元素操作、数组操作与数组元素操作之间的区别以及数组切片等内容。
如果你是科学家,那么绘图和数据拟合是必须掌握的。请务必阅读第6章。如果需要学习关于数据分析的重要内容,也需要学习这一章。
第三部分在某种程度上可作为自选内容,尽管我们十分推荐优化问题一章(即第13章)。令人惊讶的是有很多问题本质上都属于优化问题,可以用第13章提出的方法来解决。可能在本科高年级的课堂上才会用到这部分内容。
随着编程水平的提高,请重新阅读44节,并尝试从中学习更多技术。
数据文件和代码链接
本书所有MATLAB代码及数据文件可在网站http://physics.wm.edu/programming_with_MATLAB_book下载。本书英文电子版中直接给出了相关文件的链接地址。
关于本书教辅资源,只有使用本书作为教材的教师才可以申请,需要的教师可到原出版社网站注册下载,若有问题,请与泰勒·弗朗西斯集团北京代表处联系,电话010-58452806,电子邮件janet.zheng@tanfchinacom。——编辑注

上架指导

计算机\程序设计

封底文字

本书是一本关于MATLAB编程和数值方法的简明教程。书中通过引人入胜的例子提供实用的知识,从简单的概念开始,帮你构建用于建模、仿真和分析真实系统的技能集。此外,本书还简要概述了成功的科学或工程工作所必需的数值方法。本书内容丰富,示例简洁生动,既适合没有系统编程知识的初学者,也可以作为有一定科学研究和工程技术基础人员的指导书,还可以作为高等院校本科生的教材。

本书特色

 面向科学家和工程师教授编程知识,采用问题驱动的教学方法,使用具有解释性和趣味性的示例。
 强调实践方法,使用应知应会的信息,较少涉及技术细节。
 利用科学和工程示例,展示所学概念在实际问题上的应用。
 展示真实系统建模,由易到难逐步探索有挑战性的问题。
 突出数据处理和分析在日常生活中的实际应用。

作者简介

[美] 尤金尼·E.米哈伊洛夫(Eugeniy E. Mikhailov) 著:尤金尼•E.米哈伊洛夫(Eugeniy E. Mikhailov) 得克萨斯农工大学物理系博士,MIT博士后,现为威廉与玛丽学院教师。他一直为物理、数学和计算机专业的本科生讲授“科学家的实用计算”课程。

译者序

MATLAB是一种以矩阵和数组运算为基础的高级编程语言,为用户提供了简洁、高效的计算环境,深受广大科学家和工程师的信赖。MATLAB简单易用、功能强大,针对多种科学和工程应用提供了经过专业开发和严格测试的工具箱,比如信号处理、统计分析、控制系统、最优化等工具箱。
译者多年以前就开始从事MATLAB学习、应用和教学,具体研究涉及车辆系统仿真、计算机视觉和深度学习等领域。正是由于对MATLAB编程和系统仿真的熟悉,使我们怀疑是否有必要将这本入门级的图书介绍给大家。直到了解到本书资料来源及作者简洁的写作风格,我们就迫不及待地想将它介绍给中国读者了。本书是根据美国威廉与玛丽学院(College of William & Mary) “科学家的实用计算”课程材料编写的,授课对象包括计算机科学、物理学、应用数学、化学等专业的大学生。本书内容涉及广泛,示例简洁生动,既适合没有系统编程知识的初学者学习,也适合有一定科学研究和工程技术基础的人员阅读,还可以作为高等院校本科生的学习教材。
本书分三个层次组织内容:计算基础、使用MATLAB求解日常生活问题、深入研究并扩展科学家的工具箱。第一部分除了介绍MATLAB的基础知识,还包含对计算历史和编程语言以及良好的编程实践的简要介绍。这部分内容凝聚了大学中常开设的“计算机基础”和“计算机科学导论”等课程的精华。第二部分主要涉及线性代数方程求解、数值求导、求根算法等内容,利用高等数学和线性代数等课程的基本知识,简单、快速地解决日常生活中的常见问题。最后一部分是关于MATLAB的深入研究和扩展,介绍了随机过程、蒙特卡罗仿真、优化问题和离散傅里叶变换等内容,当你深入到实际科学研究和工程项目中时会用到这方面的内容。
本书没有详细介绍MATLAB命令和工具箱,而是针对科学计算问题进行相关概念介绍,然后结合完整、简洁的代码进行讲解。本书不是教你成为优秀的计算机专家,而是利用应知应会的数学和物理知识快速解决科学研究和工程技术中的实际问题。在从事科学研究和工程技术相关工作时,导师或项目负责人往往比较看中你的“数学素养”,系统地阅读本书可以有效帮助你提高这方面的水平。千里之行,始于足下。当你掌握本书内容之后,再去尝试使用MATLAB的专业工具箱,甚至研究当前热门的人工智能和深度学习等内容,就会更得心应手了。
本书第11章由解放军信息工程大学刘楠副教授翻译,其余章节由河南工业大学信息科学与工程学院于俊伟博士翻译。由于译者水平有限,错误和疏漏在所难免,欢迎广大专家和读者提出宝贵意见。
本书的翻译工作得到国家自然科学基金项目(61300123)和河南工业大学第二批青年骨干教师培育计划项目的资助。感谢机械工业出版社华章分社对本书出版的重视,让我们有机会将本书呈现给大家,特别感谢王春华等编辑的支持和帮助,她们的工作使本书能够顺利推进。最后还要感谢家人对我们工作的支持,他们的爱和包容使我们有更多的时间投入本书的翻译工作,也使我们对正在从事的教育和科技工作更加坚定。
最后,希望我们的工作能为读者提供有益的帮助,那是我们最大的心愿!

译者
2019年1月

图书目录

出版者的话
译者序
前言
第一部分计算基础
第1章计算机与编程语言简介2
11早期计算史2
12现代计算机3
13什么是编程3
14编程语言概述4
15计算机中的数字表示及其潜在问题5
151离散化——计算机的主要弱点5
152二进制表示6
153浮点数表示6
154结论7
16自学7
第2章MATLAB基础9
21MATLAB的图形用户界面9
22功能强大的MATLAB计算器11
221MATLAB的变量类型11
222内置函数和运算符12
223运算符的优先级13
224注释14
23高效编辑14
24使用帮助文档15
25矩阵16
251创建和访问矩阵元素16
252基本矩阵运算17
253字符串矩阵20
26冒号运算符20
27绘图21
28自学23
第3章布尔代数、条件语句和循环24
31布尔代数24
311MATLAB中布尔运算符的优先级25
312MATLAB布尔逻辑运算举例25
32比较运算符26
321向量比较26
322矩阵比较27
33条件语句27
331if-else-end语句27
332if语句的简短形式28
34等于语句的常见错误28
35循环28
351while循环28
352特殊命令——break和continue29
353for循环30
36自学31
第4章函数、脚本和良好的编程实践32
41动机引例32
411银行利率问题32
412飞行时间问题32
42脚本33
43函数35
44良好的编程实践37
441简化代码37
442试着预见非预期行为37
443运行测试用例38
444检查并清理输入参数39
445判断解是否符合实际40
446良好的编程实践总结40
45递归函数和匿名函数40
451递归函数40
452匿名函数41
46自学42
第二部分使用MATLAB求解日常问题
第5章线性代数方程组求解46
51风铃问题46
52MATLAB内置求解器48
521逆矩阵法48
522无逆矩阵计算的方法48
523选用哪种方法48
53用MATLAB求解风铃问题49
54示例:惠斯通电桥问题50
55自学52
第6章数据约简与拟合53
61数据约简与拟合的必要性53
62拟合的正式定义53
63数据拟合示例54
64参数不确定性估计56
65拟合结果评估56
66如何得到最优拟合58
661数据绘图60
662选择拟合模型60
663拟合参数的初始猜测61
664基于初始猜测的数据和模型绘制61
665拟合数据62
666拟合参数的不确定性评估63
67自学65
第7章数值导数67
71通过前向差分估计导数67
72数值导数的算法误差估计68
73通过中心差分估计导数69
74自学70
第8章求根算法71
81求根问题71
82试错法71
83二分法72
831二分法示例和测试用例74
832二分法代码的可能改进76
84算法收敛76
85试位法77
86割线法78
87牛顿拉弗森法79
871使用牛顿拉弗森法进行解析求导80
872使用牛顿拉弗森法进行数值求导81
88Ridders法81
89求根算法的陷阱82
810求根算法总结83
811MATLAB内置求根命令84
812自学84
第9章数值积分方法86
91积分问题描述86
92矩形法86
93梯形法89
94辛普森法90
95广义积分公式90
96蒙特卡罗积分91
961示例:计算池塘面积91
962朴素蒙特卡罗积分91
963蒙特卡罗积分推导91
964蒙特卡罗方法的算法误差92
97多维积分92
98蒙特卡罗多维积分94
99数值积分陷阱94
991使用大量的数据点94
992使用过少的数据点95
910MATLAB的积分函数95
911自学96
第10章数据插值98
101最近邻插值98
102线性插值99
103多项式插值101
104好的插值程序的准则102
105三次样条插值102
106MATLAB内置的插值方法104
107外推法104
108插值的非常规应用104
109自学105
第三部分深入研究并扩展科学家的工具箱
第11章随机数生成器和随机过程108
111统计和概率简介108
1111离散事件的概率108
1112概率密度函数108
112均匀随机分布109
113随机数生成器和计算机110
1131线性同余生成器110
1132随机数生成器周期111
114如何检验随机数生成器111
115MATLAB的内置随机数生成器113
116自学114
第12章蒙特卡罗仿真115
121钉板实验115
122抛硬币游戏117
123传染病传播118
124自学123
第13章优化问题125
131优化问题简介125
132一维优化126
1321黄金分割最优搜索算法126
1322一维最优MATLAB内置函数128
1323一维优化示例128
133多维优化130
134组合优化135
1341背包问题135
1342旅行商问题138
135模拟退火算法143
136遗传算法150
137自学151
第14章常微分方程153
141常微分方程简介153
142边界条件154
143求解常微分方程的数值方法155
1431欧拉方法155
1432二阶RungeKutta方法(RK2)156
1433四阶RungeKutta法(RK4)157
1434其他数值求解器157
144刚性常微分方程及数值解的稳定性问题157
145MATLAB的内置常微分方程求解器159
146常微分方程示例159
1461自由落体159
1462空气阻力运动161
147自学166
第15章离散傅里叶变换167
151傅里叶级数167
1511示例:t的傅里叶级数169
1512示例:阶跃函数的傅里叶级数170
1513复数的傅里叶级数表示171
1514非周期函数172
152离散傅里叶变换172
153MATLAB的DFT实现及快速傅里叶变换174
154傅里叶变换的简化符号175
155DFT示例175
156自学178
第16章数字滤波器179
161奈奎斯特频率和最小采样率179
162DFT滤波器182
1621低通滤波器182
1622高通滤波器183
1623带通和带阻滤波器184
163滤波器的伪影186
164窗口效应188
165自学189
参考文献191

教学资源推荐
作者: 余永红
作者: H.H.Tan,T.B.D'Orazio,S.H.Or,Marian M.Y.Choy著
作者: 曹青 邱李华 郭志强
参考读物推荐
作者: 李宁 著
作者: (美)Zain Naboulsi; Sara Ford 著
作者: 王鹏