Matlab软件应用与开发.ppt

上传人:max****ui 文档编号:8316266 上传时间:2020-03-28 格式:PPT 页数:81 大小:863.50KB
返回 下载 相关 举报
Matlab软件应用与开发.ppt_第1页
第1页 / 共81页
Matlab软件应用与开发.ppt_第2页
第2页 / 共81页
Matlab软件应用与开发.ppt_第3页
第3页 / 共81页
点击查看更多>>
资源描述
Matlab软件应用与开发 主讲教师 李云东联系方式 66642 短号 lyd 课程安排 Matlab简介Matlab基础知识数组Matlab语言程序设计Matlab科学绘图Matlab在数值分析 优化中的应用 1 1初始Matlab Matlab是MathWorks公司的产品 是一个为科学和工程计算而专门设计的高级交互式软件包 Matlab环境集成了图示与精确的数值计算 是一个可以完成各种计算和数据可视化的强有力的工具 Matlab可以进行矩阵运算 绘制函数和数据 创建用户界面 与Fortran C语言混合编程等 主要应用于工程计算 控制设计 信号处理与通讯 图像处理 信号检测 金融建模设计与分析等领域 1 2Matlab的历史背景 Matlab是Matrix 矩阵 和Laboratory 实验室 两个英语单词的前3个字母的组合 它一开始是美国新墨西哥大学计算机系主任CleverMoler博士在20世纪70年代后期为Linpack和Eispack这两个矩阵运算的软件包编写的接口程序 目的是方便所设立的线性代数课程的教学 当时为这个接口程序取了一个名字叫做Matlab 在以后的一段时间 Matlab在很多大学里作为教学辅助软件使用 1983年 工程师JohnLittle和CleverMoler博士 用C语言开发了Matlab的第二代专业版本 这一版本同时具有了数值计算和数据可视化的功能 1 3Matlab的特点 Matlab操作简单 功能强大 应用广泛 它具有编程效率高 用户使用方便 扩充能力强 语句简单 高效方便的矩阵和数组运算 方便的绘图功能 开放的源程序等特点 Matlab具有很多有用的工具箱 如通讯工具箱 控制系统工具箱 财政金融工具箱 图像处理工具箱 神经网络工具箱 优化工具箱 信号处理工具箱 统计工具箱 小波工具箱等 最新的版本是2009年3月6日发布的Matlab7 8 R2009a 1 4如何学习Matlab Matlab的网络资源WWW网站匿名FTP网站 2 Matlab的桌面和桌面工具 2 1命令窗口 命令窗口 是用户与Matlab交互的工具 是Matlab执行函数命令的窗口 默认情况下 命令窗口总是打开的 7 0版本中 通过选取 Desktop CommandWindow 命令窗口控制函数 home 移动光标到左上角clc 清除命令窗口 工作空间的变量清除用命令clear 命令历史窗口 在命令窗口每执行一条命令 都将在历史窗口记录下来 反过来 在命令历史窗口只须双击某条历史命令 该命令就会在命令窗口重新执行一次 2 2当前目录浏览器和搜索路径 1 当前目录浏览器Matlab将许多内部函数放在不同的目录下 在调用函数时 首先查看当前目录 然后查看搜索路径中的目录 任何需要执行的文件都必须放在当前目录或搜索路径中 文件才能顺利运行 可以在命令窗口输入cd命令改变当前目录 一种改变当前目录快速而又高效的方法是使用桌面上的目录工具条 2 搜索路径 文件在执行时必须位于当前目录或者是搜索路径中 使用path命令可以查看Matlab默认的搜索路径 例2 1 pathMATLABPATHD MATLAB701 toolbox matlab generalD MATLAB701 toolbox matlab ops 例2 2将自己的目录添加到搜索路径中 删除已有搜索路径 改变搜索顺序 pathtool 在SetPath对话框中设置 3 常用命令 clear 清除当前工作空间的变量例2 3 clear 清除当前工作空间的所有变量 clearvar1var2 清除变量var1 var2 cleara 清除以a开头的变量who 查看当前工作空间的所有变量 信息简短 whos 作用同who 给出变量的大小 数据类型等具体内容 课后练习 1 认识Matlab7 0的各种操作界面 2 学会使用查看帮助信息 使用help helpdesk doc等帮助命令 3 利用目录工具条 cd命令改变当前目录 4 利用pathtool对话框设置搜索路径 5 who whos查看当前工作空间的变量名及详细信息 6 通过查看帮助 学会使用save命令 保存变量到 mat文件中 3 数组 数组的创建数组中元素的引用和变形数组运算数组操作字符串和数组矩阵运算矩阵特征参数 3 1数组的创建 3 1 1构造数组可以通过键入数组中每个元素的值来建立并输入一个数组 当数组中的元素个数较少时 这种方法非常适用 创建一个数组 只须以左方括号开始 以逗号或空格为间隔输入每行元素值 各行元素间以分号为间隔 最后以右方括号结尾即可 例3 1 a 0 1 2 3 4567 8 9 a 0123456789 cos a ans Columns1through81 00000 5403 0 4161 0 9900 0 65360 28370 96020 7539Columns9through10 0 1455 0 9111 3 1 2创建数组的常用方法 1 冒号法 其基本格式为 X 初值 增量 终值返回值X是从初值开始 以增量为步长 直到不超过终值的所有元素所构成的向量 默认步长为1 可以省略不写 例3 2 a 1 1 5 8a 1 00002 50004 00005 50007 0000 a 3 pi 5a 3 0000 0 1416 3 2832 2 调用函数linspace或logspace 函数linspace a b n 返回以a为起点 b为终点的等间距的共n个元素的数组 函数logspace与linspace类似 它相当于在linspace命令的基础上再对每个元素做10的指数幂运算 例3 3 linspace 0 1 6 ans 00 20000 40000 60000 80001 0000 logspace 0 1 6 ans 1 00001 58492 51193 98116 309610 0000 3 其它方法创建数组 对于那些既不是线性等距又不是对数等距的数组 可以借助下标编址和表达式相结合的方法来避免重复输入数据 例3 4 x 1 2 10 y 0 1 5 z x y z 135790 1 2 3 4 5思考 如果输入z x y 输出结果会是怎样 3 2数组中元素的引用和变形 引用数组中的元素是利用元素的下标 x n 表示数组中的第n个元素 利用冒号可以访问多个元素 例3 5 x 1 2 20 定义数组 x 5 访问x的第5个元素ans 7 x 1 2 7 访问x的第1 3 5 7个元素ans 1 3 7 11此处 x 1 2 7 等价于x 1 3 5 7 列向量的创建 前面提到的都是行向量 列向量的操作和运算和行向量类似 要定义一个列向量 只须在键入的元素直接输入分号或回车换行即可 例3 6 x 3 4 5 由分号分隔x 345 y 345 由回车换行分隔 列向量和行向量之间可以通过转置符 互相转换 不过需要注意的是 对于复数向量 转置符的作用是复共轭转置 符号 是对于复数向量的转置运算 3 3数组运算 Matlab数组运算分为标量与数组运算和数组与数组之间的运算 与矩阵不同的是 这两种运算都是在元素与元素之间进行的 3 3 1标量与数组之间的运算标量与数组进行四则运算就是这个标量对数组中的每个元素进行同样的运算 例3 8 a 1 5 b a 3 c 2 a 5b 45678c 3 1135 3 3 2数组与数组之间的运算 当两个数组具有相同维数时 数组与数组之间可以进行加 减 乘 除运算 3 4数组操作 3 4 1Matlab对数据的物理存放形式Matlab中 数据的物理形式是按列存放 对于一个二维数组 在内存中的单元存放顺序是 第一列元素 第二列元素 最后一列元素 对于多维数组 则是把第二维以后的维数作为数据平面 plane 存放顺序是 第一个plane中的矩阵 第二个plane的矩阵 直到最后一个 3 4 2数组维内抽取 扩展 删除 3 4 3数组的几个常用函数 对数组可以使用size函数来测量其大小 length函数返回维的长度的最大值 ndims函数返回数组的维数 例3 14 var rand 3 4 5 生成3 4 5大小的随机数 size var ans 345 length var 作用同max size var ans 5 ndims var 作用同length size var ans 3 3 5字符串和数组 在Matlab中的字符串一般是ASCII值的数组数组 它作为字符串表达式进行显示 3 6Matlab矩阵运算 3 7矩阵常用的命令及特征参数计算 diag A 设A为m n矩阵 产生一具有min m n 个元素的列向量diag A k 提取矩阵第k条对角线的元素diag V 设V为具有m个元素的向量 产生一m m对角矩阵 主对角线元素即为向量V的元素diag V k 产生一个n n n m k 对角阵 其中第m条对角线的元素即为向量V的元素triu A tril A 求矩阵A的上三角阵 下三角阵rot90 A k 矩阵A旋转90o的k倍 当k为1时可省略fliplr A flipud A 矩阵A左右翻转 上下翻转inv A 方阵A的逆矩阵pinv A 求非方阵 或者非满秩的方阵A的伪逆矩阵rank A 矩阵A的秩trace A 矩阵的迹 等于矩阵的对角线元素之和 亦矩阵的特征值之和E eig A 矩阵A的全部特征值 构成向量E V D eig A 矩阵A的特征值构成对角阵D 并求A的特征向量构成V的列向量det A 矩阵A的行列式 课后练习 1 创建下列数组 1086420 03579 2 使用 X pascal 4 命令生成一个4 4的pascal矩阵 对X进行下列操作 查看X的第一列元素 提取X的第一行和第三行元素 存入变量Y 提取X的前两行 后两列元素 存入变量Z 把X扩展成5 4的矩阵 使第5行元素为服从平均分布的随机数 删除数组X的最后一列 3 创建字符数组 Robert white 并存入变量name 查看name在工作空间的存储方式 最后提取字符串 white 存入变量subname 4 将工作空间的变量X name subname存入data mat文件 课后练习续 5 创建向量u v和标量s u 3 1 4 v 20 1 s 7计算u v v u和 u s v 6 根据下面两个矩阵 回答相关问题 A B和A B的结果如何 它们是否相同 为什么 计算A B A B和A B的结果 并分别解释它们的意义 4 Matlab语言程序设计 4 1运算符Matlab的算术运算符可按优先级由低到高分为5级 每一级内优先级相同 运算时从左向右结合 各级所包含的运算符如下 1 转置符 幂符 复共轭转置 矩阵幂符 2 标量加 标量减 3 向量乘法 向量右除 向量左除 矩阵乘法 矩阵右除 矩阵左除 4 加法 减法 5 冒号运算符 4 2关系运算符 逻辑运算符 关系运算符大于 大于或等于 等于 不等于 逻辑运算符 逻辑与A Band A B 逻辑或A Bor A B 逻辑非 Anot A Xor逻辑异或 4 3逻辑函数 all测试是否所有元素都非0any测试是否存在非零元素exist检查文件或变量是否存在find搜索非零元素的索引和值ischar测试是否为字符串数组 是则返回1isempty测试是否是空数组 是则返回1isfinite数组的元素有限时 返回数组的相应位置为1ishold若 hold 命令处于 on 状态时 则返回1isinf数组的元素无穷大时 返回数组的相应位置为1isletter数组的元素为字母时 返回数组的相应位置为1isreal参数无虚部 返回1isspace元素为空格字符 返回1isstr参数为字符串 返回1 4 4数学函数 4 5Matlab语言程序设计 Matlab语言为解释性程序设计语言 程序中的语句边解释边执行 Matlab是用C语言编写的 具有C语言自由 灵活 简洁的风格 使用Matlab书写程序 形式非常自由 而且利用丰富的库函数 避免了复杂的子程序编写 4 5 1M文件前面提到的都是单一的语句和命令 若要Matlab完成复杂的任务 则必须建立扩展名为 m的程序文件 M文件包含两类 命令文件和函数文件 前者不要求输入参数 也不返回任何参数 而后者可以输入参数 也可以返回参数 命令文件只对工作空间进行操作 而函数文件的变量为局部变量 只有输入 输出的变量被保留在工作空间 4 5 2命令文件 若要一次执行大量的Matlab命令 可将这些命令编写在一个扩展名为 m的文件中 并在Matlab命令输入窗口键入此文件名即可 例4 1 1 建立M文件 命令窗口键入editfirstest 建立firstest m文件 2 代码编写 进入代码编辑器中 输入下列代码 第一个测试命令文件 计算一数组的正弦函数x 0 y 2 pi z sin x pi 4 y 4 5 2命令文件 续 3 保存文件 并执行 通过编辑器 Debug Run 或者在命令窗口输入firstest执行 在命令窗口可以看到执行结果 注 firstest m的第一行以 开头的行是注解 可以使程序易于理解与管理 一般地 第一注解行通常用来简短说明此M文件的功能 使用helpfirsttest命令可查看该注释 命令窗口输入whos查看工作空间的变量 可以发现执行时所建立的变量全部保留在工作空间中 一行代码过长时使用符号 续行符连接 4 5 3函数文件 函数文件的一般格式为 function 输出表 函数名 输入表 注释行函数体例4 2计算1 2 n的函数 functionoutput mysum n mysum函数计算直到n的和output 0 初始化fori 1 noutput output i end 4 5 3函数文件 续 函数文件的第一行必须以关键字function开始 表明该文件是函数文件 输入表以逗号相分割形参 输出表是函数的返回值 如果返回值只有一个 方括号可以省略 当返回值不止一个时 输出表中的各个变量要以逗号隔开 函数文件的文件名必须与函数名相同 函数体任意位置都可以包含注释语句 在函数体中的空行将被忽略 函数体是实现函数功能的部分 函数体包含函数调用 程序流程控制 输入 输出 赋值 计算等语句 对于定义好了的函数 在命令窗口或其他文件中均可调用 调用函数时 参数可以是常量 有确定值的变量或表达式 4 5 3函数文件 递归函数 例4 3functionoutput fact n fact函数通过递归函数求解n ifn 1 判断语句 递归结束条件output 1 return endoutput n fact n 1 在写一个递归函数时 一定要包含结束条件 否则函数将一直调用自身 直到内存被耗尽为止 本例中n 1即为结束条件 4 6变量和常量 变量 在Matlab中 变量分为局部变量和全局变量 变量名由一个字母开头 后面可以跟字母 数字 下划线等 在Matlab中 变量区分大小写 在M文件中 变量在使用前无需定义维数和每维的大小 但把一个变量赋给另一个变量时 要求赋值号右边的变量有值 在M文件中定义的变量是局部变量 其作用域仅在本函数 仅能被本函数调用 全局变量定义后 能被其他函数调用 在命令窗口也可以调用 因此 可以在命令窗口或任意一个函数中改变全局变量的值 全局变量用global定义 如定义全局变量a b globalab 4 6变量和常量 常量 Matlab为特定的常数预留了一些名称 这些常量也可以重新赋值 常量在工作空间不能直接看到 使用者可直接调用 4 7程序流程控制语句 4 7 1赋值语句结构1 直接赋值语句基本格式为 变量名 赋值表达式上述语句把赋值表达式的值赋给变量 如果表达式后没有分号 则在Matlab命令窗口显示运行结果 否则不显示 例4 5 x 1 y xy 1 4 7 12 函数调用赋值 函数调用赋值语句的基本格式为 返回变量列表 函数名 输入变量列表 返回变量列表和输入变量列表一般由多个变量组成 各变量之间用逗号隔开 例4 6 x rand 3 4 rn cn size x rn 3cn 4 4 7 2循环语句结构 Matlab里的循环结构可用for end语句和while end语句来实现 1 for end语句for语句使用很灵活 通常用于循环次数确定的情况 其调用格式为 for变量名 表达式循环体语句组end其中 表达式一般是以 s1 s2 s3 的形式给出 s1表示循环变量的初始值 s2表示步长 若步长为1 s2可省略 对于正的步长 当变量的值大于s3时结束循环 对于负的步长 当变量的值小于s3时结束循环 注意for循环不能用重新赋值循环变量的方法来终止循环 4 7 2循环语句结构 while end语句 while语句一般用于事先不能确定循环次数的情况 while语句的基本形式为 while条件表达式循环体语句组end例4 8接受用户键盘输入 直到输入字符串时程序结束 x input 输入一个字符串 接受用户键盘输入while isstr x 存入变量xx input 输入一个字符串 end 4 7 3条件语句结构 Matlab提供的条件语句有 1 if end语句 其基本格式为 if条件表达式条件语句组end例4 9 2 if else end语句 其基本格式为 if条件表达式条件块语句组1else条件块语句组2end例4 10 例4 9ifrand 0 5disp 产生的随机数大于0 5 end例4 10functionout piecefun x 定义分段函数ifx 1out x elseifx 4out x 2 elseout 2 x endend 4 7 3开关语句结构 其基本格式为 switch开关表达式 标量或字符串case表达式1语句组1case 表达式1 表达式2 表达式k 语句组2 otherwise语句组nend 4 8Matlab语言编程技巧 1 测试程序执行时间建立程序执行时间有两种方法 一种是使用tic和toc命令 tic用于启动秒表 toc用于停止秒表 另一种是使用能够获取CPU时间的cputime命令 例4 12建立一个1000 1000的魔方矩阵 使用tic和toc命令 tic 开始计时A magic 1000 运行程序toc 结束计时 并显示所耗时间Elapsedtimeis0 812000seconds t cputime 把cpu时间赋给变量tA magic 1000 cputime t 显示前后时间之差 即执行程序所耗时间ans 0 7031 4 8 2 加快Matlab程序执行的方法 1 避免使用循环Matlab的不足是当对矩阵的单个元素进行循环操作时运算速度很慢 因此应尽量避免使用循环 编程时 尽量对矩阵或向量编程 把循环向量化 这样不仅能缩短程序长度 而且能提高程序执行效率 在必须使用多重循环的情况下 若两个循环执行的次数不同 则应在循环的内层执行次数多的 外层执行循环次数少的 2 对大型矩阵预先定义维数在程序执行的过程中 有时要动态改变矩阵的维数 非常浪费时间 为此 应在定义大矩阵时 首先用Matlab的内在函数 如zeros 或ones 对矩阵定义好维数 然后再进行赋值处理 这样会提高程序的运行效率 3 优先使用内在函数 例4 13ticsum 0 fori 1 100000sum sum 1 i 2 endtocElapsedtimeis0 454000seconds 向量化编程 tici 1 100000 s sum 1 i 2 toc 5 Matlab科学绘图 主要内容图形窗口二维平面绘图空间三维绘图特殊三维绘图函数Matlab在数据可视化方面也有很好的表现 具有强大的图形绘制能力 Matlab可以绘制二维 三维乃至四维图形 而且能对图形进行线型 里面 色彩 渲染 光线 视角等控制 用户只须指定绘图方式 并提供充足的绘图数据 即可得出所需的图形 5 1图形窗口 在Matlab中 图像窗口和命令窗口是独立的窗口 当图形窗口处于关闭状态时 图形命令将新建一个窗口 如果已经打开了一个或多个图形窗口 一般默认最后一个打开的窗口作为当前图形命令的输出窗口 例5 1t 0 pi 50 2 pi x sin t plot t x 5 2二维平面绘图 plot是基本的二维绘图命令 Matlab的其他二维函数中的绝大多数是以plot为基础构造的 函数plot最直接的调用格式为 plot x y 曲线实际上是由一系列的的点构成 首先定义了横坐标x向量 然后定义纵坐标y向量 通过plot函数作出图形 若要画出多条曲线 只须将坐标对依次放入plot函数即可 例5 2在同一个窗口绘制y sinx y cosx在 0 2 pi 的图像 x linspace 0 2 pi 101 plot x sin x x cos x 坐标对依次放入plot函数中也可以在Matlab窗口输入下列命令 x linspace 0 2 pi 101 plot x sin x cos x 程序运行结果如图 plot函数绘图命令的选项 不同种类的选项间可以搭配使用 如选项 ro 表示绘制红色的圆划线 带选项的曲线绘制命令的基本格式为 plot x1 y1 选项1 x2 y2 选项2 例如 plot x1 y1 b x2 y2 x3 y3 g 例5 3x 0 pi 100 2 pi plot x sin x ko x cos x 二维图形的标注方法 1 坐标轴的调整Matlab可以根据所绘制曲线的范围自动选择适当的坐标系 使得曲线能够尽可能清晰地显示出来 所以 一般情况下不需要考虑坐标范围的选择 但有特殊的要求时 可以手动地改变坐标系的范围 手动调整只须借助axis函数 其基本格式为 axis xmin xmax ymin ymax 例5 4调整坐标轴显示的范围 x 0 pi 100 2 pi axis 0 6 3 1 1 1 1 plot x sin x ko x cos x 2 坐标标注 图形标题和注解 Matlab可以用函数xlabel和ylabel分别为x轴和y轴加上注解和说明 其中ylabel函数会自动旋转90o显示 title和legend函数分别为图形添加标题和注解 gridon和gridoff命令分别表示开启和关闭网格线的显示 图形上点的标注和说明用text命令实现 text函数的基本格式为 text x y 字符串 属性名 值 其中 x y 是标注的位置 字符串是要说明的内容 leftarrow和 pi分别表示左箭头和常量 例5 5x 0 pi 100 2 pi axis 0 6 3 1 1 1 1 plot x sin x k x cos x xlabel x ylabel y x轴 y轴注解title 一个周期内的正弦 余弦函数图像 图形标题legend y sin x y cosx 图形注解 在右上角显示gridon 显示网格线text pi 5 sin pi 5 pi 5 sin pi 5 fontsize 16 text pi 5 cos pi 5 pi 5 cos pi 5 fontname 楷体 图形的标注和说明 可通过图形窗口的Insert菜单下的各子菜单 如Xlabel Ylabel Zlabel Title等 交互设置 图形窗口的分割和多个对象的显示 在前面的例子 使用plot命令可以在同一窗口中显示多条曲线 除此之外 还有其他一些方法实现多个图形的显示 1 使用hold函数holdon 增加图形 后续图形增加到现有图形中holdoff 替换图形 默认值 替换现有图形hold 在增加图形和替换图形之间切换 2 分割图形窗口subplot m n p 把图形划分成m n个矩阵块 当前选择第K 个矩阵块 子块排序以行优先例5 6 例5 6在四个子窗口 做出 0 2 pi 区间的正弦 余弦 余切函数曲线 其中第3 4子窗口作余切函数曲线 x 0 pi 100 2 pi subplot 2 2 1 plot x sin x title sinx subplot 2 2 2 plot x cos x k title cosx subplot 2 2 34 axis plot x tan x g title tanx 二维绘图函数 例5 7绘制函数sin 1 x 在x 0附近的变化情况 fplot sin 1 x 0 020 2 例5 8作心形线 t 0 pi 360 2 pi polar t 1 cos t r 或ezpolar 1 cos t 0 2 pi fplot函数会对函数剧烈变化处进 行较密集的取样 从而进行较精 确的绘图 饼图pie x 把x中的数据按照所占总量sum x 的比例画成饼图pie x explode explode为与x同大小的向量 若分量非0 则对应切片从饼图的中心分离 例5 9score 5151072 某班成绩分布explode 01110 各分数段切片是否分离显示pie score explode 90 100 80 89 70 79 60 69 60 与x同大小的细胞字符串 依次作为各切片的标签 5 3绘制三维曲线 plot3命令绘制三维曲线 函数调用格式为 plot3 x y z 选项 其中 x y z分别表示曲线的3个坐标向量 这里要求它们的维数相同 选项与函数plot一致 例5 10画出螺旋线 t 5 5 x 2 cos 3 t y 2 sin 3 t z 4 t plot3 x y z 5 4绘制曲面网线图 用mesh函数生成曲面网线图 函数的调用格式为 mesh X Y Z C 此函数由3个矩阵X Y Z绘制空间网线图 即以矩阵元素为空间坐标在空间描点作图 点与点之间用线段连接 C为颜色矩阵 表示在不同高度下的颜色范围 如果省略C选项 则自动假定C Z 亦即颜色的设定是正比于高度的 这样得到的三维图形层次比较清楚 在使用mesh函数时 一般都要调用meshgrid函数生成网线节点矩阵 其基本调用格式为 X Y meshgrid x y 其中 x和y都是向量 X和Y都是矩阵 X的每行都是由向量x构成 Y的每列则由向量y构成 xy平面就按照X和Y矩阵分割成小矩形单元 例用meshgrid产生网格 x y meshgrid 0 3 0 3 x 0123012301230123y 0000111122223333例5 11作出椭圆抛物面 x y meshgrid 2 0 1 2 3 0 1 3 生成xy平面的网格z x 2 4 y 2 9 计算网格坐标的高度mesh x y z 生成曲面网格图colorbar 高度的彩色条 三维表面图 当要绘制表面图时 可以使用surf函数 其调用格式为 surf X Y Z C 各变量的含义与么事函数类似 例5 12绘制马鞍面 x y meshgrid 2 0 1 2 3 0 1 3 生成xy平面的网格z x 2 4 y 2 9 计算网格坐标的高度surf x y z 生成曲面网格图shadinginterp 网格块内采用颜色插值处理 使表面显得更光滑 6Matlab在数值分析 优化中的应用 在科学研究和工程应用中 往往要进行大量的数学计算 Matlab的数值分析功能十分强大 本节主要讲述Matlab在函数 插值和曲线拟合分析 微积分和线性方程系统方面的应用 6 1Matlab中的多项式1 定义多项式 p 10 120127 系数按降序排列 缺项补0r roots p r 3 33303 26731 2985 0 6164 0 3392i 0 6164 0 3392ip poly r 根据多项式的根 构造多项式 2 多项式的加 减 乘 除运算 多项式的加减乘除与向量的加减乘除相似 Matlab没提供专门的运算 对于两个不同阶的多项式相加减 只需用0填补低阶多项式相应的高阶 变成同阶的再做运算 例6 1多项式与的和 差 积 商 p1 1000 1 p2 1025 定义两个多项式p2 0p2 扩展低次多项式 成为与p同阶多项式s p1 p2 多项式加法s 11024p2 1 多项式乘法对同阶无要求m conv p1 p2 多项式乘法m 01025 10 2 5 q r deconv p1 p2 多项式p1除以p2 q表示商 r表示余数q 10 r 00 2 5 1 3 多项式的导数 Matlab提供函数polyder计算多项式及其积 商的导数此函数有如下几种表达形式 k polyder p 多项式p的导数k polyder a b 多项式a与b的积的导数 q d polyder a b 返回多项式a与b的商的导数 q 表示导数的分子部分 d表示导 数的分母部分4 多项式的求值例6 2求多项式在点x 1 3 5处的值 p 131 定义多项式polyval p 135 ans 51941 6 2求函数的零点 Matlab提供函数fzero求函数的零点 函数的基本调用格式为 fzero fun x 其中 fun 是要求零点的函数 一般函数fun需建立M文件 x给出初值 x为标量或二维向量 如果x是二维向量 函数在 x 1 x 2 寻找函数值为零的自变量的值 此时要求在x 1 和x 2 处的函数值异号 否则系统报错 例6 3通过在x 3附近寻找正弦函数的零点来求pi的近似值 x fzero sin 3 x 3 1416例6 4求方程在区间 0 1 的一个解 建立M文件 functionout1 fun1 x out1 exp x x 2 3 x 2 求零点 x fzero fun1 01 结果 x 0 2575 可用fplot函数观察得到近似的零点值或相应的区间 然后再使用fzero函数计算零点 6 3曲线拟合 所谓曲线拟合 就是根据一组数据 确定一个函数关系 即曲线 使得这些点总体上来说与曲线最为接近 在Matlab中 函数polyfit求解最小二乘曲线拟合问题 其调用格式为 p polyfit x y m 其中 输入参数x y是要拟合的数据 m为拟合多项式的次数 输出参数为拟合多项式的系数 多项式在x处的值可由polyval p x 得到 例6 5有一滑轮组 要举起重物w需要F力 实验所得的数据如下 问题分析 1 plot命令作图 确定拟合多项式的次数m 2 polyfit拟合得拟合多项式的系数 3 在原图上 画出拟合曲线 并分析结果求解 w 20 20 100 f 4 357 5510 413 816 8 plot w f r p polyfit w f 1 得拟合一次多项式 holdon 在原图上叠加 plot w polyval p w 作出试验数据在拟合多项式处取值 legend 试验数据 拟合曲线 注解 holdoff 6 3Matlab求解线性规划问题 线性规划是一种优化方法 Matlab优化工具箱中有现成函数linprog对如下式描述的LP问题求解 minf x 目标函数s tA x b 约束条件Aeq x beq 等式约束条件lb x ub 自变量约束条件linprog函数的调用格式如下 x linprog f A b x linprog f A b Aeq beq x linprog f A b Aeq beq lb ub x linprog f A b Aeq beq lb ub x0 x linprog f A b Aeq beq lb ub x0 options x fval linprog x val exitflag linprog x fval exitflag output linprog x fval exitflag output lambda linprog 其中 x linprog f A b 返回值x为最优解向量 x linprog f A b Aeq beq 作有等式约束的问题 若没有不等式约束 则令A b x linprog f A b Aeq beq lb ub x0 options 中lb ub为变量x的下界和上界 x0为初值点 options为指定优化参数进行最小化 x fval linprog 左端fval返回解x处的目标函数值 任务分配问题 某车间有甲 乙两台机床 可用于加工三种工件 假定这两台车床的可用台时数分别为800和900 三种工件的数量分别为400 600和500 且已知用这两种车床加工单位数量不同工件所需的台时数和加工费用如下表 问怎样分配车床的加工任务 才能既满足加工工件的要求 又使加工费用最低 设在甲车床上加工工件1 2 3的数量分别为x1 x2 x3 在乙车床上加工工件1 2 3的数量分别为x4 x5 x6 可建立以下线性规划模型 改写为
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!