收藏 分享(赏)

ch05matlab学习资料.ppt

上传人:dreamzhangning 文档编号:3234980 上传时间:2018-10-08 格式:PPT 页数:33 大小:137.50KB
下载 相关 举报
ch05matlab学习资料.ppt_第1页
第1页 / 共33页
ch05matlab学习资料.ppt_第2页
第2页 / 共33页
ch05matlab学习资料.ppt_第3页
第3页 / 共33页
ch05matlab学习资料.ppt_第4页
第4页 / 共33页
ch05matlab学习资料.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、2018年10月8日,第1页,第5章 MATLAB 的数学运算,MATLAB R2007基础教程 清华大学出版社,教学目标 教学重点 教学内容,2018年10月8日,第2页,教学目标,掌握多项式运算及插值掌握函数操作,2018年10月8日,第3页,教学内容,多项式与插值 函数运算微分方程,2018年10月8日,第4页,多项式与插值,多项式在数学中有着极为重要的作用,同时多项式的运算也是工程和应用中经常遇到的问题。MATLAB 提供了一些专门用于处理多项式的函数,用户可以应用这些函数对多项式进行操作。MATLAB 中对多项式的操作包括多项式求根、多项式的四则运算及多项式的微积分。,2018年10

2、月8日,第5页,多项式的表示,在 MATLAB 中多项式用一个行向量表示,向量中的元素为该多项式的系数,按照降序排列。如多项式 可以表示为向量 p=9 7 4 3。用户可以创建向量的方式创建多项式,再将其显示为多项式,,2018年10月8日,第6页,多项式的四则运算,由于多项式是利用向量来表示,多项式的四则运算可以转化为向量的运算。 多项式的加减为对应项系数的加减,因此可以通过向量的加减来实现。但是在向量的加减中两个向量需要有相同的长度,因此在进行多项式加减时,需要将短的向量前面补 0。 多项式的乘法实际上是多项式系数向量之间的卷积运算,可以通过 MATLAB 中的卷积函数 conv 来完成。

3、 多项式的除法为乘法的逆运算,可以通过反卷积函数 deconv 来实现。,2018年10月8日,第7页,多项式的其他运算,除多项式的四则运算外,MATLAB 还提供了多项式的一些其他运算。这些运算及其对应的函数如表所示。,2018年10月8日,第8页,多项式的运算函数(1/2),roots 函数和 poly 函数 这两个函数为功能互逆的两个函数。roots 函数用于求解多项式的根。该函数的输入参数为多项式的系数组成的行向量,返回值为由多项式的根组成的列向量。poly 函数用于生成根为制定数值的多项式。 polyval 函数polyval 函数用于多项式求值。对于给定的多项式,利用该函数可以计算

4、该多项式在任意点的值。,2018年10月8日,第9页,多项式的运算函数(2/2),polyder 函数 函数 polyder 用于多项式求导。该函数可以用于求解一个多项式的导数、两个多项式乘积的导数和两个多项式商的导数。该函数的用法为: q = polyder(p) 该命令计算多项式 p 的导数。 c = polyder(a,b) 该命令实现多项式 a、b 的积的导数。 q,d = polyder(a,b) 该命令实现多项式a、b 的商的导数,q/d 为最后的结果。,2018年10月8日,第10页,多项式拟合,曲线拟合是工程中经常要用到的技术之一。MATLAB 提供了曲线拟合工具箱满足用户要求

5、,另外,还提供了多项式拟合函数。函数 polyfit 给出在最小二乘意义下最佳拟合系数。该函数的调用格式为:p = polyfit(x,y,n)其中x、y分别为待拟合数据的 x 坐标和 y 坐标,n 用于指定返回多项式的次数。,2018年10月8日,第11页,数据插值,根据已知数据推断未知数据,则需要使用数据插值的概念。MATLAB 提供了对数组的任意一维进行插值的工具,这些工具大多需要用到多维数组的操作。本节将对数据插值做简单的介绍,主要介绍一维插值。 MATLAB 中一维插值主要有: 多项式插值 快速傅立叶变换(FFT)插值。,2018年10月8日,第12页,一维插值,一维插值在曲线拟合和

6、数据分析中具有重要的地位。在 MATLAB 中,一维插值由函数 interp1 实现。该函数的调用格式为yi = interp1(x,y,xi,method) x、y:采用数据的 x 坐标和 y 坐标 xi :待插值的位置 method:采用的插值方法 该语句返回函数在点 xi 处的插值结果。该语句中的参数 method 可以选择的内容如表所示。,2018年10月8日,第13页,外插运算,当插值点落在已知数据集的外部时,需要对该点进行插值估算,这种外插估值是比较难的。MATLAB中没有指定外插算法时,对已知数据集外部点上函数值的估计都返回NaN。 需要外插运算时,可以通过interp1函数添加

7、extrap参数,指明所用的插值算法也用于外插运算。 语法格式: yi = interp1(x,y,xi,method,extrap),2018年10月8日,第14页,函数运算,函数的表示 数学函数图象的绘制 函数极值 函数求解 数值积分 含参数函数的使用,2018年10月8日,第15页,函数的表示,MATLAB 中提供了两种函数表示的方法: 利用 M 文件将函数定义为 MALTAB 函数将函数定义为 MALTAB 函数,当需要调用该函数时,需要通过符号“”获取函数句柄,利用函数句柄实现对函数的操作。 匿名函数方法 直接创建函数,如语句: fh = (x)1./(x-0.3).2 + 0.01

8、) + 1./(x-0.9).2 + 0.04)-6;,2018年10月8日,第16页,数学函数图象的绘制,函数图象具有直观的特性,可以通过函数图象查看出一个函数的总体特征。MATLAB 提供了绘制函数图象的函数 fplot,方便用户绘制函数的图象。下面介绍该函数的用法。该函数的调用格式如下: fplot(fun,limits),y = f(x) fplot(fun,limits,LineSpec) fplot(fun,limits,tol) fplot(fun,limits,tol,LineSpec) fplot(fun,limits,n) fun 可以为 MATLAB 函数的 M 文件名,

9、可以是包含变量 x 的字符串,该字符串可以传递给函数 eval,还可以是函数句柄。 参数 limits用于指定绘制图象的范围。limits 是一个向量,用于指定 x 轴的范围,格式为 xmin xmax。limits 也可以同时指定 y 轴的范围,格式为 xmin xmax ymin ymax。,2018年10月8日,第17页,函数极值,一元函数的极小值 fminbnd 求得函数在给定区间内的局部极小值。该函数的调用格式为x = fminbnd(fun,x1,x2,options) fun 为函数句柄 x1 和 x2 分别用于指定区间的左右边界 options 用于指定程序的其他参数,其元素取

10、值如表所示。,2018年10月8日,第18页,多元函数的极小值,MATLAB 提供了函数 fminsearch 用于计算多元函数的极小值。fminsearch 函数内部应用了 Nelder-Mead 单一搜索算法,通过调整 x 的各个元素的值来寻找f(x)的极小值。该算法虽然对于平滑函数搜索效率没有其他算法高,但它不需要梯度信息,从而扩展了其应用范围。因此,该算法特别适用于不太平滑、难以计算梯度信息或梯度信息价值不大的函数。 用于求解函数极小值的函数还有 fminbnd。fminbnd 函数的用法与fminsearch 函数的用法基本相同,不同之处在于:fminbnd 函数的输入参数为寻找最小

11、值的区间,并且只能用于求解一元函数的极值,fminsearch 函数的输入参数为初始值。,2018年10月8日,第19页,函数求解,可以使用函数 fzero() 来求一元函数的零点。寻找一元函数零点时,可以指定一个初始点,或者指定一个区间。当指定一个初始点时,此函数在初始点附近寻找一个使函数值变号的区间,如果没有找到这样的区间,则函数返回 NaN。该函数的调用格式为: x = fzero(fun,x0),x = fzero(fun,x1,x2):寻找 x0 附近或者区间 x1,x2 内 fun 的零点,返回该点的 x 坐标; x = fzero(fun,x0,options),x = fzer

12、o(fun, x1,x2,options):通过 options 设置参数; x,fval = fzero(.):返回零点的同时返回该点的函数值; x,fval,exitflag = fzero(.):返回零点、该点的函数值及程序退出的标志; x,fval,exitflag,output = fzero(.):返回零点、该点的函数值、程序退出的标志及选定的输出结果。,2018年10月8日,第20页,数值积分,MATLAB 中提供了用于积分的函数,包括: 一元函数的自适应数值积分 一元函数的矢量积分 二重积分和三重积分 这些函数如表所示。,2018年10月8日,第21页,一元函数的积分,MATL

13、AB 中一元函数的积分可以用两个函数来实现:quad 和 quadl。函数 quad 采用低阶的自适应递归 Simpson 方法,函数 quadl 采用高阶自适应 Lobatto 方法,该函数是 quad8 函数的替代。函数 quad 的调用格式如下: q = quad(fun,a,b),采用递归自适应方法计算函数 fun 在区间 上的积分,其精确度为 1e-6。 q = quad(fun,a,b,tol),指定允许误差,指定的误差 tol 需大于 1e-6。该命令运行更快,但是得到的结果精确度降低。 q = quad(fun,a,b,tol,trace),跟踪迭代过程,输出 fcnt a b

14、-a Q 的值,分别为计算函数值的次数、当前积分区间的左边界、步长和该区间内的积分值。 q,fcnt = quadl(fun,a,b,.),输出函数值的同时输出计算函数值的次数。,2018年10月8日,第22页,一元函数的矢量积分,矢量积分相当于多个一元函数积分。当被积函数中含有参数,需要对该参数的不同值计算该函数的积分时,可以使用一元函数的矢量积分。 矢量积分返回一个向量,每个元素的值为一个一元函数的积分值。quadv 函数与 quad 和 quadl 函数相似,可以设置积分参数和结果输出。,2018年10月8日,第23页,二重积分和三重积分,MATLAB 中二重积分和三重积分分别由函数 d

15、blquad() 和函数 triplequad() 来实现。首先介绍函数 dblquad(),该函数的基本格式如下: q = dblquad(fun,xmin,xmax,ymin,ymax),函数的参数分别为函数句柄、两个自变量的积分限,返回积分结果。 q = dblquad(fun,xmin,xmax,ymin,ymax,tol),指定积分结果的精度。 q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method),指定结果精度和积分方法,method 的取值可以是 quadl,也可以是用户自定义的积分函数句柄,该函数的调用格式必须与 quad 的调用格式相同

16、。 triplequad() 函数的调用格式和 dblquad() 基本相同,在调用 triplequad() 函数时,需要六个参数指定积分限。,2018年10月8日,第24页,含参数函数的使用,在很多情况下,需要进行运算的函数中包含参数。在 MATLAB 中使用含参函数的方式有两种: 嵌套函数 匿名函数。,2018年10月8日,第25页,用嵌套函数提供函数参数,使用含参函数的一个方法是编写一个 M 文件,该文件以函数参数作为输入,然后调用函数的函数来处理含参函数,最后把含参函数以嵌套函数的方式包含在 M 文件中。,2018年10月8日,第26页,用匿名函数提供函数参数,使用含参函数还可以通过

17、匿名函数来实现,函数的参数在使用之前必须先赋值。具体步骤为: 首先创建一个含参函数,保存为 M 文件。函数的输入为自变量 x 和函数参数; 在调用函数的函数前对参数赋值; 用含参函数创建匿名函数; 把匿名函数的句柄传递给函数的函数进行计算。,2018年10月8日,第27页,微分方程,MATLAB 能够求解的微分方程类型包括: 常微分方程初值问题 常微分方程边值问题 时滞微分方程初值问题 偏微分方程,2018年10月8日,第28页,常微分方程初值问题,MATLAB 可以求解的常微分方程包括下面三种类型: 显式常微分方程 线性隐式常微分方程, ,其中 为矩阵 全隐式常微分方程,2018年10月8日

18、,第29页,显式常微分方程,MATLAB 可以求解刚性方程和非刚性方程。求解微分方程的命令格式为:t,y = solver(odefun,tspan,y0,options) odefun:待求解方程的句柄 tspan:为积分区间 y0:为一个向量,包括问题的初始条件 Options:用于指定求解算法。对于刚性方程和非刚性方程,可以选择的算法不同。对于非刚性方程,可以选择的算法如下: ode45:基于显式 Runge-Kutta(4,5) 规则求解,2018年10月8日,第30页,对于非刚性方程,可以选择的算法如下: ode45:基于显式 Runge-Kutta(4,5) 规则求解 ode23:

19、基于显式 Runge-Kutta(2,3) 规则求解 ode113: 利用变阶 Adams-Bashforth-Moulton 算法求解,2018年10月8日,第31页,刚性方程的求解方法如下 : ode15s:基于数值积分公式的变阶求解算法 ode23s:采用二阶改进 Rosenbrock 公式的算法 ode23t:采用自由内插的梯形规则 ode23tb:采用 TR-BDF2 算法,该算法为隐式 Runge-Kutta 公式,包含两个部分,第一个部分为梯形规则,第二个部分为二阶后向差分。,2018年10月8日,第32页,完全隐式常微分方程,完全隐式常微分方程的形式为: 。函数 ode15i

20、用于求解完全隐式常微分方程。用法为:t,y = ode15i(odefun,tspan,y0,yp0,options) Odefun:为待求解方程 Tspan:用于指定积分区间 y0 和 yp0: 分别用于指定初值 和 ,这两个初值必须一致,即满足 。 Options:可选参数,用于指定积分方法。 该函数输出在离散节点处的近似值。,2018年10月8日,第33页,常微分方程边值问题,bvp4c 函数用于求解常微分方程边值问题,该函数点调用格式为: sol = bvp4c(odefun,bcfun,solinit) sol = bvp4c(odefun,bcfun,solinit,options) Odefun:待求解的函数句柄 bcfun:函数边值条件的函数句柄 solinit:一个结构体,为该方程解的初始估计值。 options:可选参数,用于指定积分算法,该参数为一个结构体,可以通过函数 bvpset 创建。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 往来文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报