第一篇 Matlab计算篇 1
第1章 Matlab语言程序基础 1
1.1 Matlab的数据类型 1
1.1.1 常量与变量 1
1.1.2 运算符 3
1.1.3 结构数组 5
1.1.4 数组与矩阵的生成 8
1.2 基本数学运算 9
1.2.1 向量及其运算 9
1.2.2 矩阵及其运算 11
1.2.3 多项式的化简与变换 14
1.3 基本符号运算 15
1.3.1 符号对象和表达式 15
1.3.2 符号函数的操作 16
1.3.3 符号对象和其他数据的转换 17
1.3.4 符号矩阵的生成 18
1.3.5 符号表达式的操作 19
1.4 基本的流程结构 21
1.4.1 循环结构 21
1.4.2 转移结构 23
1.4.3 开关结构 23
1.4.4 试探结构 25
1.5 函数编写与调试 25
1.5.1 函数的基本结构 26
1.5.2 变量的检测传递 27
1.5.3 串演算函数 31
1.6 图形的绘制 33
1.6.1 二维图形绘制基本语句 33
1.6.2 特殊二维图形绘制语句 38
1.6.3 二维图形的精细控制 40
1.6.4 三维图形绘制 42
1.6.5 三维图形的可视化 43
1.6.6 三维图形的精细控制 44
第2章 Matlab与Microsoft Office的连接 46
2.1 Matlab与Microsoft Word的连接 46
2.1.1 安装Matlab Notebook 46
2.1.2 使用Matlab Notebook 49
2.1.3 Notebook使用时需要注意的问题 51
2.2 Matlab与Microsoft PowerPoint的连接 51
第3章 微积分问题的数值实验 54
3.1 微积分问题的解析解 54
3.1.1 极限问题的解析解 54
3.1.2 函数导数的解析解 56
3.1.3 积分问题的解析解 60
3.2 函数的级数展开与求和 63
3.2.1 Taylor幂级数展开 63
3.2.2 Fourier级数展开 66
3.2.3 级数求和的计算 69
3.3 数值微分问题 71
3.3.1 数值微分算法 71
3.3.2 中心差分方法 72
3.3.3 二元函数的梯度计算 74
3.4 数值积分问题 76
3.4.1 由给定数据进行梯形求积 77
3.4.2 单变量数值积分求解 79
3.4.3 双重积分问题的数值解 81
3.4.4 三重定积分的数值求解 83
3.5 曲线积分与曲面积分的计算 83
3.5.1 曲线积分及Matlab语言求解 83
3.5.2 曲面积分与Matlab语言求解 87
第4章 线性代数方程组的数值实验 90
4.1 特殊矩阵的输入 90
4.1.1 数值矩阵的输入 90
4.1.2 符号矩阵的输入 94
4.2 矩阵基本分析 94
4.2.1 矩阵的特征值与特征向量 94
4.2.2 矩阵的LU分解 95
4.2.3 矩阵的QR分解 97
4.2.4 矩阵的奇异值分解 97
4.3 线性代数方程的求解 100
4.3.1 线性代数方程组 100
4.3.2 Lyapunov方程 108
4.3.3 Sylvester方程 109
4.3.4 Riccati方程 110
4.4 稀疏矩阵的线性方程 110
4.4.1 稀疏矩阵 111
4.4.2 稀疏矩阵的运算 116
4.4.3 稀疏矩阵的分解 118
4.4.4 稀疏矩阵的特征值分解 119
4.4.5 稀疏矩阵方程的求解 120
第5章 非线性方程解法 130
5.1 非线性方程的数值解法 130
5.1.1 二分法 130
5.1.2 迭代法 132
5.1.3 牛顿迭代法 136
5.2 非线性方程(组)的符号解法 142
5.2.1 solve()函数 142
5.2.2 fzero()函数 143
5.2.3 fsolve()函数 143
5.3 非线性方程组的数值解法 146
5.3.1 迭代法 146
5.3.2 塞德尔迭代法 147
5.3.3 牛顿迭代法 149
第6章 数据建模问题的数值实验 152
6.1 插值与数据拟合 152
6.1.1 一维数据的插值问题 153
6.1.2 二维网格数据的插值问题 155
6.2 样条插值与数值微积分 158
6.2.1 样条插值的Matlab表示 158
6.2.2 基于样条插值的数值微积分运算 162
6.3 由已知数据拟合数学模型 164
6.3.1 多项式拟合 164
6.3.2 函数线性组合的曲线拟合方法 166
6.3.3 最小二乘曲线拟合 169
第7章 微分方程问题的数值实验 172
7.1 常系数线性微分方程的符号解 172
7.1.1 线性常系数微分方程 172
7.1.2 特殊非线性微分方程 175
7.2 微分方程问题的数值解法 176
7.2.1 微分方程问题算法概述 176
7.2.2 Runge-Kutta算法及Matlab实现 177
7.2.3 一阶微分方程组的数值解 178
7.2.4 单个高阶微分方程的转换 183
7.3 特殊微分方程的数值解 185
7.3.1 刚性微分方程组的求解 185
7.3.2 隐式微分方程求解 190
7.3.3 微分代数方程的求解 192
7.3.4 时滞微分方程求解 193
7.4 微分方程初值问题的精细积分方法 197
7.4.1 齐次方程和指数矩阵的精细积分算法 197
7.4.2 非齐次方程的精细积分算法 198
7.4.3 一般结构动力方程的精细积分方法 199
7.4.4 增维精细积分方法 203
附录 常微分方程数值求解器 207
第8章 微分方程的边值问题和偏微分方程工具箱 211
8.1 常微分方程边值问题的计算机求解 211
8.1.1 线性方程边值问题的打靶算法 212
8.1.2 线性微分方程边值问题的有限差分算法 216
8.1.3 常微分方程边值问题的求解器 220
8.2 偏微分方程求解 222
8.2.1 偏微分方程的有限元法 222
8.2.2 偏微分工具箱(PDE ToolBox)简介 223
8.2.3 求解偏微分方程典型函数介绍及其应用举例 226
8.2.4 PDE图形界面简介 231
第9章 Matlab的最优化问题的计算机求解 240
9.1 无约束最优化问题方程求解 240
9.1.1 基本理论 240
9.1.2 解析解法和图解法 244
9.1.3 基于Matlab的数值解法 245
9.2 有约束最优化问题计算机求解 252
9.2.1 基本理论 252
9.2.2 基于Matlab的数值解法简介 255
9.3 整数规划问题计算机求解 256
9.3.1 基本理论 256
9.3.2 基于Matlab的数值解法简介 259
第二篇 Simulink仿真篇 261
第10章 Simulink分析工具与模型调试 261
10.1 打开Simulink调试器 261
10.1.1 窗口调试方式 261
10.1.2 命令行调试 263
10.2 进行模型仿真与调试 264
10.3 断点设置 268
10.3.1 无条件中断 269
10.3.2 条件中断 270
10.4 显示仿真信息 270
10.4.1 显示模块输入输出信息 271
10.4.2 显示代数环信息 272
10.4.3 显示系统状态 272
10.4.4 显示积分信息 273
10.5 显示模型信息 273
10.5.1 显示模型中模块的执行顺序 273
10.5.2 显示模型中的非虚拟系统 274
10.5.3 显示具有过零点的潜在模块 275
10.5.4 显示代数环 275
10.5.5 显示调试器状态 276
第11章 Simulink进行数值计算 277
11.1 微分方程求解器Solver 277
11.2 刚性方程求解实例 278
11.3 Simulink仿真中的代数环问题 282
第12章 Simulink连续系统、离散系统和混合系统,以及状态系统建模 287
12.1 连续系统建模 287
12.1.1 线性系统 287
12.1.2 非线性系统 297
12.2 离散系统建模 297
12.2.1 模块介绍 297
12.2.2 离散系统实例 298
12.3 混合系统建模 303
12.4 状态模块仿真 306
12.4.1 状态空间 306
12.4.2 连续系统的状态空间表示 307
12.4.3 离散系统的状态空间表示 307
12.5 实例分析 307
12.5.1 状态系统实例 307
12.5.2 振动系统实例 311
第13章 S-函数的建立与应用 315
13.1 何为S-Function 315
13.2 在模型中使用S-函数 316
13.2.1 初识S-函数 316
13.2.2 S-Function所起的作用 319
13.3 S-函数工作原理 319
13.3.1 模型的数学描述 320
13.3.2 仿真过程 320
13.3.3 S-函数回调方法 321
13.4 M文件S-函数的编写 322
13.5 M文件S-函数模板 323
13.6 M文件S-函数简单实例 326
13.7 连续、离散和混合系统M文件S-函数 333
13.7.1 连续系统 333
13.7.2 离散系统 336
第14章 Stateflow使用技巧与实例应用 340
14.1 Stateflow基础 340
14.1.1 初识Stateflow 340
14.1.2 状态转移图 341
14.1.3 状态与转移 342
14.1.4 事件 342
14.2 运行Stateflow 343
14.2.1 将Stateflow嵌入Simulink中的一个简单范例 343
14.2.2 利用Stateflow来表示模型的控制部分 345
14.2.3 通过迁移来改变Stateflow状态 347
14.2.4 通过事件来激发Stateflow 348
14.2.5 Stateflow使用数据变量 348
14.3 为目标生成C代码 349
14.4 利用状态和迁移进行控制 350
14.4.1 创建一个on-off模型 350
14.4.2 在Stateflow图表中绘制迁移 352
14.4.3 为Stateflow图表添加一个触发事件 354
14.4.4 向Stateflow图表传递一个触发事件 355
14.5 进行Stateflow图表仿真 355
14.5.1 定义模型仿真参数 356
14.5.2 Stateflow图表仿真的基本步骤 357
14.6 仿真过程中的调试 360
14.7 Stateflow常用命令 363
14.8 Stateflow仿真实例 364
第15章 控制系统设计与仿真 371
15.1 何为Simulink控制系统设计 371
15.2 线性化模型 372
15.3 磁力球模型线性化实例 372
15.3.1 磁力球模型示意图 372
15.3.2 磁力球模型方程 373
15.3.3 创建或打开一个Simulink模型 373
15.3.4 开始线性化工程 374
15.3.5 配置一个线性化模型 375
15.3.6 确定工作点 378
15.3.7 线性化模型 385
15.3.8 线性化模块 387
15.3.9 分析结果 388
15.3.10 导出并保存工程 392
15.4 离散系统建模 393
15.4.1 离散系统建模的基本概念 393
15.4.2 不同采样速率的彩色显示 394
15.4.3 混合系统建模 394
15.5 经典控制系统的设计与仿真 395
15.5.1 时域分析 395
15.5.2 频域分析 396
15.5.3 根轨迹分析 397
15.5.4 常用控制器的设计与仿真 398
15.6 现代控制系统的设计与仿真 402
15.6.1 现代控制系统的特点和研究内容 402
15.6.2 模型参考自适应控制系统 403
15.6.3 实例分析 404
15.7 滑模变结构控制系统设计与分析 406
15.7.1 滑模变结构控制理论 406
15.7.2 连续时间滑模控制 407
15.7.3 离散时间滑模控制 407
15.7.4 滑模变结构控制的应用 408
第16章 Simulink神经网络工具箱 417
16.1 Neural Network Blockset模块库 417
16.1.1 神经网络模块介绍 417
16.1.2 神经网络模块的生成及模型设计 420
16.2 神经网络模型预测控制实例分析 425
16.2.1 模型预测理论 425
16.2.2 问题的描述 426
16.2.3 建立模型 427
16.2.4 系统辨识 428
16.2.5 系统仿真 431
16.3 NARMA_L2(反馈线性化)控制实例分析 432
16.3.1 反馈线性化控制理论 432
16.3.2 问题的描述 434
16.3.3 建立模型 435
16.3.4 系统辨识 436
16.3.5 系统仿真 439
16.4 神经网络模型参考控制实例分析 440
16.4.1 模型参考控制理论 440
16.4.2 问题描述 441
16.4.3 建立模型 441
16.4.4 系统辨识 443
16.4.5 系统仿真 448
第17章 SimMechanics机构系统应用 450
17.1 SimMechanics介绍 450
17.1.1 初识SimMechanics 450
17.1.2 SimMechanics能够做什么 451
17.2 SimMechanics模块介绍 451
17.3 建立一个简单的机构实例 454
17.3.1 创建SimMechanics模型 455
17.3.2 建立一个单摆模型 456
17.4 单摆运动可视化 465
17.5 四连杆结构仿真实例 469
第18章 Real-Time Workshop 480
18.1 Real-Time Workshop简介 480
18.2 生成普通的实时程序 483
18.2.1 打开演示程序 483
18.2.2 实例演示 485
参考文献 494