编辑推荐
Numerical Computing with MATLAB revised in 2013(MATLAB数值计算-2013修订版 英文版)
MATLAB之父Cleve B. Moler的经典之作,经Cleve本人正式授权,中国首印。
海报:
内容简介
《MATLAB数值计算·2013修订版(英文版)》已得到MATLAB、数值分析和科学计算之父Cleve Moler 本人正式授权。该书不以深奥的数值分析理论为内容,而以易于理解的数学思维和便于掌握的数学计算编程技术为教学素材。该书摒弃以往数值分析教材中常见的程式性定理、定理证明、收敛性理论和冗长公式推演。该书数值算法原理的表述,言简意骇、层次丰富、见解独到、精辟;数学计算软件的教学内容易学易懂,构思巧妙而循循善诱。
全书正文共11 章,包括:MATLAB 入门、线性方程组、插值、零点和根、小二乘、定积分、常微分方程、随机数、傅立叶分析、特征值和奇异值、偏微分方程。每章后都配置了大量习题。与本书正文及习题匹配的70 多个M 文件都由Cleve Moler 本人编写,并被其本人赞为引以自傲的软件作品。该书所有代码都适配于MATLAB R2014a。
该书是Cleve Moler 专为高校研究生、本科生编写的数值计算、MATLAB 教材。该书也是所有MATLAB 用户理解MATLAB 算法原理的好指南,也是广大科技人员自学、精读或随时查阅的可信赖的参考书。
作者简介
Cleve B.Moler,是MathWorks公司的董事长和首席科学家。Moler先后在密歇根大学、斯坦福大学、新墨西哥大学担任数学和计算机科学教授达20余年。1989年全职加入MathWokrs公司之前,他先后在Intel Hypercube和Ardent Computer这计算机硬件生产公司工作了五年。Cleve先后就读于加州理工和斯坦福并获博士学位。
作为MATLAB创始人,他同时也是LINPACK和EISPACK科学子程序库的作者之一。他与别人合作出版了三本关于数值方法的书,同时也独立编写了Numerical Computing with MATLAB 和 Experiments with MATLAB。
Cleve长期服务于美国工业与应用数学学会,并于2007-2009任主席。Cleve于1997年当选美国国家工程院院士,并获多项荣誉,包括瑞典林学平大学荣誉学位,加拿大滑铁卢大学荣誉数学博士学位,丹麦科技大学荣誉博士等。Cleve还获得IEEE计算机学会的2012年计算机先驱奖。
内页插图
目录
Preface
1Introduction to MATLAB
1.1 The Golden Ratio
1.2 Fibonacci Numbers
1.3 Fractal Fern
1.4 Magic Squares
1.5 Cryptography
1.6 The 3n+1 Sequence
1.7 Floating-Point Arithmetic
1.8 Further Reading
Exercises
2 Linear Equations
2.1 Solving Linear Systems
2.2 The MATLAB Backslash Operator
2.3 A 3-by-3 Example
2.4 Permutation and Triangular Matrices
2.5 LU Factorization
2.6 Why Is Pivoting Necessary?
2.7 lutx, bslashtx, lugui
2.8 Effect of Roundoff Errors
2.9 Norms and Condition Numbers
2.10 Sparse Matrices and Band Matrices
2.11 PageRank and Markov Chains
2.12 Further Reading
Exercises
3 Interpolation
3.1 The Interpolating Polynomial
3.2 Piecewise Linear Interpolation
3.3 Piecewise Cubic Hermite Interpolation
3.4 Shape-Preserving Piecewise Cubic
3.5 Cubic Spline
3.6 pchiptx, splinetx
3.7 interpgui
Exercises
4 Zeros and Roots
4.1 Bisection
4.2 Newton's Method
4.3 A Perverse Example
4.4 Secant Method
4.5 Inverse Quadratic Interpolation
4.6 Zeroin
4.7 fzerotx
4.8 fzerogui
4.9 Value Finding and Reverse Interpolation
4.10 Optimization and fmintx
Exercises
5 Least Squares
5.1 Models and Curve Fitting
5.2 Norms
5.3 censusgui
5.4 Householder Reflections
5.5 The QR Factorization
5.6 Pseudoinverse
5.7 Rank De ciency
5.8 Separable Least Squares
5.9 Further Reading
Exercises
6 Quadrature
6.1 Adaptive Quadrature
6.2 Basic Quadrature Rules
6.3 quadtx, quadgui
6.4 Specifying Integrands
6.5 Performance
6.6 Integrating Discrete Data
6.7 Further Reading
Exercises
7 Ordinary Differential Equations 193
7.1 Integrating Differential Equations
7.2 Systems of Equations
7.3 Linearized Differential Equations
7.4 Single-Step Methods
7.5 The BS23 Algorithm
7.6 ode23tx
7.7 Examples
7.8 Lorenz Attractor
7.9 Stiffness
7.10 Events
7.11 Multistep Methods
7.12 The MATLAB ODE Solvers
7.13 Errors
7.14 Performance
7.15 Further Reading
Exercises
8 Fourier Analysis
8.1 Touch-Tone Dialing
8.2 Finite Fourier Transform
8.3 fftgui
8.4 Sunspots
8.5 Periodic Time Series
8.6 Fast Finite Fourier Transform
8.7 ffttx
8.8 fftmatrix
8.9 Other Fourier Transforms and Series
8.10 Further Reading
Exercises
前言/序言
Preface
Numerical Computing with MATLAB is a textbook for an introductory coursein numerical methods, Matlab, and technical computing. The emphasis is on in-formed use of mathematical software. We want you learn enough about the mathe-matical functions in Matlab that you will be able to use them correctly, appreciatetheir limitations, and modify them when necessary to suit your own needs. Thetopics include
introduction to Matlab,
linear equations,
interpolation,
zero and roots,
least squares,
quadrature,
ordinary differential equations,
random numbers,
Fourier analysis,
eigenvalues and singular values,
partial differential equations.
George Forsythe initiated a software-based numerical methods course at Stan-ford University in the late 1960s. The textbooks by Forsythe, Malcolm, and Moler[20] and Kahaner, Moler, and Nash [34] that evolved from the Stanford course werebased upon libraries of Fortran subroutines.
This textbook is based upon Matlab. NCM, a collection of over 70 M-files, forms an essential part of the book. Many of the over 200 exercises involvemodifying and extending the programs in NCM. The book also makes extensiveuse of computer graphics, including interactive graphical expositions of numericalalgorithms.
The prerequisites for the course, and the book, include
calculus,
some familiarity with ordinary differential equations,
some familiarity with matrices,
some computer programming experience.
If you've never used Matlab before, the rst chapter will help you get started. Ifyou're already familiar with Matlab, you can glance over most of the rst chapterquickly. Everyone should read the section in the rst chapter about oating-point
arithmetic.
There is probably too much material here for a one-quarter or one-semestercourse. Plan to cover the rst several chapters and then choose the portions of thelast four chapters that interest you.
Make sure that the NCM collection is installed on your network or your per-sonal computer as you read the book. The software is available from a Web sitedevoted to the book [47]:
http://www.mathworks.cn/moler
There are three types of NCM files:
gui files: interactive graphical demonstrations;
tx files: textbook implementations of built-in Matlab functions;
others: miscellaneous files, primarily associated with exercises.When you have NCM available,
ncmgui
produces the figure shown on the next page. Each thumbnail plot is actually a pushbutton that launches the corresponding gui.
This book would not have been possible without the people at The MathWorksand at SIAM. Both groups are professional, creative, and delightful to work with.They have been especially supportive of this book project. Out of the many friendsand colleagues who have made speci c contributions, I want to mention five inparticular. Kathryn Ann Moler has used early drafts of the book several times incourses at Stanford and has been my best critic. Tim Davis and Charlie Van Loanwrote especially helpful reviews. Lisl Urban did an immaculate editing job. My wifePatsy has lived with my work habits and my laptop and loves me anyway. Thanks,everyone.
A revised reprint in 2008 included a change in the section on Google PageRankthat improves the handling of web pages with no out links, a short new section inthe Random Numbers chapter, removal of material on inline and feval, andcorrection of a few dozen minor typographical errors.
A significant update in September 2013 incorporates over 60 changes. Manyof them have been recommended by Professor Zhiyong Zhang of Nanjing Univer-sity of Posts and Telecommunications in China (NJUPT), who prepared a Chinesetranslation for BUAA press. The census example in section 5.3 includes the 2010census. Output from format long shows 16 signi cant digits. Symbolic Toolboxusage re
ects the MuPad connection. Many thanks to Prof. Zhang.
Cleve Moler
Sept. 16, 2013
《MATLAB数值计算·2013修订版(英文版)》内容简介 本书是一本深入探讨MATLAB在数值计算领域应用的专业著作,旨在为读者提供全面、系统且实用的数值计算方法和技术。本次修订(2013版)在原有基础上,进一步整合了MATLAB最新版本(截至2013年)的核心功能和算法改进,力求使内容紧跟行业前沿,更具指导性和实践性。 本书的编写始终围绕着“理解、应用、创新”这一核心理念,而非简单罗列MATLAB的命令。我们力求让读者在掌握MATLAB工具的同时,更深刻地理解数值计算背后的数学原理,从而能够灵活运用这些工具解决实际工程与科研问题,并在此基础上进行进一步的算法优化与创新。 第一部分:数值计算基础与MATLAB入门 本部分是全书的基石,为后续深入的学习打下坚实的基础。 第一章:数值计算概述与MATLAB基础 数值计算的重要性与挑战: 详细阐述数值计算在科学研究、工程设计、数据分析等领域的不可或缺性,并分析数值计算过程中可能遇到的主要挑战,如舍入误差、截断误差、病态问题等。 MATLAB环境介绍: 全面介绍MATLAB集成开发环境(IDE)的各个组件,包括命令窗口、编辑器、工作区、历史命令窗口、当前文件夹窗口、变量编辑器等,指导读者如何高效地管理和操作MATLAB环境。 基本数据类型与矩阵操作: 深入讲解MATLAB中各种基本数据类型(如双精度浮点数、整型、逻辑型、字符型等)的特性与使用,并重点突出MATLAB作为“矩阵工厂”的核心优势,详尽介绍各种矩阵的创建、初始化(如`zeros`, `ones`, `eye`, `rand`, `randn`等)、索引、切片、运算(加、减、乘、除、转置、共轭转置)以及常用的矩阵函数。 控制流与函数定义: 介绍MATLAB的流程控制语句,包括条件判断(`if-else-end`, `switch-case`)、循环(`for`, `while`)、中断与继续(`break`, `continue`),以及如何自定义函数(`.m`文件函数、匿名函数、局部函数),强调函数封装与复用的重要性。 绘图与可视化: 掌握MATLAB强大的二维和三维绘图功能,包括基本绘图命令(`plot`, `scatter`, `bar`, `hist`, `contour`, `surf`, `mesh`等),以及图形的定制化(标题、坐标轴标签、图例、线条样式、颜色、标记点等),并介绍子图(`subplot`)的使用。 第二章:误差分析与数值稳定性 误差的来源与分类: 详细分析数值计算中的误差来源,包括模型误差(近似代替真实模型)、测量误差(输入数据的不精确)、舍入误差(计算机表示和运算的局限性)、截断误差(算法本身引入的误差)。 误差的传播与度量: 介绍相对误差、绝对误差的概念,以及误差如何在复杂的计算过程中传播和累积。 数值稳定性概念: 深入理解数值稳定性在求解问题中的重要性,区分良态问题(微小输入扰动引起微小输出扰动)与病态问题(微小输入扰动引起巨大输出扰动)。 常用数值稳定性技术: 介绍一些基本的数值稳定性增强技术,例如如何选择合适的算法,避免计算过程中的“灾难性抵消”(catastrophic cancellation)。 第二部分:核心数值计算方法与MATLAB实现 本部分将系统介绍数值计算领域最核心的算法,并结合MATLAB的强大功能进行详细讲解和实践。 第三章:线性方程组的求解 直接法: 高斯消元法及其改进: 详细讲解高斯消元法的原理、步骤,以及其在数值计算中的优势与劣势。重点介绍列主元高斯消元法,分析其数值稳定性。 LU分解: 阐述LU分解的原理,如何通过LU分解高效求解线性方程组,并讨论其在求解多个右端项问题中的应用。 Cholesky分解: 专用于对称正定矩阵的Cholesky分解,分析其计算效率和稳定性。 迭代法: 雅可比迭代法(Jacobi Method): 介绍雅可比迭代法的基本思想、收敛条件和实现步骤。 高斯-赛德尔迭代法(Gauss-Seidel Method): 对比雅可比迭代法,介绍高斯-赛德尔迭代法的原理、收敛性分析以及其在实际应用中的表现。 超松弛迭代法(SOR Method): 介绍SOR法的概念,如何通过松弛因子提高收敛速度。 MATLAB内置函数: 演示如何使用MATLAB内置函数(如``运算符、`inv`、`lu`、`chol`、`jacobi`、`gauss_seidel`等)高效求解线性方程组,并对比不同方法的性能。 第四章:非线性方程与方程组的求解 单变量非线性方程求解: 二分法(Bisection Method): 讲解二分法的原理、算法步骤及其可靠性。 牛顿-拉夫逊法(Newton-Raphson Method): 详细介绍牛顿法的迭代公式,分析其二阶收敛性,并讨论其对初值选择的敏感性。 割线法(Secant Method): 介绍割线法作为牛顿法的一种近似,以及其计算效率。 不动点迭代法(Fixed-Point Iteration): 讲解不动点迭代的原理和收敛条件。 多变量非线性方程组求解: 牛顿法求解非线性方程组: 推广单变量牛顿法,介绍雅可比矩阵的计算和求解线性方程组的步骤。 拟牛顿法: 介绍BFGS、DFP等拟牛顿法,分析其在不便计算雅可比矩阵时的优势。 MATLAB内置函数: 演示MATLAB中用于非线性方程求解的函数,如`fzero`(单变量),`fsolve`(多变量)及其参数配置。 第五章:插值与逼近 多项式插值: 拉格朗日插值(Lagrange Interpolation): 讲解拉格朗日多项式的构建方法,分析其全局插值的特点。 牛顿插值(Newton Interpolation): 介绍牛顿插值的等距节点与不等距节点形式,以及其分点差的计算。 Runge现象与切比雪夫节点: 分析等距节点插值在处理高次多项式时可能出现的Runge现象,并介绍切比雪夫节点如何改善插值效果。 样条插值(Spline Interpolation): 三次样条插值: 详细讲解三次样条插值的概念、边界条件,以及如何构建三次样条函数。 自然样条、固定样条、伸缩样条: 介绍不同类型的样条插值。 函数逼近: 最小二乘逼近: 介绍多项式最小二乘逼近,以及如何通过求解法方程得到最优逼近。 MATLAB内置函数: 重点介绍`interp1`(一维插值)、`interp2`(二维插值)、`spline`、`csape`等函数,并提供实际应用案例。 第六章:数值积分 定积分的数值计算: 梯形法则(Trapezoidal Rule): 介绍复合梯形法则的原理与公式。 辛普森法则(Simpson's Rule): 讲解辛普森法则及其复合形式,分析其更高的精度。 牛顿-科特斯公式: 介绍更一般的牛顿-科特斯公式族。 高斯积分(Gauss Quadrature): 讲解高斯积分的原理,如何选择积分节点与权重以达到高精度。 多重积分的数值计算: 介绍如何将高维积分分解为一系列低维积分,以及使用多维数值积分方法。 MATLAB内置函数: 演示`integral`、`quad`、`dblquad`、`triplequad`等函数的用法,并进行精度与效率的比较。 第七章:数值微分 导数的数值计算: 有限差分法: 介绍前向差分、后向差分、中心差分法的原理、公式及其误差分析。 高阶导数的数值计算: 介绍如何通过组合低阶差分来近似高阶导数。 MATLAB内置函数: 演示`diff`函数计算离散数据的差分,以及如何结合插值函数来近似连续函数的导数。 第八章:常微分方程(ODE)的数值解 单步法: 欧拉法(Euler Method): 介绍前向欧拉法和后向欧拉法的基本思想和局限性。 改进欧拉法(Heun's Method): 介绍一种改进的预测-校正方法。 龙格-库塔法(Runge-Kutta Methods): 重点讲解经典的四阶龙格-库塔法(RK4),分析其精度和稳定性。 多步法: Adams-Bashforth法和Adams-Moulton法: 介绍显式和隐式多步法的原理。 刚性方程组的求解: 简要介绍刚性方程组的特点及求解的挑战。 MATLAB内置ODE求解器: 详细介绍MATLAB强大的ODE求解器家族,如`ode45`(基于RK45方法)、`ode23`、`ode15s`(适用于刚性方程组)等,讲解如何选择合适的求解器,设置容差、输出点以及处理事件。 第九章:特征值问题 特征值与特征向量的概念: 回顾线性代数中特征值与特征向量的定义。 幂法(Power Method): 介绍幂法用于求解最大模的特征值及其对应的特征向量。 反幂法(Inverse Power Method): 介绍反幂法用于求解最小模的特征值。 QR算法: 重点讲解QR算法的迭代原理,它是求解对称矩阵所有特征值与特征向量的标准方法。 雅可比法: 介绍用于对称矩阵的雅可比方法。 MATLAB内置函数: 重点演示`eig`函数,分别用于求解一般矩阵和对称矩阵的特征值和特征向量,并介绍`eigs`函数用于大规模稀疏矩阵的求解。 第十章:优化问题 无约束优化: 梯度下降法(Gradient Descent): 介绍最基本的下降方向。 牛顿法与拟牛顿法: 结合前面章节的知识,讨论它们在优化中的应用。 共轭梯度法(Conjugate Gradient Method): 介绍用于大型问题的迭代方法。 约束优化: 拉格朗日乘子法: 介绍处理等式约束。 二次规划(Quadratic Programming): 介绍基本形式。 MATLAB内置优化工具箱: 详细介绍`fminunc`(无约束单变量/多变量优化)、`fminbnd`(无约束单变量有界优化)、`fmincon`(约束多变量优化)等函数,讲解如何定义目标函数、约束条件以及设置求解选项。 第三部分:进阶应用与实践 本部分将引导读者将所学知识应用于更复杂的实际问题,并探讨一些高级主题。 第十一章:数据拟合与统计分析 线性回归与多项式回归: 结合最小二乘法,实现数据点的最佳拟合。 非线性回归: 使用`nlinfit`等函数进行非线性模型的拟合。 数据平滑与滤波: 介绍移动平均、Savitzky-Golay滤波器等方法。 基本统计量计算: 均值、方差、标准差、相关系数等。 MATLAB统计工具箱简介: 简要介绍统计工具箱提供的丰富功能。 第十二章:信号处理与图像处理中的数值计算 傅里叶变换与离散傅里叶变换(DFT): 讲解FFT算法及其在信号分析中的应用。 滤波器设计与实现: 介绍FIR和IIR滤波器的基本概念。 图像变换与处理: 灰度化、二值化、边缘检测等。 MATLAB信号处理与图像处理工具箱: 简要介绍这两个工具箱的核心功能。 第十三章:稀疏矩阵与大规模问题 稀疏矩阵的表示与存储: 介绍CSR、CSC等格式。 稀疏矩阵运算: 讲解稀疏矩阵在存储和计算上的优势。 大规模线性方程组的求解: 介绍迭代法在稀疏方程组中的应用。 MATLAB稀疏矩阵支持: 演示如何创建、操作和求解稀疏矩阵问题。 第十四章:符号计算与数值计算的结合 符号计算工具箱基础: 介绍符号变量、符号表达式的创建与操作。 符号计算在数值计算中的辅助作用: 如推导公式、简化表达式、生成代码等。 数值与符号计算的相互转换: `sym2fun`、`matlabFunction`等。 第十五章:项目实践与案例分析 本章将通过几个综合性的实际案例,将前述的数值计算方法融会贯通。例如,可能涵盖: 物理仿真中的动力学模拟。 工程优化问题。 金融建模中的数值方法。 机器学习算法中的数值计算基础。 这些案例旨在帮助读者将理论知识转化为解决实际问题的能力,并理解在不同领域中数值计算的具体应用场景。 本书特色: 理论与实践并重: 每一章节都详细阐述算法原理,并通过大量MATLAB代码示例进行验证和说明。 紧跟MATLAB版本更新: 2013修订版充分考虑了MATLAB在2013年及之前版本的关键更新和性能优化。 丰富的代码示例: 提供可运行、可修改的代码,方便读者动手实践。 面向广泛读者群: 适用于计算机科学、工程学、物理学、数学、经济学等领域的研究生、高年级本科生以及相关领域的专业人士。 循序渐进的难度: 从基础概念到高级应用,逐步引导读者掌握MATLAB数值计算的精髓。 通过阅读本书,您将不仅掌握MATLAB强大而灵活的数值计算能力,更能深刻理解背后严谨的数学原理,从而在您的学术研究和工程实践中游刃有余,应对更复杂、更具挑战性的问题。