关于我们
![]() ![]() |
MATLAB原理与应用(第5版)——工程问题求解与科学计算 ![]() 本书对MATLAB的功能进行了简洁而全面的概述,学生可以利用本书自主地学习基础知识和实践应用。该书通过大量示例来阐述MATLAB的基础知识,这些示例来自大家都比较熟悉的科学和工程领域,以及日常生活。本书是MATLAB入门课程或MATLAB工程应用课程的理想教材,还可以供希望学习和应用MATLAB的专业人士和学生作为自学指南使用。
撰写《MATLAB原理与应用(第5版)——工程问题求解与科学计算》的主要目的是为了跟上MATLAB的升级进度(最新版本是R2012b)。与之前的版本一样,这一版也是将MATLAB作为解决问题的工具介绍给没有计算机编程经验的科学家、工程师以及相关领域的学生们。
为了与已故的作者Brian D. Hahn在之前版本中的目标保持一致,本书的第5版采用一种通俗的指南风格来实现“自学”的学习方法,读者将在使用MATLAB做实验的过程中掌握它的工作原理。本书假设读者在解决技术问题时从未使用过该工具。 MATLAB是Matrix Laboratory的缩写,它是基于矩阵的概念来实现的。由于读者可能对矩阵并不熟悉,我们将根据上下文的需要逐步介绍矩阵的概念和结构。本书的主要读者是科学家和工程师,因此书中的示例(尤其是第Ⅱ部分)都需要一些大学一年级的数学知识。但是,这些示例都是独立的,读者可以选择性地阅读,并不会影响读者编程技能的提升。可以通过两种不同的模式来使用MATLAB。一种是在迫切需要得到即时的结果时,可以在Command Window中立即执行语句(或语句组)。另一种是在不那么迫切的情况下,可以利用脚本文件的方式来提供传统的编程方式。读者可以通过如下方法对两种模式善加利用:鼓励在前一种模式中使用剪切和粘贴的方式,以充分利用Windows操作系统中的交互环境;后者通过结构规划来强调编程原则和算法开发。 虽然本书的内容涵盖MATLAB的大部分基本(基础)特性,但它既不是一本完备的书籍,也不是一本系统的参考工具书。因为这和它通俗的风格不统一。例如,我们在开始介绍for和if结构的时候,和很多其他书本不同,并不总是使用它们的通用格式,而是在适当的地方自然而然地引入。即便如此,我们仍对for和if结构进行了透彻而全面的介绍,而不像其他书本只对其进行粗略介绍。如果读者想了解,可以在附录中找到实用的语法和函数快速索引。如下列表包含本书第5版的其他重点内容: ●对于粗心的初学者可能碰到的很多陷阱给出警告。 ●给出大量来自科学技术(仿真、种群建模和数值方法)、商业和日常生活的示例。 ●强调编程风格的重要性,以生成清晰、可读性强的代码。 ●全面的章节总结。 ●丰富的章节练习(我们在附录中给出了很多练习的答案和解法)。 本书应该和MATLAB软件结合使用。所以读者需要先安装该软件,完成书中的练习,从而理解MATLAB是如何完成任务的。任何工具都只能通过动手练习的方法来学习。计算工具尤其如此,因为它们只有在接收到的命令和相应的数据正确且精确时,才能输出正确的答案。 Brian H. Hahn是开普敦大学数学与应用数学系的一名教授,他拥有剑桥大学博士学位,在自己的职业生涯内已撰写10余本面向初学者的编程语言书籍。 Daniel T. Valentine是美国克拉克森大学机械和航空工程系的一名副教授。他是克拉克森空间助学计划的分部主任,该计划隶属于纽约美国宇航局太空助学协会。他还与人合著了Aerodynamicsfor Enginerring Students 6e (Butterworth Heinemann ,2012 )一书。
第Ⅰ部分 基础知识
第1章 引言 3 1.1 使用MATLAB 4 1.1.1 算术 5 1.1.2 变量 6 1.1.3 数学函数 7 1.1.4 函数和命令 7 1.1.5 向量 7 1.1.6 线性方程组 9 1.1.7 教程和演示 10 1.2 Desktop 11 1.2.1 使用Editor和运行脚本 12 1.2.2 帮助、发布和视图 14 1.2.3 符号与MuPAD NotebookAPP(记事本应用程序) 17 1.2.4 其他APP 20 第Ⅰ部分 基础知识 第1章 引言 3 1.1 使用MATLAB 4 1.1.1 算术 5 1.1.2 变量 6 1.1.3 数学函数 7 1.1.4 函数和命令 7 1.1.5 向量 7 1.1.6 线性方程组 9 1.1.7 教程和演示 10 1.2 Desktop 11 1.2.1 使用Editor和运行脚本 12 1.2.2 帮助、发布和视图 14 1.2.3 符号与MuPAD NotebookAPP(记事本应用程序) 17 1.2.4 其他APP 20 1.2.5 附加特性 20 1.3 示例程序 22 1.3.1 剪切和粘贴 22 1.3.2 保存程序:脚本文件 23 1.3.3 程序实战 25 1.4 本章小结 26 1.5 本章练习 26 第2章 MATLAB基础 27 2.1 变量 27 2.2 工作空间 28 2.3 阵列:向量与矩阵 29 2.3.1 初始化向量:显式列表 29 2.3.2 初始化向量:冒号运算符 31 2.3.3 linspace和logspace函数 31 2.3.4 转置向量 32 2.3.5 下标 32 2.3.6 矩阵 32 2.3.7 捕获输出 33 2.3.8 结构规划 34 2.4 重力作用下的垂直运动 35 2.5 运算符、表达式和语句 36 2.5.1 数字 37 2.5.2 数据类型 37 2.5.3 算术运算符 37 2.5.4 运算符的优先级 38 2.5.5 冒号运算符 39 2.5.6 转置运算符 39 2.5.7 阵列算术运算 39 2.5.8 表达式 40 2.5.9 语句 41 2.5.10 语句、命令和函数 42 2.5.11 公式向量化 42 2.6 输出 45 2.6.1 disp语句 45 2.6.2 format命令 46 2.6.3 比例因子 47 2.7 for循环 48 2.7.1 用牛顿法计算平方根 48 2.7.2 阶乘! 49 2.7.3 数列的极限 49 2.7.4 基本for结构 50 2.7.5 单行中的for语句 51 2.7.6 更加一般化的for语句 51 2.7.7 通过向量化来避免使用for循环 52 2.8 判断 54 2.8.1 单行if语句 54 2.8.2 if-else结构 56 2.8.3 单行if-else语句 57 2.8.4 elseif 57 2.8.5 逻辑运算符 58 2.8.6 多个if与elseif的对比 59 2.8.7 嵌套if 60 2.8.8 将if向量化? 60 2.8.9 switch语句 60 2.9 复数 61 2.10 本章小结 63 2.11 本章练习 64 第3章 程序设计与算法开发 71 3.1 程序设计流程 72 3.2 MATLAB函数编程 79 3.2.1 内联对象:谐振子 79 3.2.2 MATLAB函数:y=f(x) 81 3.3 本章小结 82 3.4 本章练习 83 第4章 MATLAB函数与数据导入导出工具 85 4.1 常用函数 85 4.2 导入和导出数据 90 4.2.1 load和save命令 90 4.2.2 导出文本(ASCII)数据 90 4.2.3 导出文本(ASCII)数据 91 4.2.4 导出二进制数据 91 4.3 本章练习 92 第5章 逻辑向量 95 5.1 示例 96 5.1.1 不连续图 96 5.1.2 避免除零 97 5.1.3 避免无穷 97 5.1.4 对随机数进行计数 98 5.1.5 掷骰子 99 5.2 逻辑运算符 100 5.2.1 运算符的优先级 101 5.2.2 危险 101 5.2.3 逻辑运算符和向量 102 5.3 将逻辑向量作为下标 102 5.4 逻辑函数 104 5.5 用逻辑向量代替elseif阶梯 105 5.6 本章小结 107 5.7 本章练习 107 第6章 矩阵和阵列 111 6.1 矩阵 111 6.1.1 具体示例 111 6.1.2 创建矩阵 113 6.1.3 下标 113 6.1.4 转置 113 6.1.5 冒号运算符 114 6.1.6 复制行和列 116 6.1.7 删除行和列 117 6.1.8 初等矩阵 118 6.1.9 特殊矩阵 119 6.1.10 对矩阵使用MATLAB函数 119 6.1.11 操纵矩阵 120 6.1.12 对矩阵进行阵列(元素对元素)运算 120 6.1.13 矩阵和for循环 121 6.1.14 矩阵的可视化 121 6.1.15 将嵌套for循环向量化:贷款偿还表格 121 6.1.16 多维阵列 124 6.2 矩阵运算 124 6.2.1 矩阵乘法 124 6.2.2 矩阵求幂运算 126 6.3 其他矩阵函数 126 6.4 种群增长:莱斯利矩阵 126 6.5 马尔可夫过程 129 6.6 线性方程 131 6.6.1 MATLAB中的解法 132 6.6.2 残量 133 6.6.3 超定方程组 133 6.6.4 欠定方程组 134 6.6.5 病态 134 6.6.6 矩阵除法 135 6.7 稀疏矩阵 136 6.8 本章小结 138 6.9 本章练习 138 第7章 函数M-文件 141 7.1 示例:再看牛顿法 141 7.2 基本规则 143 7.2.1 子函数 147 7.2.2 私有函数 147 7.2.3 P-code文件 147 7.2.4 使用分析工具提高M-文件的性能 147 7.3 函数句柄 148 7.4 命令/函数对偶性 149 7.5 函数名解析 150 7.6 调试M-文件 150 7.6.1 调试脚本文件 150 7.6.2 调试函数 152 7.7 递归 152 7.8 本章小结 153 7.9 本章练习 154 第8章 循环 157 8.1 使用连续for语句的确定循环 157 8.1.1 二项式系数 157 8.1.2 更新过程 158 8.1.3 嵌套for语句 159 8.2 使用连续while语句的不确定循环 160 8.2.1 猜谜游戏 160 8.2.2 while语句 161 8.2.3 投资翻倍的时间 161 8.2.4 质数 162 8.2.5 抛射体轨迹 163 8.2.6 break和continue语句 165 8.2.7 目录 165 8.3 本章小结 166 8.4 本章练习 166 第9章 MATLAB图形 171 9.1 基本二维图形 171 9.1.1 标签 172 9.1.2 在相同的坐标轴上绘制多个图形 173 9.1.3 线型、标记和颜色 173 9.1.4 坐标轴限制 174 9.1.5 在一幅图中绘制多个图形:subplot 175 9.1.6 figure、clf和cla函数 176 9.1.7 图形输入 176 9.1.8 对数作图 176 9.1.9 极坐标作图 177 9.1.10 绘制快速变化的数学函数: fplot 178 9.1.11 属性编辑器 179 9.2 三维作图 179 9.2.1 plot3 179 9.2.2 使用comet3绘制三维动画 180 9.2.3 网面 180 9.2.4 等高线图 182 9.2.5 使用NaN剪切曲面 183 9.2.6 可视化向量场 183 9.2.7 矩阵的可视化 184 9.2.8 三维图形的旋转 185 9.3 句柄图形 186 9.3.1 获得句柄 186 9.3.2 图形对象的属性和修改方法 187 9.3.3 句柄向量 188 9.3.4 图形对象创建函数 189 9.3.5 指定父对象 189 9.3.6 定位图形 190 9.4 编辑绘图 191 9.4.1 绘图编辑模式 191 9.4.2 属性编辑器 191 9.5 动画 192 9.6 颜色等属性 195 9.6.1 色图 195 9.6.2 曲面绘图的颜色 196 9.6.3 Truecolor(真彩) 197 9.7 光照和镜头 198 9.8 保存、打印和导出图形 198 9.8.1 保存和打开图像文件 198 9.8.2 打印图形 199 9.8.3 导出图形 199 9.9 本章小结 199 9.10 本章练习 200 第10章 作为阵列的向量以及其他数据结构 203 10.1 更新过程 203 10.1.1 单位时间步长 204 10.1.2 非单位时间步长 206 10.1.3 使用函数 207 10.1.4 精确解 208 10.2 频率、柱状图和直方图 209 10.2.1 随机漫步 209 10.2.2 直方图 210 10.3 排序 211 10.3.1 冒泡排序 211 10.3.2 MATLAB中的sort函数 212 10.4 结构体 213 10.5 元胞阵列 215 10.5.1 将数据赋给元胞阵列 215 10.5.2 访问元胞阵列中的数据 216 10.5.3 使用元胞阵列 217 10.5.4 显示和可视化元胞阵列 218 10.6 类和对象 218 10.7 本章小结 218 第11章 错误和陷阱 221 11.1 语法错误 221 11.1.1 向量的大小不匹配 222 11.1.2 名称屏蔽 222 11.2 逻辑错误 222 11.3 舍入误差 223 11.4 本章小结 224 11.5 本章练习 224 第Ⅱ部分 实践应用 第12章 动力系统 227 12.1 悬臂梁 228 12.2 电流 230 12.3 自由落体 232 12.4 摩擦力作用下的投射体问题 239 12.5 本章小结 241 12.6 本章练习 242 第13章 仿真 243 13.1 随机数的生成 243 13.2 旋转硬币 244 13.3 投掷骰子 245 13.4 细菌分裂 245 13.5 随机游走 246 13.6 交通流量 247 13.7 正态(高斯)随机数 250 13.8 总结 250 13.9 本章练习 250 第14章 数值方法入门 253 14.1 方程组 253 14.1.1 牛顿法 253 14.1.2 二分法 255 14.1.3 fzero函数 257 14.1.4 roots函数 257 14.2 积分 257 14.2.1 梯形法则 257 14.2.2 辛普森法则 258 14.2.3 quad函数 259 14.3 数值微分 259 14.4 一阶微分方程 260 14.4.1 欧拉方法 261 14.4.2 示例:细菌生长 261 14.4.3 另一种下标表示法 263 14.4.4 预估-校正法 264 14.5 线性常微分方程(LODE) 264 14.6 龙格-库塔法 264 14.6.1 单独的微分方程 265 14.6.2 差分方程组:混沌 265 14.6.3 将额外参数传递给ODE求解程序 268 14.7 偏微分方程 269 14.8 其他数值方法 271 14.9 本章小结 273 14.10 本章练习 273 第15章 信号处理 277 15.1 谐波分析 278 15.2 快速傅里叶变换(FFT) 281 第16章 Simulink工具箱 285 16.1 弹簧-质块-阻尼器动力系统 290 16.2 弹跳球动力系统 291 16.3 范德波尔振子 293 16.4 杜芬振子 294 16.5 本章练习 295 第17章 Symbolic工具箱 297 17.1 代数 298 17.1.1 多项式 298 17.1.2 向量 300 17.1.3 矩阵 301 17.2 微积分 304 17.3 拉普拉斯变换和Z变换 305 17.4 广义函数* 307 17.5 微分方程 308 17.6 funtool、MuPAD和帮助文档的使用 309 17.6.1 funtool 309 17.6.2 MuPAD记事本和帮助文档 309 17.7 本章练习 311 附录A 语法快速参考 313 附录B 命令与函数快速参考 317 附录C ASCII字符编码表 327 附录D 部分练习的答案 329
我要评论
|