本书在介绍MATLAB编程知识的基础上, 讲述了科学计算与最优化设计的主要内容, 具体包括MATLAB概述、MATLAB基本运算、MATLAB图形处理、MATLAB程序设计、数据插值、函数逼近与曲线拟合、积分与微分、求解线性方程组、求解非线性方程组、求解常微分方程、求解偏微分方程、MATLAB在矩阵论中的应用、MATLAB在概论统计中的应用、MATLAB在优化理论中的应用等。
(1)资深作者编著,图书质量更有保证:一线资深工程师执笔,系统归纳和总结了智能算法的实战经验。
(2)提供配套源码,便于读者动手实践:理论必须联系实践,本书提供源代码下载,方便读者学习使用。
(3)内含丰富实例,利于读者二次开发:书中提供了十几个科学计算算法的典型实例,读者可以据此二次开发。
配套学习资源下载地址为清华大学出版社网站本书页面。系列畅销图书如下:
MATLAB编程指南——计算、编程、仿真、算法及应用
MATLAB/Simulink系统仿真
MATLABGUI程序设计
MATLAB智能算法
MATLAB数学建模
MATLAB科学计算
MATLAB信号处理
MATLAB图像处理
MATLAB优化算法
在科学研究和工程计算领域经常会遇到一些非常复杂的计算问题,这些问题利用计算器或手工计算无法完成,只能借助计算机完成,而MATLAB在数值计算方面表现卓越,又MATLAB语言具有编程效率高、图形界面友好、全方位的帮助系统、扩充能力强、交互性好、可移植性强等特点,因此,MATLAB广泛应用于各行各业。
目前,MATLAB已成为数学应用领域的重要基础课程的首选实验平台,而对于学生而言最有效的学习途径是结合专业课程的学习掌握该软件的使用与编程。本书将详细介绍应用MATLABR2016a进行科学计算的实现方法。
1.本书特点
由浅入深,循序渐进:本书以MATLAB爱好者为对象,首先从MATLAB使用基础讲起,再由简单的科学计算出发,逐渐过渡到MATLAB优化设计部分,并辅以工程中的应用案例,帮助读者快速掌握MATLAB进行科学计算与优化设计和开发。
步骤详尽、内容新颖:本书结合作者多年MATLAB使用经验与实际工程应用案例,将MATLAB软件的使用方法与技巧详细地讲解给读者。本书在MATLAB进行科学计算和优化设计讲解过程中,步骤详尽,与算法理论贴切并辅以实际案例为背景,使读者在阅读时,结合程序和理论,从而快速理解理论思想,并掌握该理论编程方法。
实例典型,轻松易学:通过学习实际工程应用案例,运用MATLAB科学计算求解,是掌握MATLAB编程应用最好的方式。本书通过理论联系实际案例,并结合编程代码,透彻详尽地讲解了MATLAB在科学计算和数值分析中的应用研究。
2.本书内容
本书以初中级读者为对象,结合笔者多年MATLAB使用经验与实际工程应用案例,将MATLAB软件的使用方法与技巧详细地讲解给读者。本书基于MATLABR2016a版,详细讲解MATLAB在科学计算中的应用。全书内容共分为三部分,具体如下。
第1部分:MATLAB基础应用部分。详细讲解了MATLAB简介、基本运算、图形的可视化以及编程方法等,这些都是掌握科学计算的必备知识。
第1章MATLAB简介第2章MATLAB基本运算
第3章MATLAB图形可视化第4章MATLAB编程入门
第2部分:MATLAB科学计算部分。详细讲解了MATLAB的插值拟合、数据拟合、微分方程求解、微分方程及级数、线性方程(组)求解、非线性方程(组)求解、常微分方程(组)求解、概率统计计算等相关知识。
第5章插值拟合第6章数据拟合
第7章微分方程求解第8章微分方程及级数
第9章线性方程(组)求解第10章非线性方程(组)求解
第11章常微分方程(组)求解第12章概率统计分布计算
第13章偏最小二乘应用分析第14章人工智能算法
第3部分:MATLAB工具箱。详细讲解了MATLAB的模糊逻辑工具箱、优化工具箱、偏微分方程工具箱等相关知识。
第15章模糊逻辑工具箱第16章优化工具箱
第17章偏微分方程工具箱
3.读者对象
本书适合于MATLAB初学者和研究算法提高并解决工程应用能力的读者,具体说明如下:
相关从业人员初学MATLAB科学计算的技术人员
大中专院校的教师和在校生相关培训机构的教师和学员
广大科研工作人员MATLAB爱好者
4.读者服务
为了方便解决本书疑难问题,读者朋友在学习过程中遇到与本书有关的技术问题时,可以发邮件到邮箱caxart@126.com,或者访问博客http://blog.sina.com.cn/caxart,编者会尽快给予解答,我们将竭诚为您服务。
另外,本书所涉及的素材文件(程序代码)已经上传到为本书提供的博客中,供读者下载。
5.本书作者
本书主要由温正编著。此外,付文利、王广、张岩、林晓阳、任艳芳、唐家鹏、孙国强、高飞等也参与了本书部分内容的编写工作。
虽然作者在本书的编写过程中力求叙述准确、完善,但由于水平有限,书中欠妥之处在所难免,希望读者和同仁能够及时指出,共同促进本书质量的提高。
最后再次希望本书能为读者的学习和工作提供帮助!
编者
2017年6月
温正 北京航空航天大学博士后,现就职于航天某院所,精通MATLAB、ANSYS、Fluent等工程仿真计算软件。在国内外期刊发表论文多篇,其中被SCI检索三篇,被EI检索十几篇,申请并获得授权专利多项,曾获得国防科学技术成果奖等奖项,出版过多本畅销计算机图书。
第1章MATLAB概述
1.1MATLAB平台简介
1.2MATLABR2016a的工作环境
1.2.1命令行窗口
1.2.2命令历史记录窗口
1.2.3当前文件夹窗口和路径管理
1.2.4搜索路径
1.2.5工作区窗口和数组编辑器
1.2.6变量的编辑命令
1.2.7存取数据文件
1.3MATLAB图形绘制
1.4MATLAB的帮助系统
1.4.1联机帮助系统
1.4.2命令窗口查询帮助系统
1.4.3联机演示系统
本章小结
第2章MATLAB基本运算
2.1MATLAB的数据类型
2.1.1变量和常量
2.1.2数值型数据
2.1.3字符型数据
2.1.4元胞数组
2.1.5结构体
2.1.6函数句柄
2.1.7数据类型间的转换
2.2数组运算
2.2.1数组的创建和操作
2.2.2数组的常见运算
2.3矩阵运算
2.3.1矩阵生成
2.3.2向量的生成
2.3.3矩阵加减运算
2.3.4矩阵乘法运算
2.3.5矩阵除法运算
2.4奇异值分解
2.5矩阵的基本函数运算
2.5.1矩阵的分解运算
2.5.2关系运算和逻辑运算
2.6线性方程组
2.6.1矩阵逆和除法解恰定方程组
2.6.2矩阵除法解超定方程组
2.6.3矩阵除法解欠定方程组
2.7符号运算
2.7.1符号表达式的生成
2.7.2符号矩阵
2.7.3常用符号运算
2.8复数及其运算
2.8.1复数和复矩阵的生成
2.8.2复数的运算
2.8.3留数运算
2.8.4泰勒级数展开
2.8.5傅里叶变换及其逆变换
2.8.6拉普拉斯变换及其逆变换
2.8.7Z变换及其逆变换
2.9多项式求解
本章小结
第3章MATLAB图形可视化
3.1图形绘制
3.1.1离散数据图形绘制
3.1.2函数图形绘制
3.1.3图形绘制的基本步骤
3.2二维图形绘制
3.2.1plot指令
3.2.2格栅
3.2.3图形标记说明
3.2.4线型、标记和颜色
3.2.5子图绘制
3.2.6拓扑关系图
3.2.7双坐标轴绘制
3.2.8二元函数的伪色彩
3.2.9MATLAB特殊符号标记
3.3三维图形绘制
3.3.1网格图绘制
3.3.2曲线图绘制
3.3.3曲面图绘制
3.3.4等值线图绘制
3.3.5特殊图形绘制
3.4四维图形可视化
3.4.1用颜色描述第四维
3.4.2其他函数
3.5MATLAB动画设计
本章小结
第4章MATLAB编程入门
4.1MATLAB编程简介
4.2MATLAB编程原则
4.3M文件和函数
4.3.1M文件
4.3.2匿名函数、子函数、私有函数与私有目录
4.3.3重载函数
4.3.4eval和feval函数
4.3.5内联函数
4.3.6向量化和预分配
4.4MATLAB程序控制语句运用
4.5MATLAB中的函数及调用
4.5.1函数类型
4.5.2函数参数传递
4.6MATLAB程序调试
4.6.1调试方法
4.6.2M文件分析工具
4.7MATLAB常用编程技巧
4.7.1循环计算
4.7.2使用例外处理机制
4.7.3通过varargin传递参数
本章小结
第5章插值拟合
5.1插值问题
5.1.1拉格朗日插值
5.1.2牛顿均差插值
5.2一维数据插值
5.3埃尔米特插值
5.4二维数据插值
5.5回归分析
本章小结
第6章数据拟合
6.1函数逼近
6.1.1切比雪夫逼近
6.1.2傅里叶逼近
6.2最小二乘拟合
6.3多项式拟合
6.4曲线拟合的最小二乘法
6.5用正交多项式作最小二乘拟合
6.6超定方程组的最小二乘解
6.7非线性曲线拟合
6.8非线性拟合转线性拟合
6.9用MATLAB解决拟合问题
6.10数据拟合方法
本章小结
第7章微分方程求解
7.1符号微积分
7.1.1极限
7.1.2导数
7.1.3积分
7.1.4化简、提取和代入
7.1.5傅里叶变换及其逆变换
7.1.6拉普拉斯变换及其逆变换
7.1.7Z变换及其逆变换
7.2数值积分
7.3微分方程的数值解
7.4微积分运算
7.4.1龙贝格积分法
7.4.2自适应积分法
7.4.3样条函数求积分
7.5动态微分方程模型
7.6打靶法
本章小结
第8章微分方程及级数
8.1微分方程基本运算
8.1.1常微分方程符号解
8.1.2常微分方程数值解
8.1.3泰勒级数
8.2微分方程在实际物理模型中的应用
8.2.1肿瘤大小应用分析
8.2.2放射性废料的处理问题
8.2.3质点系转动惯量求解
8.2.4储油罐的油量计算
8.2.5香烟毒物摄入问题
8.2.6冰雹的下落速度
本章小结
第9章线性方程(组)求解
9.1递推算法
9.1.1循环迭代
9.1.2迭代收敛性
9.1.3牛顿迭代
9.2高斯消元法
9.3追赶法
9.4范数
9.5方程组的性态
9.6高斯塞德尔迭代法
9.7迭代法的收敛性
9.8雅可比迭代法
本章小结
第10章非线性方程(组)求解
10.1线性规划问题
10.2非线性规划问题
10.2.1有约束的一元函数最小值
10.2.2无约束的多元函数最小值
10.2.3有约束的多元函数最小值
10.2.4二次规划问题
10.3“半无限”有约束的多元函数最优解
10.4极小化极大问题
10.5多目标规划问题
10.6最小二乘最优问题
10.6.1约束线性最小二乘
10.6.2非线性曲线拟合
10.6.3非线性最小二乘
10.6.4非负线性最小二乘
10.7非线性方程(组)的解
10.7.1非线性方程的解
10.7.2非线性方程组的解
本章小结
第11章常微分方程(组)求解
11.1常微分方程解
11.2欧拉方法
11.2.1向前欧拉方法
11.2.2向后欧拉方法
11.2.3梯形公式
11.2.4改进欧拉公式
11.3龙格库塔方法
11.3.1二阶龙格库塔法
11.3.2三阶龙格库塔法
11.3.3四阶龙格库塔法
11.4亚当斯方法
11.4.1亚当斯外推公式
11.4.2亚当斯内推公式
11.4.3亚当斯校正公式
11.4.4汉明法
11.5一阶微分方程(组)的数值解计算
11.6高阶微分方程(组)的数值解计算
11.7边值问题的数值解计算
11.8有限差分方法
11.9常微分方程(组)边值问题数值解
本章小结
第12章概率统计分布计算
12.1概率密度函数
12.2随机变量的一般特征
12.2.1期望
12.2.2方差、标准差、矩
12.2.3协方差、相关系数
12.3一维随机数生成
12.4特殊连续分布
12.5特殊离散分布
12.6生成多维联合分布随机数
12.6.1各维度独立
12.6.2协方差阵生成多元正态分布
12.7统计图绘制
12.8方差分析
12.8.1单因素试验的方差分析
12.8.2双因素试验的方差分析
12.9蒙特卡罗方法
本章小结
第13章偏最小二乘应用分析
13.1偏最小二乘回归
13.2偏最小二乘案例分析
13.3本章小结
第14章人工智能算法
14.1人工智能基本概念
14.1.1智能的概念
14.1.2人工智能的概念
14.1.3人工智能的研究目标
14.2人工智能的典型应用
14.3人工智能的MATLAB实现
14.3.1粒子群算法的MATLAB实现
14.3.2遗传算法的MATLAB实现
14.3.3模糊神经网络控制在MATLAB中的应用
14.3.4蚁群算法的MATLAB实现
本章小结
第15章模糊逻辑工具箱
15.1隶属度函数
15.1.1高斯隶属度函数
15.1.2两边型高斯隶属度函数
15.1.3一般钟型隶属度函数
15.1.4两个sigmoid型隶属度函数之差组成的隶属度函数
15.1.5通用隶属度函数
15.1.6П形隶属度函数
15.1.7两个sigmoid型隶属度函数乘积组成的隶属度函数
15.1.8sigmoid型隶属度函数
15.1.9S形隶属度函数
15.1.10梯形隶属度函数
15.1.11三角形隶属度函数
15.1.12Z形隶属度函数
15.1.13两个隶属度函数之间转换参数
15.1.14基本FIS编辑器
15.1.15隶属度函数编辑器
15.2模糊推理结构
15.2.1不使用数据聚类从数据生成FIS
15.2.2使用减法聚类从数椐生成FIS
15.2.3生成FIS曲面
15.2.4mamdani型FIS转换为sugeno型FIS
15.2.5完成模糊推理计算
15.2.6模糊均值聚类
15.2.7模糊均值和减法聚类
15.2.8绘制FIS
15.2.9绘制给定变量的所有隶属度函数曲线
15.2.10从磁盘装入FIS
15.2.11从FIS中删除某一隶属度函数
15.2.12从FIS中删除变量
15.2.13设置模糊系统属性
15.2.14以分行形式显示FIS所有属性
15.2.15完成模糊运算
15.2.16解析模糊规则
15.2.17规则编辑器和语法编辑器
15.2.18规则观察器和模糊推理框图
15.2.19保存FIS到磁盘
15.2.20显示FIS的规则
15.3模糊聚类工具箱
15.4直接自适应模糊控制
15.4.1问题描述
15.4.2控制器设计
15.4.3自适应律设计
15.4.4直接自适应模糊控制仿真
本章小结
第16章优化工具箱
16.1优化工具箱及最优化问题简介
16.1.1优化工具箱常用函数
16.1.2最优化问题
16.2线性规划
16.2.1线性规划函数
16.2.2线性规划问题的应用
16.3无约束非线性规划
16.3.1基本数学原理简介
16.3.2无约束非线性规划函数
16.3.3无约束非线性规划问题的应用
16.4二次规划
16.4.1二次规划函数quadprog
16.4.2二次规划问题的应用
16.5有约束最小化
16.5.1有约束最小化函数fmincon
16.5.2有约束最小化的应用
16.6目标规划
16.6.1目标规划函数fgoalattain
16.6.2目标规划的应用
16.7最大最小化
16.7.1最大最小化函数fminimax
16.7.2最大最小化的应用
本章小结
第17章偏微分方程工具箱
17.1偏微分方程工具箱简介
17.2求解椭圆方程
17.3求解抛物线方程
17.4求解双曲线方程
17.5求解特征值方程
本章小结
第5章插值拟合
在科技工程中,除了要进行一定的理论分析外,通过实验对所得数据进行分析、处理也是必不可少的一种方法。由于实验测定实际系统的数据具有一定的代表性,因此在处理时必须充分利用这些信息,又由于测定过程中不可避免会产生误差,故在分析经验公式时又必须考虑这些误差的影响,两者相互制约。因此,合理建立实际系统数学模型的方法称为数值逼近法。MATLAB提供了丰富的函数指令实现数据的数值逼近,本章具体讲解数据的插值与分析等内容。
学习目标:
学习和掌握插值拟合原理;
熟练掌握运用MATLAB(工具箱)进行数据插值拟合;
掌握和运用插值拟合思想解决具体工程实际问题。
5.1插值问题
工程实践和科学实验中,常常需要从一组实验观测数据(xi,yi)(i=1,2,3,…,n)中,求自变量x与因变量y的一个近似的函数关系式y=f(x)。
例如观测行星的运动,只能得到某时刻t所对应的行星位置si(用经纬度表示),想知道行星在任何时刻t的位置。又如,大气压测定问题、导弹发射问题、程序控制铣床加工精密工件问题、飞机船舶制造问题等都属于此类问题。
因为考虑到代数多项式既简单又便于计算,所以就用代数多项式近似地表示满足n个点yi=f(xi)(i=1,2,3,…,n)的函数关系式y=f(xi),此即为插值法。
5.1.1拉格朗日插值
已知n+1个数据点:(xi,yi)(i=1,2,3,…,n),n次拉格朗日插值公式为
Ln=∑ni=0yi∏nj=0,
j≠ix-xjxi-xj
特别地:当n=1时,有
L1=y0x-x1x0-x1+y1x-x0x1-x0
当n=2时,有
L2=y0(x-x1)(x-x2)(x0-x1)(x0-x2)+y1(x-x0)(x-x2)(x1-x0)(x1-x2)+y2(x-x0)(x-x1)(x2-x0)(x2-x1)
称为抛物线插值或二次插值。
在MATLAB中编程实现的拉格朗日插值法函数为lagrange()。
调用格式:
f=lagrange(x,y)
或
f=lagrange(x,y,x0)
其中,x为已知数据点的x坐标向量;y为已知数据点的y坐标向量;x0为插值点的x坐标;f为求得的拉格朗日插值多项式或在x0处的插值。
编写拉格朗日插值函数如下:
functiony=lagrange(x0,y0,x)
n=length(x0);
m=length(x);
fori=1:m
z=x(i);
s=0;
fork=1:n
p=1;
forj=1:n
ifj~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=s+p*y0(k);
end
y(i)=s;
end
end