MATLABSimulink教程-编程、计算与仿真(第2版)课件 第8-14章 线性代数与矩阵分析- Simulink建模与仿真进阶_第1页
MATLABSimulink教程-编程、计算与仿真(第2版)课件 第8-14章 线性代数与矩阵分析- Simulink建模与仿真进阶_第2页
MATLABSimulink教程-编程、计算与仿真(第2版)课件 第8-14章 线性代数与矩阵分析- Simulink建模与仿真进阶_第3页
MATLABSimulink教程-编程、计算与仿真(第2版)课件 第8-14章 线性代数与矩阵分析- Simulink建模与仿真进阶_第4页
MATLABSimulink教程-编程、计算与仿真(第2版)课件 第8-14章 线性代数与矩阵分析- Simulink建模与仿真进阶_第5页
已阅读5页,还剩373页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章:线性代数与矩阵分析LinearAlgebraandMatrixAnalysis国家级

一

流

本

科

课

程

建设MATLAB科学运算与仿真第8章线性代数与矩阵分析LinearAlgebraandMatrixAnalysisMATLAB科学运算与仿真国家级一流本科课程建设第8章线性代数与矩阵分析线性代数的研究起源于对线性方程组的求解线性方程组是科学研究中应用最广泛的数学模型传统线性代数课程涵盖范围比较窄,可以拓宽本章主要内容特殊矩阵的输入矩阵分析矩阵的变换与分解矩阵函数8.1特殊矩阵的输入特殊矩阵输入的常用函数常用函数(续)8.1.1

零矩阵、幺矩阵与单位矩阵零矩阵、幺矩阵与单位矩阵零矩阵:元素都是0的矩阵幺矩阵:元素都是1的矩阵单位矩阵:对角元素为1,其余运算都是0的矩阵MATLAB函数例8-1矩阵输入矩阵输入任务生成一个3×6的零矩阵

A生成一个与A

同维数的单位矩阵BMATLAB代码例8-2

生成多维数组生成3×4×5×6×7×8的六维幺数组MATLAB命令生成的元素个数展成列向量8.1.2随机数矩阵生成[0,1]区间均匀分布的随机数使用rand函数调用格式与zeros等函数一致生成[a,b]区间随机数:生成标准正态分布N(0,1)随机数:randn函数生成N(m,s2)正态分布随机数:生成[a,b]区间均匀分布随机整数例8-3

抛硬币实验数学实验的思路生成[0,1]区间的随机数,每个数认为抛一次硬币如果随机数的值大于0.5,定义为正面,否则为反面伪随机数等于0.5的概率几乎等于0MATLAB实现nnz函数Numberofnonzero例8-4

随机整数矩阵生成由[-1,7,4,8]构成的3×8随机整数矩阵函数randi只能生成连续整数的随机数矩阵使用变通方法,先生成整数矩阵再替换元素MATLAB命令可以更改替换语句顺序吗?8.1.3对角矩阵对角矩阵的生成已知第k条次对角线元素的对角矩阵生成对角元素的提取例8-5

对角矩阵生成如何生成下面的对角矩阵?MATLAB命令主(次)对角元素元素都是v=[123]块对角矩阵数学形式MATLAB语句8.1.4特殊矩阵的表现形式默认生成的特殊矩阵都是双精度矩阵如果需要符号矩阵,可以由sym函数转换例8-6几个常用的特殊矩阵MATLAB命令8.2矩阵分析MATLAB提供了大量的矩阵分析函数两种调用格式结果不同,采用的算法也不同矩阵分析函数(续)30×30矩阵行列式耗时1s,90×90矩阵耗时一分钟8.2.1矩阵的简单分析矩阵分析是线性代数类课程的重要内容本节主要介绍矩阵的行列式矩阵的迹矩阵的秩矩阵的范数特征多项式与特征值矩阵的行列式行列式(determinant)主要原来判定线性代数方程是否有唯一解行列式的定义MATLAB求解例8-7

魔方矩阵的行列式4×4魔方矩阵MATLAB计算数值解解析解例8-8

生成行列式为1的整数矩阵

由randi可以生成随机整数矩阵生成一个元素为0,1,2的整数矩阵,使其行列式为1可以考虑循环结构生成矩阵后求行列式的值,找到以后退出循环MATLAB求解例8-9

求高阶矩阵的行列式矩阵数学形式MATLAB求解不能使用变量n,可以尝试n,总结规律矩阵的迹矩阵的迹(trace):对角元素的和例8-10验证5×5阶任意矩阵,Kronecker乘积,由kron函数计算MATLAB验证语句生成任意矩阵判定两端是否相同的最简单方法是找出差,再化简例8-11矩阵的秩矩阵的秩:矩阵线性无关的最大行(列)数4阶魔方矩阵的秩MATLAB求解例8-12高阶Hilbert矩阵的秩生成20×20的Hilbert矩阵用数值和解析解方法计算矩阵的秩矩阵的行列式矩阵的范数矩阵的范数是矩阵的一种测度通俗说,就是用一个标量刻画矩阵的大小不同的范数定义例8-13

方程求解的误差评价AX=B,可以由X=A\B求解方程方程解的误差怎么求?将解代入方程得出误差,误差是矩阵,比较适合用范数描述方程的求解与误差评价求解特征多项式与特征值特征多项式定义MATLAB求解数值求解解析求解例8-14

魔方矩阵的特征多项式魔方矩阵MATLAB求解例8-15

符号矩阵的特征多项式已知向量由向量生成Hankel矩阵例8-16

魔方矩阵的特征根魔方矩阵MATLAB求解求取特征多项式的符号表达式8.2.2逆矩阵逆矩阵定义矩阵A

为非奇异方阵存在一个矩阵C,满足逆矩阵记作逆矩阵的求解直接求逆可以调用rref函数,由基本行变换方法求解例8-17

四阶矩阵求逆任意4阶Hankel矩阵生成A

矩阵并求逆例8-18

基本行变换求逆数学上的思路构造C=[A,I]对C

矩阵作基本行变换,可以由rref函数实现如果能将变换后矩阵变换成[I,H]形式,则H

为逆矩阵MATLAB求解例8-19

奇异矩阵求逆4阶魔方矩阵是奇异矩阵,可以求逆并检验用解析解方法求逆例8-20

用基本行变换求逆仍考虑4阶魔方矩阵用基本行变换求逆得出的结果8.2.3Moore–Penrose广义逆矩阵奇异矩阵不存在逆矩阵,长方形矩阵不存在逆矩阵定义广义逆,,记作引入,得出Moore-Penrose广义逆又称为伪逆,记作

AN

与NA

均为Hermit对称矩阵例8-21

奇异矩阵的广义逆4阶魔方矩阵的广义逆MATLAB求解例8-22

长方形矩阵的伪逆矩阵AMATLAB求解矩阵求秩求伪逆8.2.4矩阵的特征值特征值的定义MATLAB求解满足数值求解得到的V

是归一化的矩阵例8-23

奇异矩阵的特征值4阶魔方矩阵特征值、特征向量的数值运算解析计算8.3矩阵的变换与分解矩阵的变换与分解:变换矩阵的形式8.3.1矩阵的相似变换对方阵A,存在一个非奇异矩阵T使得称为矩阵的相似变换(similaritytransform)MATLAB求解8.3.2相伴矩阵变换若存在列向量x使得非奇异T

可以使得

A相似变换为相伴矩阵可以通过循环选择x

向量由0、1构成,使得T

非奇异例8-24

魔方矩阵变换为相伴矩阵4阶魔方矩阵选择变换矩阵,实现相伴变换8.3.3一般矩阵的对角变换与Jordan变换如果矩阵的特征根互不相同选择T=D,可以将A变换为对角矩阵如果特征根有重根,则不能变换成对角矩阵引入Jordan矩阵变换使得例8-25

对角矩阵转换已知矩阵直接转换解析运算例8-26

变换Jordan矩阵已知矩阵Jordan变换8.3.4矩阵的三角分解一般矩阵可以分解成上三角和下三角矩阵的积A=LUMATLAB求解主元素例8-27三角分解4阶魔方矩阵三角分解解析解数值解:考虑主元素8.3.5对称矩阵的Cholesky分解对称矩阵的Cholesky分解MATLAB求解数值与解析求解非正定矩阵

例8-28对称矩阵分解已知对称矩阵MATLAB求解例8-29

非正定对称矩阵给出的对称矩阵MATLAB求解8.3.6奇异值分解矩阵的奇异值是数值线性代数引入的概念奇异值是矩阵奇异性的一种测度奇异值分解L,M为正交矩阵,正交矩阵满足奇异值对角矩阵MATLAB求解条件数例8-30

魔方矩阵的奇异值分解4阶魔方矩阵奇异值分解与条件数计算高精度数值解8.4矩阵函数矩阵函数(matrixfunctions)是矩阵分析的重要内容有很多科学与工程领域用到矩阵函数矩阵函数在传统线性代数类课程中完全被忽略矩阵函数f(A)标量函数f(x),x

由A

取代,常数由I

取代本节探讨矩阵的指数函数、三角函数与任意函数8.4.1矩阵的指数函数标量指数函数的Taylor级数展开矩阵指数函数的定义MATLAB直接求解例8-31

矩阵的指数已知矩阵MATLAB求解8.4.2矩阵的三角函数矩阵的正弦、余弦函数MATLAB直接求解Euler公式8.4.3任意矩阵函数MATLAB函数自编的MATLAB函数funmsym函数功能比funm更强大,很多无法求解的函数问题可以求解例8-32矩阵的复合函数已知矩阵MATLAB求解例8-33例8-34

求已知矩阵求常规运算函数可以求解调用funmsym函数可以求解第九章:代数方程求解AlgebraicEquationSolutions主讲:薛定宇

东北大学信息学院国家级

一

流

本

科

课

程

建设MATLAB科学运算与仿真第9章代数方程求解AlgebraicEquationSolutions主讲:薛定宇东北大学信息学院MATLAB科学运算与仿真国家级一流本科课程建设第9章代数方程求解方程(equation)是含有一个或多个变量的等式这些变量又称为未知变量满足这些等式的未知变量的值又称为方程的解本章主要内容线性代数方程求解:唯一解、无穷解与最小二乘解Lyapunov方程与Sylvester方程一般非线性方程的求解多解矩阵方程的求解9.1线性代数方程组的求解线性代数方程的一般形式矩阵形式解的形式:唯一解、无穷解与无解线性代数方程解的形式判定构造解的判定矩阵三种形式若m=n,rank(A)=n,唯一解若rank(A)=rank(C)<n,无穷多解若rank(A)<rank(C),方程无解,可以求最小二乘解9.1.2

线性方程唯一解的数值与解析解法假设矩阵方程AX=B

有唯一解三种可能的求解方法由矩阵左除直接求解X=A\B由逆矩阵计算求解用基本行变换方法直接求解:如果A,B之一为符号矩阵,得出的是解析解哪种求解方法好?例9-1

求解方法的比较对不同的n

生成随机矩阵并比较求解方法得出的结果比较符号矩阵n=50,前两种方法耗时分别为4.182s和26.393sn=80,两种方法耗时24.53s和219.36s9.1.3无穷解的构造无穷解的条件三个步骤齐次方程的基础解系找到一个特解构造无穷解例9-2

求解线性方程线性方程MATLAB求解例9-3

行阶梯化简求解方程线性方程直接求解9.1.4矛盾方程的最小二乘解条件,方程无解利用Moore-Penrose广义逆,得出MATLAB求解使范数最小的解,最小二乘解例9-4

求解矛盾方程线性方程MATLAB求解9.1.5XA=B

方程求解线性方程两端求转置得出方程的解9.2特殊线性方程的方程求解特殊形式的线性代数方程通过某种变换,可以转换为AX=B方程的方程方程可以得出解析解本节探讨的方法AXB=C方程Lyapunov方程Sylvester方程9.2.1

线性方程的Kronecker变换矩阵的Kronecker乘积通过Kronecker乘积可以将很多方程变换成Ax=b形式的方程可以求解方程的解析解例9-5简单方程的变换演示2x2方程的变换MATLAB实现线性方程的变换AX=B

高阶方程也可以类似变换其中,XA=B方程的变换9.2.2

AXB=C

方程求解如果矩阵非奇异,可以直接对方程变换求解基于Kronecker乘积的求解方法其中例9-6

求解AXB=C方程已知方程MATLAB直接求解9.2.3Lyapunov方程求解Lyapunov方程

其中MATLAB求解数值解:控制系统工具箱函数解析解算法其中例9-7Lyapunov方程Lyapunov方程MATLAB的数值求解与验证例9-8

前面Lyapunov方程的解析解Lyapunov方程方程的解析解9.2.4Sylvester方程求解Sylvester方程其中数值求解解析求解与MATLAB实现例9-9求解Sylvester

方程求解Sylvester方程MATLAB数值求解利用sylvester函数求解例9-10求Sylvester方程解析解求解Sylvester方程MATLAB解析求解例9-11

求解Sylvester方程求解Sylvester方程MATLAB直接求解析解例9-12含参数Sylvester方程含参数a

的Sylvester方程MATLAB直接求解解不存在的条件9.3

一般非线性方程求解非线性方程一般没有解析解本节探讨主要内容非线性方程的图解法准解析解方法数值解法多解方程的求解伪多项式方程的求解9.3.1非线性方程的图解法一元方程的解方程数学形式令,由fplot函数绘制函数曲线,求与x

轴交点二元方程的解联立方程由fimplicit函数绘制两个方程的曲线,曲线交点为方程的解例9-13

一元方程的求解求解方程MATLAB直接求解例9-14

二元方程求解二元方程求解区间MATLAB求解点(0,0),方程的孤立解例9-15

图解法求解方程二元方程MATLAB求解方程2,得出MATLAB求解9.3.2多项式类方程的准解析解方法多项式方程组变换为某个变量的多项式方程MATLAB直接求解可以求解析解的方程不能求解解析解的方程不能采用字符串描述方程,只能用符号表达式例9-16

鸡兔同笼方程求解鸡兔同笼方程MATLAB直接求解用符号表达式描述方程直接求解例9-17

求解方程二元方程MATLAB求解解的验证例9-18

复杂方程的求解二元函数直接求解9.3.3

二次型方程的准解析解方法Riccati方程直接求数值解只能得出一个解变换的形式:广义Riccati方程没有现成求解方法例9-19

广义Riccati方程广义Riccati方程MATLAB求解提取得到的解得到的解存于X.x11等成员变量编写函数提取得出的解调用语句第k

个根在三维数组例9-20提取方程的根并得出最大误差前面的广义Riccati方程提取得出的解,并得出最大的误差9.3.4非线性方程的数值解前面介绍的vpasolve适用于多项式型的方程组一般非线性方程的解F(X)=0求解函数flag为正表示求解成功不同的初值有可能导致不同的解例9-21

求解非线性方程组非线性方程组不是标准型引入向量型变量两种描述方法方程求解(续)直接求解修改初始条件,重新求解复数初值有可能导致复数解得出的解精度不高,如何改进精度?9.3.5

方程求解的两个问题多解方程如何求解?尝试不同的初值,可能得出不同的解复数初值可能得出复数解如何改进解的精度?三个循环终止条件(1)迭代次数或函数调用次数超出最大允许次数,求解失败(2)得出(3)方程值满足求解函数的控制选项获取控制选项常用的控制选项例9-22

重新求解方程非线性方程组MATLAB默认选项下精度低重新求解9.4多解非线性矩阵方程一般矩阵方程没有现成的解法提出一个思路将思路用MATLAB函数实现,构造通用求解函数将fsolve函数置入循环结构用随机数生成程序在循环内选择一个初始搜索点如果找到新的解则记录下来如果找到复数根,则尝试其共轭复数找到已经存在的根,则和以前的根比较精度,存更精确的构造通用的求解函数函数的前一部分函数调用格式

例9-23

解非线性方程组代数方程组引入向量型变量得出标准型MATLAB描述方程方程求解(续)直接求解解的图形表示例9-24

矩阵方程求解广义Riccati方程MATLAB直接求解例9-25

非线性矩阵方程非线性矩阵方程MATLAB求解由vpasolve函数不能求解,无法描述方程已经找到120个实根,存于data9_25.mat文件例9-26

伪多项式方程的求解伪多项式方程没有其他方法可以求解基于MATLAB的直接求解方法第十章:微分方程求解DifferentialEquationSolutions主讲:薛定宇

东北大学信息学院国家级

一

流

本

科

课

程

建设MATLAB科学运算与仿真第10章微分方程求解DifferentialEquationSolutions主讲:薛定宇东北大学信息学院MATLAB科学运算与仿真国家级一流本科课程建设第10章微分方程求解微分方程是另一类方程,含有未知函数的导数项微分方程通常用于动态系统的数学模型可以由函数求解,也可以通过Simulink建模与求解本章主要内容常微分方程的解析解微分方程的初值问题特殊微分方程微分方程的边值问题10.1

常微分方程的解析解很多线性微分方程可以解析求解一般非线性微分方程没有解析解可以尝试dsolve函数求解微分方程建议使用符号表达式描述微分方程和已知条件例10-1

高阶线性微分方程的解析解微分方程数学形式已知输入信号MATLAB直接求解例10-2

微分方程的特解前面给出的微分方程已知输入信号已知条件求解方程例10-3

微分方程非初值问题前面给出的微分方程已知输入信号已知条件求解方程10.1.2高阶微分方程组微分方程组也可以使用dsolve函数直接求解例10-4微分方程组MATLAB直接求解例10-5

线性微分方程组微分方程组MATLAB直接求解10.1.3时变微分方程由dsolve函数可以直接求解例10-6二阶时变微分方程MATLAB直接求解特殊函数例10-7

三阶时变微分方程时变方程MATLAB求解求解区间10.1.4非线性微分方程绝大多数非线性微分方程没有解析解可以尝试dsolve求解例10-8试求解下面的一阶非线性微分方程MATLAB求解例10-9

非线性方程求解已知非线性方程MATLAB求解例10-10

变换的形式微分方程稍有变化MATLAB求解非线性微分方程没有解析解,只能求数值解后面章节探讨各种微分方程的数值解10.2微分方程的初值问题10.2.1一阶显式微分方程的标准型一阶显式微分方程的标准型状态变量向量任意非线性函数已知初值10.2.2微分方程的直接求解常用的求解函数函数调用格式微分方程求解步骤写出微分方程的数学形式标准型数学形式MATLAB描述微分方程匿名函数或MATLAB函数描述微分方程的标准型对于函数输入变元t,不能舍弃微分方程的求解。可调用ode45()或其他函数直接求解解的检验例10-11Lotka–Volterra方程Lotka–Volterra捕食者与猎物模型方程已知参数和初值变换成标准型:令写出标准型微分方程数值解(续)标准型描述微分方程并求解微分方程微分方程解的检验(略)10.2.3微分方程解的检验求解控制参数设置控制选项例10-12

提高解的精度例10-11的解曲线过于粗糙修改控制选项,得出精确结果计算量增加,增幅不大10.2.4微分方程的变换方法微分方程数值解函数只能处理标准型非标准型的微分方程需要变换成标准型高阶显式微分方程已知初值选择状态变量例10-13

时变微分方程微分方程解析解求解区间由于,可以得出显式微分方程模型方程选择状态变量分两段求解,合成在一起不同算法的对比将前面的ode45替换成其他算法一般应该采用ode45如果下载了ode87,值得一试刚性微分方程求解算法不大适用高阶微分方程组变换方程原型选择状态变量例10-14Apollo卫星轨迹数学模型已知参数已知初值选择状态变量写出标准型得出标准型描述微分方程用MATLAB函数描述微分方程用匿名函数描述求解方程并验证结果直接求解原结果是错误的,修改控制参数最小步长与步长曲线例10-15

更复杂的微分方程组微分方程组同时含有选择状态变量求解写出标准型得出结果写出标准型10.2.5

刚性微分方程数值算法的引入有些微分方程解出现毛刺选项某些状态变换缓慢,另一些有突变,不易选择统一步长数值解函数长时间不能得出数值解方程很可能是刚性方程选择刚性方程的专用方法求解例10-16

刚性方程求解VanderPol方程已知求解区间方程的标准型微分方程描述微分方程求解求解语句10.3特殊微分方程各类不同的微分方程求解微分代数方程隐式微分方程延迟微分方程通过例子介绍求解方法和求解函数10.3.1微分代数方程微分代数方程的标准型质量矩阵求解方法正常描述方程右边构造左侧的M

矩阵将矩阵或矩阵函数句柄写入选项的Mass属性直接求解微分方程例10-17求解微分代数方程微分代数方程已知初值标准型微分代数方程(续)描述微分方程直接求解10.3.2隐式微分方程数学标准型已知相容初始条件的计算隐式微分方程的求解例10-18

隐式微分方程微分方程已知初始条件状态变量选择隐式微分方程求解隐式微分方程的描述与初值微分方程求解10.3.3延迟微分方程微分方程则含有状态变量及导数在不同时刻的值延迟微分方程常数延迟的微分方程求解可以带有非零历史值、历史函数延迟只能是常数例10-19

延迟微分方程微分方程微分方程的变换状态变量延迟微分方程的求解记延迟信号存在Z

矩阵中,第一列第二列为延迟微分方程标准型微分方程的描述微分方程求解MATLAB求解语句微分方程的解:返回的变量tx.y是按行存储的不同误差限的求解效果变延迟微分方程如果延迟为时间、状态的函数,dde23不能求解需要用函数句柄描述延迟常数延迟描述为t-ti求解命令例10-20

变延迟微分方程微分方程微分方程描述与求解语句中立型延迟微分方程中立型延迟微分方程(neutral-typeDDE)微分方程含有状态变量在不同时刻的导数两个延迟向量MATLAB求解函数例10-21中立型延迟微分方程微分方程已知矩阵MATLAB求解10.4微分方程的边值问题前面介绍的是微分方程初值问题如果已知的条件包括部分初值也包括部分终值,则称为微分方程的边值问题(boundaryvalueproblem)本节主要介绍边值问题的数学形式边值问题的求解方法含参数边值问题的求解方法10.4.1边值问题的数学形式边值问题的标准型边值问题允许带有未知参数q边值描述记作10.4.2

一般边值问题求解边值问题的求解步骤产生参数的插值点描述微分方程与边界条件边值问题的数值求解例10-22

求解边值问题微分方程已知边值已知解析解为不能直接求解推导标准型边值问题的标准型得出的标准型由于选择状态变量边值问题的描述与求解边值条件边值条件标准型MATLAB求解10.4.3含有参数的边值问题求解如果微分方程含有参数,则归入v

向量利用前面介绍的方法可以直接求解如果需要,还可以调用bvp4c函数,有时可能牺牲精度,但可以求解一些问题例10-23

带参数微分方程微分方程边值记参数,得出标准型边值条件边值问题的描述与求解边值问题标准型MATLAB求解本章小结微分方程的解析解方法dsolve微分方程初值问题的求解方法ode45,ode15s,odeset一般微分方程转换为标准型特殊微分方程求解刚性微分方程ode15s,Mass矩阵隐式微分方程ode15i,decic延迟微分方程dde23,ddesd,ddensd,ddeset微分方程边值问题求解bvpinit,bvp5c/bvp4c第十一章:最优化问题求解OptimizationProblemSolutions主讲:薛定宇

东北大学信息学院国家级

一

流

本

科

课

程

建设MATLAB科学运算与仿真第11章最优化问题求解OptimizationProblemSolutions主讲:薛定宇东北大学信息学院MATLAB科学运算与仿真国家级一流本科课程建设第11章最优化问题求解最优化技术是科学与工程领域的重要工具学会最优化问题的思想与求解方法,则自然会追求获得问题最好的解,会使得研究上一个层次本章主要内容无约束最优化问题线性规划与二次型规划有约束最优化问题全局最优化求解方法11.1无约束最优化无约束最优化的数学描述决策变量目标函数f(x),为标量函数无约束最优化问题的物理意义如何选择x,使得目标函数的值最小:无约束最大值问题的求解11.1.2无约束最优化问题的求解现成的求解函数fminunc函数允许使用结构体变量例11-1

二元函数最优化二元函数表达式引入决策变量向量获得目标函数标准型目标函数描述方法匿名函数描述与求解11.1.3无约束最优化问题的求解精度控制控制选项由optimset函数获得精度控制选项TolX与TolFun选项的设置,可以选择为eps例11-2重新求解例11-1问题,提高精度MATLAB求解11.2线性规划与二次型规划无约束最优化问题是一种最优化问题另一种最优化问题是有约束最优化问题最优化问题带有约束条件有约束最优化问题特例1:线性规划问题特例2:二次型规划问题一般非线性规划问题11.2.1线性规划线性规划的数学形式目标函数是线性的约束条件是线性的线性规划问题是凸问题,任意算法都能得到全局最优解MATLAB求解结构体变量用一个变量描述整个线性规划问题结构体变量的常用成员变量使用之前应该先用clear命令清除结构体例11-3

线性规划问题线性规划问题对照标准型目标函数约束条件MATLAB求解例11-4

结构体描述线性规划问题目标函数约束条件MATLAB求解例11-5

线性规划问题线性规划问题变换标准型相关的矩阵线性规划问题求解线性规划问题MATLAB求解11.2.2二次型规划二次型规划的数学形式凸问题的条件:H为正定矩阵二次型的1/2系数MATLAB求解11.2.3基于问题的描述方法与求解传统的线性规划和二次型规划需要变换标准型目标函数、约束条件、矩阵提取,比较麻烦需要一种更直接的描述方法基于问题的描述方法:求解步骤最优化问题的创建决策变量的定义问题的描述prob.Objective和prob.Constraints问题的求解例11-6

重新求解线性规划问题线性规划问题无需变换标准型,直接描述并求解例11-7

求解线性规划问题线性规划难点:两个决策变量,常规方法需要重新改写问题求解最优化问题可以给出下面语句例11-8

四元二次型规划问题二次型规划问题MATLAB求解11.3

一般非线性规划非线性规划的数学形式物理意义可行解MATLAB求解成员变量结构体的常用成员变量例11-9

有约束最优化问题最优化问题MATLAB描述约束条件有约束最优化问题求解目标函数最优化问题求解如果单独描述线性约束,重新求解第二个约束条件是线性的可以剔除新约束条件求解语句11.3.3局部最优解与全局最优解如果二元最优化目标函数的曲面有多个谷底如果选择不同初值,则可能搜索到不同的谷底如果有的函数值较大,则该解可能是局部最优解函数值最小的谷底是全局最优解有约束条件的问题,当然需要满足约束条件多元问题没有解析解不宜称为全局最优解,应该用已知最好解(bestknownsolution)例11-10

非线性规划问题数学描述多个决策变量,应该处理成标准型定义决策变量非线性规划的标准型变换后的标准型问题描述非线性约束条件的描述线性约束的矩阵表示问题求解随机选择初值,求解非线性规划问题不同初值可能导致不同结果11.4全局最优解的探讨传统最优化方法有一个重大缺陷初值选择不当很可能得到问题的局部最优解期望得出全局最优解没有任何算法可以确保得出全局最优解全局最优化问题的求解工具MATLAB全局优化工具箱提供了4个求解函数这里提供两个新的求解工具,处理无约束和有约束最优化问题选择一些测试实例,对比最优化问题的求解效果11.4.1MATLAB全局优化工具箱简介MATLAB的全局优化工具箱主要提供了4个工具模式搜索算法patternsearch()函数遗传算法求解函数ga()模拟退火求解函数simulannealbnd()粒子群优化求解函数particleswarm()这些方法的功能前两个方法号称可以求解有约束最优化问题后两个方法只能求解带有决策变量边界的无约束最优化问题遗传算法函数调用语句结构体常用成员变量模式搜索算法函数调用语句结构体常用成员变量不需要nvars,需要提供x0不需要fitnessfcn,需要objectivesolver应该为‘patternsearch’粒子群优化算法函数调用语句常用结构体成员变量不支持约束条件需要nvars,不用x0solver数值为‘particleswarm’不支持Aineq等成员变量模拟退火算法求解模拟退火(simulatedannealing)求解函数常用成员变量需要x0,不用nvars不支持约束条件solver设置为‘simulannealbnd’11.4.2无约束全局最优解的程序实现类似于前面介绍的方程求解函数在循环内部嵌入fminunc函数,每次随机生成初值运行N次,找到目标函数最小的结果MATLAB实现例11-11

改进的Rastrigin

多峰函数二元目标函数搜索范围全局最优解(30,20)可以尝试不同求解方法,运行100次,比较方法的成功率不同求解方法测试测试不同求解方法,比较找到全局最优解的成功率测试的结果测试结果求解的成功率求解精度求解耗时综合评价例11-12

更严苛的基准测试问题Griewangk基准测试问题(n=50)测试范围全局最优解比较不同算法算法比较语句每种方法运行100次,比较成功率测试的结果测试结果求解的成功率求解精度、求解耗时、综合评价11.4.3有约束全局最优解的程序实现同样的思路,求解有约束最优化问题例11-13

重新求解例11-10MATLAB命令描述隐式问题运行100次,观察成功率例11-14

用遗传算法求解问题测试9次遗传算法10次运行得出的结果9次运行,与前面的全局最优解比较最优化小结无约束最优化问题的求解fminunc,fminsearch线性规划问题,凸问题,三种描述方法常规描述方法与结构体描述方法linprog基于问题的描述方法optimproblem,optimvars,solve二次型问题,三种描述方法,quadprog有约束最优化问题fmincon常规描述方法、结构体描述方法最优化小结(二)智能优化方法的使用——全局最优化工具箱遗传算法ga模式搜索方法patternsearch粒子群优化算法particleswarm模拟退火算法simulannealbnd全局优化问题求解无约束最优化问题fminunc_global有约束最优化问题fmincon_global第十二章:数据处理与数理统计DataProcessingandStatistics主讲:薛定宇

东北大学信息学院国家级

一

流

本

科

课

程

建设MATLAB科学运算与仿真第12章数据处理与数理统计DataProcessingandStatistics主讲:薛定宇东北大学信息学院MATLAB科学运算与仿真国家级一流本科课程建设第12章数据处理与数理统计在科学与工程研究中经常会通过实验测出一些数据根据这些数据对某种规律进行研究是数据插值由数据进行函数逼近,得出数学模型对数据进行统计分析、推断,得出结论本章主要内容数据插值由数据拟合函数模型数据的统计分析数据的假设检验12.1

数据插值数据插值:指在函数一些已知点的基础上计算函数在新的点处函数值的方法一维样本点下的数据插值二维网格样本点的数据插值二维一般样本点的数据插值多维样本点的数据插值12.1.1一维数据插值函数f(x)的数学形式未知已知一组样本点坐标生成样本点向量插值运算(不建议其他选项‘pchip’,‘linear’等)例12-1

一维函数插值假设函数已知生成样本点由样本点拟合曲线,并和原函数比较MATLAB命令12.1.2二维与多维插值网格样本点的插值方法已知网格型矩阵x,y已知网格点处的函数值矩阵

z二维插值问题求解例12-2

二元函数网格数据插值已知二元函数生成稀疏的样本点生成密集的网格矩阵,进行插值运算并绘图(误差绝对值)散点样本点的插值方法实测一组样本点散点插值函数散点插值的优势散点是不能绘制曲面图的经过散点插值得出网格数据,然后绘制曲面图例12-3

散点数据的插值

原型函数随机生成散点由散点插值绘制函数曲面(与理论值的误差曲面)多维样本点的插值方法多维网格数据生成ndgrid多维网格样本点插值intern多维散点插值griddatan12.1.3样条插值求解方法两个常用的样条类三次样条类:分段三次多项式函数B样条多维样条插值(网格数据)样条类的操作函数可以直接用样条函数进行插值、微积分、绘图直接建立对象直接操作对象,得到插值结果例12-4

利用样条类求解插值问题仍考虑原型函数MATLAB求解生成样本点建立样条对象,得出插值结果例12-5

稀疏数据的插值仅已知正弦函数半个周期的5个点数据已知x=0,0.4,1,2,π

处的正弦值MATLAB插值计算例12-6

二维插值求解已知二元函数需要已知网格数据,网格由ndgrid生成注意生成插值对象时的数据结构MATLAB求解12.1.4基于样条插值的数值微积分运算由已知数据求数值微积分一元函数的微积分由fnder和fnint直接计算,得出的结果仍然为样条对象由于csapi对象使用的是分段三次多项式函数,微分一次就变成二次函数,积分仍是三次函数,效果不佳,不建议使用二元函数的数值积分不能使用fnint,而应该使用fnder,微分阶次取负值一般情况下,数值微分效果优于第7章的方法例12-7

高阶数值微分已知原型函数第7章方法无法得出7阶导数选择B样条的阶次为n+3,求数值问题例12-8

求数值积分数值积分问题MATLAB求解不能使用fnint,只能用fnder,使用-1阶微分可以求出积分函数,不只是定积分12.2由数据拟合函数模型插值求取的是未知点的数值,有时还需要获得问题的数学模型插值对象得到的是问题的一种数学模型本节介绍的内容可以用多项式拟合数据如果已知数据函数的原型,可以由最小二乘法拟合待定参数可以使用人工神经网络模型拟合数据12.2.1多项式拟合一般函数可以用多项式(Taylor级数)拟合已知样本点数据为x,y可以得出拟合多项式系数向量若n

与n+1阶多项式拟合效果差不多,则选择n例12-9

多项式拟合原型函数MATLAB求解生成样本点数据,获得3阶和6阶多项式,并与理论值比较12.2.2最小二乘拟合曲线拟合已知原型函数带有待定系数a已知样本点x,y定义拟合误差最小二乘曲线拟合例12-10

最小二乘拟合例12-1的数据已知原型函数生成数据,由最小二乘法得出待定系数a多变量函数的最小二乘拟合多变量原型函数样本点数据X,z数据X是由列构成的矩阵,每一列对应一个输入变量写原型函数时,xi

可以用X(:,i)表示由lsqcurvefit函数拟合待定系数例12-11

多元函数的拟合已知数据:数据文件c12data1.dat前3列为x,y,z,第4列为v原型函数令改写的原型函数12.2.3

基于神经网络的数据拟合人工神经网络人工神经元的结构输入信号、输出信号权值、阈值、传输函数——输入加权和的非线性映射神经网络的结构与使用步骤神经网络——由若干神经元按照某种规则互联的网络已知数据X0,Y0

(多变量问题)神经网络的使用步骤创建空白神经网络:神经网络的训练:神经网络的泛化:参考前面介绍的插值问题例12-12

神经网络求解散点插值问题二元插值问题原型MATLAB求解生成散点由散点建立神经网络模型,得出拟合效果例12-13

径向基网络拟合径向基网络的使用建立与训练解析解网络神经网络的泛化MATLAB求解12.3数据的统计分析12.3.1概率密度与分布函数概率密度函数分布函数概率密度函数计算函数计算与关键词分布函数与逆分布函数计算例12-14Rayleigh分布Rayleigh分布的概率密度函数自变量Rayleigh分布的关键词raylMATLAB曲线绘制12.3.2伪随机数生成伪随机数生成函数例12-15生成10000×5的Rayleigh分布伪随机数,b=1MATLAB求解伪随机数的种子伪随机数是由数学公式生成的随机数由种子计算,由rng记录种子伪随机数是确定性的数组,但满足分布的统计规律系统的种子可以生成完全一致的随机数例12-16生成两组完全一致的伪随机数12.3.3均值与方差已知样本点向量均值方差标准差中位数与计算数据向量的中位数排序x

向量若n

为奇数,则中位数为若n

为偶数,则中位数为

MATLAB求解例12-17

数据的统计量计算生成30000个正态分布随机数求出各个统计量:均值、方差、标准差和中位数减少统计量个数,300个,重新进行统计量计算12.3.4离群值检测离群值是位于整体分布形式之外的观测值四分位数的定义与计算已知数据向量v中位数定义为q2,由中位数将向量分两段,中位数记作q1,q3四分位数的直接计算四分位距(interquartilerange,IQR):正常区间,范围外的为离群值(outliers)箱线图绘制

例12-18

数据的箱线图和离群值200个荧光灯的寿命文件c12dlamp.dat读入数据绘制箱线图得出离群值离群值检测第三方软件outliers选项:grubbs和quartile多变量数据的离群值检测软件moutlier1例12-19

离群值检测例12-18的数据文件c12dlamp.datMATLAB求解语句两种方法的结果稍有不同例12-20

多元问题的离群值检测NBA球队数据文件名c12dteam.dat有三个因素球队价值、场馆价值、收入12.4假设检验与方差分析有了数据,则可以考虑基于数据提取出更有意义的信息数据的假设检验显著性检验两组数据有无显著性差异方差分析单因子和双因子方差分析12.4.1数据的假设检验先假设总体具有某种统计特征(如具有某种参数或遵从某种分布),然后再检验这个假设是否可信,这种方法称为统计假设检验(hypothesistest)方法显著性检验假设一个产品的指标m0从一品产品中随机提取n

个样本,得出均值和标准差s提出假设,即这批产品的均值为m0

假设检验的判定假设检验的判定步骤选取统计量,已知u

满足N(0,1)给出显著性水平a(0.02)由a

计算逆正态分布函数K

值如果,则假设不能拒绝,否则有98%的把握拒绝假设例12-21

显著性假设检验已知某产品的平均强度为改变工艺后,随机抽取200个新产品,得出平均强度,标准差改变工艺后是否影响产品的强度?提出假设:两组数据有无统计学意义下的明显差异两组数据随机选择n1和n2个样本计算其均值分别为和,标准差分别为s1和s2提出假设假设检验的步骤计算统计量,满足T分布得出或若|t|<|T|,则假设

不能拒绝例12-22

药效检验失眠病或者随机抽取两组,每组10人用不同药后,测延长睡眠的小时数两种药效有无显著差异?假设药效检验(续)计算并判定箱线图判定12.4.2方差分析前面药效分析的假设检验只能比较两组方差分析:N种药物,则需要分为N组,进行假设检验方差分析是由RonaldFischer提出的方差分析单因子(oneway)方差分析双因子(twoway)方差分析单因子方差分析只有一个外界因素对观察结果产生影响有N

种药物随机选取病人,分成N

组,每组m

人每个病人的治愈天数记作xij构造

X

矩阵下标i为组号,j

为组中病人序号

构造ANOVA表,如果p<a,则拒绝假设例12-23

单因子方差分析5种药物,随机分5组,每组6人,治愈天数药效有无差异?计算概率p,得出箱线图双因子方差分析由两个因素可能影响观测结果提出三个假设第一个因素对观测结果没有显著影响第二个因素对观测结果没有显著影响两个因素沟通作用对观测结果没有显著影响方差分析概率向量p例12-24

双因子方差分析三种松树(因子1)在四个地方(因子2)生长每种松树每个地方各随机取5棵,测出胸径树种、地区、树种加地区对松树胸径的影响?第十三章:Simulink建模与仿真ModelingandSimulationwithSimulink主讲:薛定宇

东北大学信息学院国家级

一

流

本

科

课

程

建设MATLAB科学运算与仿真第13章Simulink建模与仿真ModelingandSimulationwithSimulink主讲:薛定宇东北大学信息学院MATLAB科学运算与仿真国家级一流本科课程建设第13章Simulink建模与仿真系统仿真是根据被研究的真实系统的数学模型或物理行为研究系统性能的一门学科现在尤指利用计算机去研究系统行为的方法包括系统、模型、算法、程序设计、结果显示、分析与验证系统仿真技术已经成为继理论研究和科学实验之后科学研究手段上的第三种方式成为一种认识世界、改造世界的重要手段可以完成很多普通理论研究与科学实验做不到的工作Simulink的发展Simulink最早出现于1990年,名为SimuLAB,UNIX版Simu+Link说明其主要功能1992年出现了PC版,全盘更名Simulink成为控制系统主流建模仿真工具1997年推出Stateflow,支持有限状态机建模2008年推出Simscape语言与工具,实现多领域物理建模:用搭积木的方法实现电子、电气、控制、机械等领域的建模MATLAB的2019b版推出了Simulink10.0版本节主要内容Simulink界面简介Simulink的模型库、工具栏常用的模块输入输出类、连续离散系统、运算类模块、信号类模块Simulink建模举例与参数设置微分方程的Simulink建模与仿真13.1Simulink的界面模块库的打开方式基于界面的打开命令打开Simulink的工具栏6个分区Simulink模型文件的后缀名,slx、mdl快速重启按钮模型设置对话框按钮13.2Simulink的常用模块组不同的表现形式常用模块组类型输入输出连续离散系统实现运算信号路由输入源模块组Sources输出池模块组Sinks连续系统模块Continuous控制系统工具箱模型BlocksetsandToolboxes图标ControlSystemToolbox模块组例13-1

多变量传递函数矩阵多变量传递函数矩阵模型MATLAB表示LTI模型离散模块组Discrete不连续模块组Discontinuities数学运算模块组MathOperations用户自定义函数

User-DefinedFunctions信号路由模块组SignalRouting13.2.4Simulink模型的建模与仿真举例例13-2为下面的反馈控制系统建模所需的模块传递函数x2、饱和、死区、积分器、示波器、阶跃输入建模步骤与仿真Simulink建模的步骤打开空白模型窗口复制模块到模型窗口修改参数连线模型存盘:c13mmod1.slx死区非线性模块的处理模块嵌入技巧例13-3

下抛问题的Simulink建模物理学中的描述速度与位移的关系微分方程建模方法由积分器定义关键信号所需模块:时钟,常数输入,示波器,输出模块建模与仿真仿真结果的处理默认设置,返回结构体out变量,绘图命令可以编写函数绘图13.3Simulink参数设置众多参数可以设置设置方法与界面——齿轮图标本节介绍的参数求解器参数求解器的精度、算法选择输出参数前面的结构体处理太麻烦,设置更简洁的方法13.3.1求解器参数设置计算精度变步长自动算法ode45相对误差限1e-14绝对误差限eps13.3.2输入、输出参数设置13.3.3模型参数预设置可以在模型打开时执行指定的代码ModelSetting菜单ModelProperties子菜单PreLoadFcn编辑框例13-4参数预设置将g=9.81赋给例13-3的模型13.4基于Simulink的微分方程建模与求解13.4.1Simulink建模准则关键信号定义:x(t)和x’(t),则可以引入一个积分器模块两个信号相等,则将两个信号直接连接起来,闭合仿真回路已知信号u(t)后面连接一个Gain模块可以构造出ku(t)信号对信号v(t)作非线性代数运算,将信号v(t)输入Fcn模块若干路信号可以馈入Mux模块,构造出的向量型信号向量型信号输入Demux模块,分解为标量型信号输入信号u(t)馈入TransportDelay模块构造出延迟信号u(t−d)

信号可以将其连到Scope模块上到Out模块13.4.2底层建模方法例13-5Lorenz方程建模其中,完整的仿真模型模型名c13mlor2.slx执行仿真13.4.3向量化建模方法前面的建模方法过于麻烦远比前面介绍的ode45函数调用方式麻烦易错,需要更好的方法向量化的建模方法向量化关键信号MATLABFunction模块Fcn模块例13-6

用向量化建模方法重新建模Lorenz方程模型其中,两种模块描述非线性函数MATLABFunction模块InterpretedMATLABFunction模块两种模块两种建模方法编写程序13.4.4标准微分方程建模的统一框架前面的方法有局限性只能使用常数,不能使用变量微分方程不能显含t后一个问题的解决方法由x(t)和t

构造增广向量只能使用InterpretedMATLABFunction模块描述函数可以直接求解方程例13-7

时变微分方程数学模型初始值,解析解标准型变换令t=x,微分方程标准型标准型的Simulink建模构造增广状态变量向量Simulink模型标准型建模与仿真标准型模型MATLAB函数解的绘制13.4.5微分方程组建模用积分器定义关键信号利用InterpretedMATLABFunction模块建模利用MATLAB求解微分方程例13-8Apollo卫星求解数学模型其中初始条件Simulink建模生成关键信号Simulink模型标准模型MATLAB函数例13-9隐式微分方程建模利用AlgebraicConstraints模块描述代数方程隐式微分方程构造关键信号记,得出代数方程标准型Simulink建模代数方程Simulink模型c13mimp.slxMATLAB函数另一个模型,使用Fcn模块仿真误差评价另一个模型:c13mimp2.slx例13-10

延迟微分方程建模延迟微分方程历史条件由TransportDelay模块提取延迟信号构造向量由于零历史条件,第二个方程传递函数描述Simulink仿真模型Simulink模型:c13mdde1.slx例13-11

中立型延迟微分方程微分方程模型其中,Simulink仿真模型Simulink模型:c13mdde2.slx已知矩阵已写入模型本章小结介绍了Simulink各个常用模块组及模块介绍了Simulink界面与设计介绍了求解器与输入输出设置建议sl_plot各类微分方程的Simulink建模方法关键信号的定义——积分器的使用时变微分方程的统一建模框架隐式微分方程的建模与求解AlgebraicConstraint模块延迟微分方程的处理TransportDelay模块第十四章:Simulink建模与仿真进阶MoreonModelingandSimulationwithSimulink主讲:薛定宇

东北大学信息学院国家级

一

流

本

科

课

程

建设MATLAB科学运算与仿真第14章Simulink建模与仿真进阶MoreonModelingandSimulationwithSimulink主讲:薛定宇东北大学信息学院MATLAB科学运算与仿真国家级一流本科课程建设第14章Simulink建模与仿真进阶前面介绍了Simulink建模仿真的基础知识本章继续介绍建模与仿真方法利用MATLAB命令实现建模与仿真精确仿真与快速仿真子系统与模块封装S-函数的编程与应用14.1基于命令的仿真方法14.1.1仿真参数设置Simulink模型的常用操作函数Simulink模型的常用参数例14-1

模型预定义参数的设置已知模型:c13mmove.slx期望设置相对误差限设置为绝对误差限设置为epsPreLoadFcn中,将变量g

设置为9.81MATLAB设置命令14.1.2用MATLAB启动仿真过程启动仿真的函数格式模型输入输出设置反选Singleoutput将输出数据格式设置为Arraytspan的设置方法不允许例14-2用命令重解例13-5微分方程Simulink模型:c13mlor2.slx重新求解14.1.3Simulink仿真输入输出数据结构可以使用单一输入、输出变元输出变元的数据结构:Simulink.SimulationOutput输入的数据结构:Simulink.SimulationInput可以得出数据结构体及成员变量即使原模型反选了Singlesimulationoutput选项,也可以返回仿真结果的结构体变元例14-3

得出模型的输入数据结构测试模型:c13mmove.slx模型、模块参数修改命令输入对象包含可调参数模块参数BlockParameters模型参数ModelParameters可以使用的命令获得输入结构体设置模型参数设置变量的值例14-4

用命令设置模型与变量参数Simulink模型:c13mmove.slx得出输入变量的结构体将模型参数StopTime设置为20,将SaveFormat设置为’Array’月球抛物,将变量g

设置成MATLAB命令14.1.4并行仿真如果in是向量,含有若干模型,则可以并行仿真并行仿真的命令并行仿真只能使用in,out,不论是否设置单一输入输出例14-5在不同星球上抛物,比较并行仿真与串行仿真已知不同星球上的重力加速度用循环结构构造向量型的in,然后进行并行仿真并行仿真与串行仿真并行仿真的MATLAB函数串行仿真14.2精确仿真与快速仿真介绍一些特殊仿真注意事项过零点与过零点检测某信号u(t)在tk与tk+1时刻符号不同,其间存在过零点给出例子演示过零点的存在与检测方法找出过零点能实现精确仿真默认条件下Simulink绝大部分模块是会自动进行过零点检测的代数环与代数环消除快速重启例14-6

绘制曲线时的过零点已知函数定义域定步长曲线绘制,选择步距h=0.02找出过零点,重新绘图14.2.2代数环处理代数环是指在一个仿真模型中,某个或某些模块的输出信号取决于其输入信号,而输入信号同时又取决于其输出信号的现象会减慢仿真速度需要求解代数方程有时需要想办法消除例14-7

代数环演示系统框图与Simuli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论