MATLAB程序设计与*化计算一书首先介绍MATLAB的基本使用方法和程序设计基础,然后将MATLAB与*化计算相结合,基于*化理论与方法,讲解如何使用MATLAB求解*化领域的计算问题。全书共15章,第1~7章介绍MATLAB入门、MATLAB编程基础、MATLAB矩阵计算、MATLAB数值计算及MATLAB符号计算等内容,将读者领入MATLAB的大门,并熟练使用MATLAB。第8~9章主要介绍MATLAB绘图,如何通过MATLAB的强大绘图功能使得数据可视化。第10章对优化计算进行概述,让读者领略什么是优化计算及优化设计的基本原理。第11~13章系统地介绍线性规划、非线性规划、数值优化、多目标规划、优化工具箱等内容,让读者轻松地掌握MATLAB在优化计算中的应用。第14~15章为优化计算高级篇,主要讲解遗传算法和微粒群优化计算在MATLAB中的应用。
MATLAB程序设计与*化计算一书内容循序渐进、由浅入深,并结合大量实例帮助读者理解和掌握*化问题的建模方法与求解技巧。MATLAB程序设计与*化计算一书适合计算应用、*化领域和科学计算的研究人员使用,也可作为高等院校计算机专业、通信专业等相关专业的教材。
(1)MATLAB程序设计与*化计算一书以MATLAB的编程为基础,引领读者跨入MATLAB的大门,并向读者展示了MATLAB的强大功能。(2)MATLAB程序设计与*化计算一书的内容涵盖了*化理论和方法,以MATLAB计算功能求解*化问题。(3)MATLAB程序设计与*化计算一书做到了理论与实践相结合。理论的检验和验证也必须通过实践实现,*化技术理论和系统实验相结合是有效的途径之一。(4)MATLAB程序设计与*化计算一书深入浅出、循序渐进地让读者从整体上把握*化计算的实质,进而可将实际问题抽象成易于理解的数学模型,同时利用MATLAB语言进行求解。(5)MATLAB程序设计与*化计算一书力求内容丰富,各章节相互联系,内容具有系统性、科学性、实用性和引导性;同时,各章节又相对独立,自成体系,为读者提供了极大方便。
序言····························································前言Foreword最优化计算的英文是Optimization Computation,是在现代计算机广泛应用的基础上发展起来的一项技术。最优化计算根据最优化原理和方法,综合各方面的因素,以人机配合方式或采用自动探索的方式,在计算机上进行半自动或全自动设计,以选出在现有工程条件下最好的设计方案。最优化理论和方法自古就有,最典型的实例即是黄金分割,最优化方法成为科学方法则是在17世纪后。牛顿和莱布尼茨所创建的微积分理论为最优化问题的解决提供了理论基础,后来产生的变分法和简单的库存模型等精确的解析方法可以称为古典最优化方法。最优化计算主要以数学规划为基础,研究各种系统的优化途径及方案,为决策者提供科学决策的依据。随着计算机应用技术的飞速发展,各种可用于最优化方法设计与实现的软件层出不穷,丰富了科研人员的开发研究手段,提高了人们解决实际问题的效率,MATLAB即为其中的一种。利用MATLAB求解最优化问题,可把问题简单化,也可快速、准确地给出最优化的解。MATLAB已被广泛应用于自动控制、系统工程、信息工程、应用数学、机电工程、电子工程、计算机、优化设计等专业领域。为了使广大读者更好地掌握、应用MATLAB求解最优化问题,作者编写了本书。本书主要介绍MATLAB程序设计及最优化计算,内容覆盖了MATLAB编程及最优化设计相关概念、算法、函数、应用,做到理论与实践相结合。本书以MATLAB R2014b为基础,首先介绍MATLAB程序设计的基础知识,然后系统介绍在矩阵计算、数值计算、符号运算和图形绘制等方面的使用方法,最后重点讲解在最优化计算中的应用,通过MATLAB算法编程解决最优化计算问题。通过本书,读者不仅能掌握使用MATLAB最优化工具箱来快速解决实际问题,而且能学会分析优化算法和采用MATLAB编程解决最优化问题,从而提高分析和解决问题的能力,这也是本书的特色之一。本书具有如下优势。(1) 本书以MATLAB的编程为基础,引领读者跨入MATLAB的大门,并向读者展示了MATLAB的强大功能。(2) 本书的内容涵盖了最优化理论和方法,以MATLAB计算功能求解最优化问题。(3) 本书做到了理论与实践相结合。理论的检验和验证也必须通过实践实现,最优化技术理论和系统实验相结合是有效的途径之一。(4) 本书深入浅出、循序渐进地让读者从整体上把握最优化计算的实质,进而可将实际问题抽象成易于理解的数学模型,同时利用MATLAB语言进行求解。(5) 本书力求内容丰富,各章节相互联系,内容具有系统性、科学性、实用性和引导性;同时,各章节又相对独立,自成体系,为读者提供极大方便。(6) 在介绍最优化设计的章节中,每章都应用MATLAB解决各领域中的实际最优化问题,从而降低读者的学习门槛、提高学习效率。本书内容比较详尽,内容的取舍和安排恰当、循序渐进,讲解通俗易懂,实例丰富,并注重培养解决实际问题的能力。力求降低学习难度,通过丰富的算法、经典的实践例子来引导学习。本书适用于计算应用、最优化领域和科学计算方向的研究人员使用,也可作为高等院校学习该类课程的本科生和研究生的教材,还可供读者作为查询最优化数学问题求解方法的参考书。本书在编写过程中,得到了姜珍妮、任丽艳等研究生同学的大力支持,她们认真、仔细地校对了书中的内容,在此表示感谢。由于时间仓促和水平所限,书中难免有纰漏之处,请各位读者批评指正。
编者2016年10月◆MATLAB程序设计与最优化计算
目录Contents第1篇MATLAB编程篇
第1章导论3
1.1概论3
1.2算法的开发与应用3
1.3数据获取与分析6
1.4数据可视化7
1.5数值计算9
第2章MATLAB基础10
2.1启动MATLAB10
2.2命令行窗口13
2.3输出命令15
2.3.1disp命令15
2.3.2fprintf命令16
2.4保存与加载命令22
2.4.1save命令23
2.4.2load命令23
2.5导入与输出数据25
2.5.1数据导入或输出命令25
2.5.2使用导入向导27
2.6工作空间28
2.7显示格式30
2.8定义标量变量30
2.8.1赋值运算符31
2.8.2变量的命名规则32
2.8.3预定义变量和关键字32◆MATLAB程序设计与最优化计算目录第3章MATLAB编程34
3.1带标量的算术运算34
3.1.1优先级34
3.1.2用MATLAB作计算器35
3.2基本内置函数35
3.3关系和逻辑运算符37
3.3.1关系运算符37
3.3.2逻辑运算符39
3.3.3优先级40
3.3.4内置逻辑函数42
3.4条件语句43
3.4.1ifend结构43
3.4.2ifelseend结构43
3.4.3ifelseifelseend结构44
3.5switchcase语句45
3.6循环46
3.6.1forend循环46
3.6.2whileend循环47
3.7嵌套循环和嵌套条件语句48
3.8break和continue语句49
第4章脚本与函数文件50
4.1脚本文件50
4.1.1使用脚本文件的注意事项50
4.1.2脚本文件的创建与保存51
4.1.3脚本文件的运行52
4.1.4当前路径52
4.2函数文件的创建53
4.3函数文件的结构53
4.3.1函数定义行54
4.3.2输入和输出参数54
4.3.3H1行和帮助文本行55
4.3.4函数体56
4.4局部变量和全局变量56
4.5函数文件的保存57
4.6用户自定义函数的使用57
4.7脚本文件与函数文件的比较58
4.8子函数58
第5章矩阵计算60
5.1矩阵的创建60
5.1.1创建一个一维数组(向量)60
5.1.2根据一串已知的数字来创建向量60
5.1.3创建一个二维数组(矩阵)63
5.1.4MATLAB中变量的注意事项65
5.1.5转置运算符65
5.1.6数组寻址66
5.1.7在数组寻址中使用冒号67
5.1.8向已有变量中添加元素69
5.1.9删除元素72
5.1.10处理数组的内置函数73
5.2矩阵运算74
5.2.1加法与减法74
5.2.2数组相乘75
5.2.3数组相除78
5.2.4逐元素运算80
5.2.5在MATLAB内置数学函数中使用数组82
5.2.6分析数组的内置函数83
5.2.7随机数的生成84
第6章数值计算87
6.1多项式87
6.1.1多项式的值87
6.1.2多项式的根89
6.1.3多项式的加法、乘法和除法运算90
6.1.4多项式求导91
6.2曲线拟合92
6.2.1用多项式来实现曲线拟合polyfit函数92
6.2.2使用函数而不是多项式来实现曲线拟合95
6.2.3插值计算98
6.2.4基本拟合接口101
6.3求解单变量方程104
6.4寻找函数最大值或最小值106
6.5数值积分107
6.6常微分方程110
第7章符号计算114
7.1符号对象和符号表达式115
7.1.1创建符号对象115
7.1.2创建符号表达式116
7.1.3findsym命令和默认符号变量118
7.2化简符号表达式119
7.2.1collect、expand和factor命令119
7.2.2simplify和simple命令121
7.2.3pretty命令122
7.3求解代数方程122
7.4微分125
7.5积分126
7.6求解常微分方程127
7.7符号表达式的数值计算130
第8章二维绘图133
8.1plot命令134
8.1.1绘制给定数据137
8.1.2绘制函数137
8.2fplot命令139
8.3在同一个plot中绘制多个图像139
8.3.1使用plot命令139
8.3.2使用hold on 和 hold off 命令141
8.3.3使用line命令141
8.4定义绘图显示格式142
8.4.1使用命令定义绘图显示格式142
8.4.2使用plot编辑器绘图145
8.4.3使用误差线绘图146
8.5绘制特殊图形147
8.6直方图149
8.7polar绘图152
8.8在同一页面上绘制多图153
8.9多图窗口153
8.10工具栏绘图154
第9章三维绘图156
9.1三维曲线156
9.2三维网格和三维曲面图157
9.3特殊图形绘图163
9.4view命令166
第2篇最优化计算基础篇
第10章优化计算基础171
10.1优化问题实例171
10.2优化问题标准形式172
10.3无约束优化问题173
第11章线性与非线性优化174
11.1线性优化174
11.2非线性优化174
11.3方程和方程组的解175
11.4多项式180
第12章数值方法优化185
12.1非线性方程185
12.2不动点法求解x=g(x)185
12.2.1牛顿法求解方程f(x)=0187
12.2.2Schrder方法求解方程 f(x)=0188
12.3非线性方程组188
12.3.1Seidel法188
12.3.2牛顿迭代法189
第13章优化工具箱194
13.1优化工具箱194
13.1.1标准算法194
13.1.2大规模的算法194
13.2最小化算法195
13.2.1多目标问题195
13.2.2具有边界约束的非线性标量最小化197
13.2.3带约束的非线性最小化198
13.2.4极小极大优化199
13.2.5最小值优化200
13.2.6半无限约束最小值201
13.2.7线性规划201
13.2.8二次规划203
13.3求解方程的算法204
第3篇最优化计算高级篇
第14章遗传算法209
14.1概述209
14.1.1问题解的表示209
14.1.2适应度函数210
14.1.3种群规模初始化211
14.1.4选择机制211
14.1.5交叉操作212
14.1.6变异操作212
14.1.7繁殖算子212
14.2编码和优化问题212
14.3遗传算法的参数213
14.3.1Dejong设置213
14.3.2设置214
14.3.3MicroGA设置214
14.4遗传算法的MATLAB程序214
14.4.1问题1: 最大化给定区间内的给定一维函数214
14.4.2问题2: 旅行商问题216
第15章微粒群优化224
15.1简介224
15.2PSO算法224
15.3PSO的数学模型225
15.4PSO中的参数及参数调优225
15.5MATLAB群体智能的例子226
15.5.1问题1: 模拟集群运动使目标函数最小化226
15.5.2问题2: 粒子群优化行为228