




已阅读5页,还剩285页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB实用教程电子教案1 0 下载更新 本书的主要内容和结构 第1章MATLAB简介 MATLAB的主要特点MATLAB的桌面环境MATLAB的帮助系统 MATLAB的主要特点 简单易学代码短小高效计算功能强大绘图功能强大可扩展性能 MATLAB的桌面环境 启动按钮命令窗口命令历史窗口工作空间窗口当前目录浏览器 主界面 当前目录浏览工具 命令窗口 启动按钮 命令历史窗口 工作空间窗口 MATLAB的帮助系统 帮助浏览工具help函数和doc函数 第2章数据类型 常数和变量数组和矩阵字符串多维数组结构单元数组函数句柄 常数 下表列出了MATLAB提供的一些内部函数 变量 变量名MATLAB变量名的第1个字符必须是字母 后面可以跟字母 数字和下划线的任何组合 注意 MATLAB中变量名有大小写区分 所以A和a是不同的变量 创建变量在MATLAB中创建变量很简单 不必声明变量的数据类型 例如在命令窗口键入下面的命令行就可以创建一个A变量 A 9A 9 变量的数据类型 数组 逻辑型 字符型 数值型 单元数组 结构数组 函数句柄 Java类 定制类 int8 uint8int16 uint16int32 uint32 Single Double 数组和矩阵 MATLAB中 所有数据都用数组或矩阵形式进行保存 数组矩阵 数组 构造数组的方法 直接构造法增量法linspace函数法 直接构造数组 在MATLAB中构造数组 只需要用空格或逗号间隔数组元素 然后用方括号括起来就行了 如x 023678 或x 0 2 3 6 7 8 就构造了一个有6个元素的数组x 用增量法构造数组 利用MATLAB提供的冒号运算符 first step last 可以生成数组 数组中的元素按顺序从first一直到last 增量为step 2 3 14 如果不指定增量step 则按升序生成数组 后面的数比它前面第一个数大1 2 13 如果要求生成降序排列的数组 指定一个负的增量 增量可以是整数 也可以是小数 用linspace函数构造数组 用linspace函数构造数组 需要指定首尾值和元素总个数 基本形式是 x linspace first last num 其中 first last和num分别为x数组的首尾元素和元素个数 如x linspace 0 10 5 x 02 50005 00007 500010 0000 矩阵 构造矩阵的方法 简单的创建方法构造特殊矩阵聚合矩阵组合不同类型的数据 用简单方法构造矩阵 MATLAB中创建矩阵最简单的方法是使用符号 在方括号内输入多个元素可以创建矩阵的一个行 用逗号或空格把每个元素间隔开 如果想开始一个新行 用分号终止当前行 A row1 row2 rown 下面创建一个3行5列的数值矩阵 A 126293 822 162874391 417 72956 A 126293 822162874391 417 72956 构造特殊矩阵 MATLAB提供了多个创建不同矩阵的函数 如下表所示 聚合矩阵 矩阵聚合是通过连接一个或多个矩阵来形成新的矩阵 符号 不仅是矩阵构造符 它还是MATLAB聚合运算符 表达式C AB 在水平方向上聚合矩阵A和B 表达式C A B 在垂向上聚合它们 本例通过在垂向上聚合矩阵A和B来构造新矩阵C A ones 2 5 6 2 5的矩阵 元素为6B rand 3 5 3 5的矩阵 元素为随机数C A B 垂向聚合A和B注意 在每一条程序后面 有分号 则该语句求出的内容不显示在屏幕上 若没有分号 则所求内容会显示出来 组合不同类型的数据 构造矩阵时 如果矩阵的数据类型不同 则MATLAB会自动对某些元素进行类型转换 然后生成的矩阵具有相同的类型 用一个高精度的矩阵和一个低精度的矩阵构造新矩阵时 新矩阵是低精度型的 例如 聚合double型和single型的矩阵时 总是生成single型的矩阵 MATLAB会先将double型元素转换为single型 聚合矩阵的特殊函数 下表列出了聚合矩阵的一些特殊函数 获取矩阵的元素 使用编号索引使用线性索引使用冒号使用end关键字 使用编号索引获取矩阵的元素 利用编号和索引 可以获取MATLAB矩阵的元素 要引用矩阵中的特殊元素 用下面的语法指定它的行号和列号 其中A是矩阵变量 按先行后列的顺序指定 A row column 使用线性索引获取矩阵的元素 MATLAB保存矩阵中的数据时是作为一个元素列保存 这个元素列又是由矩阵中的所有列组成的 后一列元素按先后顺序添加到前一列元素的最后 所以 矩阵AA 269 428 301 A 269428351在内存中是按下面的序列保存的 2 4 3 6 2 5 9 8 1矩阵A第3行第2列的元素可以看作实际保存序列中的第6个元素 要获取这个元素 可以使用标准语法A 3 2 或使用A 6 使用冒号获取矩阵的元素 利用冒号本身可以引用矩阵某行或列的所有元素 使用下面的语法 可以计算4 4的魔方矩阵A中所有元素的和 sum A 2 ans 34将冒号进行索引 可以引用整个矩阵中的所有元素 本例显示矩阵A中的所有元素 按列序返回它们 A 使用end关键字获取矩阵的元素 利用end关键字可以指定矩阵某维的最后一个元素 它适用于不知道矩阵有多少行或多少列的情况 例如 可以用下面的语句进行值的替换 B 1 3 end 10 字符串 字符串的创建类型转换字符串的比较字符串的聚合字符串的搜索和替换 创建字符串 通过把字符放到单引号中来指定字符数据 如 下面创建一个1 5的字符串country country China 创建一个二维字符串时 确定每行具有相同的长度 例如 下面两个字符串都有5个字符 用它们组合起来的二维字符串是合法的 name LiYi HuXu name LiYiHuXu根据不同长度的字符串创建字符串时 将短的那些字符串后面用空格补齐 使所有字符串的长度相同 类型转换 用char函数把单元数组转换为标准字符串数组 str2double函数把一个字符串单元数组转换为字符串表示的双精度值 int2str函数将整型数据转换为字符串型数据 num2str函数对输出字符串的格式提供了更多控制 该函数的第2个变量是可选的 它设置输出字符串的位数 或指定一个实际的格式 mat2str函数将数组转换为字符串 mat2str函数将返回一个包含文本的字符串 该文本在命令行中输入 用于创建矩阵 字符串的比较 用strcmp函数比较字符串 字符串不相等时 返回false 可以使用MATLAB的关系运算符 如 可以用 确定两个字符串中的相同字符 所有关系运算符 比较对应字符的值 字符串的聚合 字符串通常可以由更小的元素聚合而成 两个通用的聚合方法是使用MATLAB聚合运算符 或sprintf函数 用strcat函数也可以把两个或更多字符串组合在一起 字符串的搜索和替换 strrep函数进行标准的搜索和替代操作 findstr函数把子字符串的起始位置返回到一个更长的字符串中 strtok函数在输入字符串中第一次发现间隔符时返回间隔符前面的字符 可用该函数把句子分离成单词 strmatch函数在字符串或字符串单元数组的整个行中进行查找 看有没有以给定字符序列打头的字符串 它返回以该字符串打头的行的行号 多维数组 用索引生成多维数组用特殊函数生成多维数组用cat函数生成多维数组 用索引生成多维数组 创建多维数组的方法之一是先创建一个二维数组 然后扩展它 如 A 578 019 436 A是一个3 3的数值 即它的行维和列维都是3 给A添加第三维 A 2 104 356 987 用特殊函数生成多维数组 可以使用与生成二维数组相同的方式 用randn ones和zeros函数等生成多维数组 提供的每个变量表示生成的数组中对应维的大小 如 要创建一个正态分布随机数的4 3 2的数组 可以输入 B randn 4 3 2 要生成一个元素均为同一常数的数组 使用repmat函数 如 B repmat 5 342 用cat函数生成多维数组 cat函数是创建多维数组的一种简单方式 它按指定的维数将多个数组聚合到一起 其调用格式为 B cat dim A1 A2 其中A1 A2等是进行聚合的数组 dim是维数 结构 创建结构数组获取结构数组中的数据数组的大小操作字段结构的嵌套 创建结构数组 使用赋值语句可以通过将数据赋给单独的字段来生成一个简单的1 1结构数组 使用struct函数可以用struct函数预分配一个结构数组 其基本形式为 str array struct field1 val1 field2 val2 其中 变量为字段名和它们的对应值 单元数组 创建单元数组获取单元数组的数据删除单元和重塑单元数组 创建单元数组 用赋值语句创建单元数组可以使用单元索引和内容索引两种方式创建单元数组 用cell函数创建单元数组使用cell函数 可以预分配指定大小的空单元数组 如 下面的语句创建一个空的单元数组 B cell 2 3 然后可以用赋值语句填充B单元 函数句柄 函数句柄是一种MATLAB数据类型 它包含用于引用函数的信息 创建函数句柄时 MATLAB在句柄中保存所有与要运行的函数有关的信息 第3章将对函数句柄进行比较详细的介绍 第3章M文件设计 变量表达式流程控制函数M文件程序调试与错误处理编程技巧 变量 变量的作用范围局部变量 局部变量的作用范围仅限于本函数 全局变量 全局变量用global关键字进行声明 其作用范围为整个M文件 变量的存活期变量的存活期代表变量保持其值的能力 用persistent关键字声明固定变量 可以保持变量的值 表达式 数值表示运算符处理字符串表达式 数值表示 MATLAB使用传统的数值表示方法 对于比较长的数 使用科学计数法 用字母e指定以10为底的幂次 虚数用i或j作为后缀 下面是一些合法的数值表示 3 990 00019 63972381 60210e 206 02252e231i 3 14159j3e5i 运算符 算术运算符比较运算符逻辑运算符运算符的优先级 运算符的优先级 按照优先级别 各种运算符有下面的先后次序 小括号 转置 幂 复数共轭转置 矩阵的幂 一元的加 一元的减 逻辑否 乘 右除 左除 矩阵乘 矩阵右除 矩阵左除 加 减 冒号操作符 小于 大于或等于 等于 不等于 逐元素AND 逐元素OR 处理字符串表达式 处理字符串表达式需要使用eval函数和feval函数 eval函数可以处理包含MATLAB表达式 语句或函数调用的字符串 feval函数与eval函数的区别在于 该函数执行函数而不是MATLAB表达式 注意 尽量少用eval函数 因为使用eval函数的代码通常不好读 不易调试 流程控制 条件控制循环控制错误控制程序终止控制 条件控制 if elseif语句switch case语句比较上面两种语句 switch case语句的可读性更强 并且可以比较不同长度的字符串 循环控制 for循环while循环continue命令break命令 错误控制 try catch语句进行错误捕获 它把有可能引起异常的语句放在try控制块中 这样当try控制块中statement语句引起异常时 catch控制块就可以捕获它 并针对不同的错误类型 进行不同的处理 程序终止控制 return命令能使当前正在运行的函数正常退出 并返回调用它的函数 继续运行 下表比较break continue和return命令 函数 主函数子函数匿名函数嵌套函数私有函数重载函数 主函数 任何M文件中的第1个函数称为主函数 注意 一般使主函数的名称与M文件的相同 如果函数名与文件名不同 必须用文件名调用函数 子函数 M文件中可以包含一个以上的函数 文件中除主函数以外的其他函数称为子函数 并且它们只对主函数或同一文件中的其他子函数可见 匿名函数 使用匿名函数 可以在不必创建M文件的情况下快速创建简单函数 可以在MATLAB命令行或任何M文件函数或脚本中创建匿名函数 创建匿名函数的语法格式为 fhandle arglist expr其中 expr表示函数体 即函数要完成主要工作的代码 arglist为要传递给函数的逗号间隔的输入参数列表 嵌套函数 可以在一个函数中嵌套定义一个或多个函数 嵌套函数具有类似下面的形式 functionx A p1 p2 functiony B p3 end end 私有函数 私有函数是private子目录中的函数 它们只对父目录中的函数可见 重载函数 有时候同一个函数可以用于多种情况 对应地有不同的输入参数 此时要用到重载函数 比如绘制二维线形图的plot函数就有多种重载形式 下面是其中两种 plot Y plot X1 Y1 这两个函数具有相同的函数名 不同的参数 调用plot函数时MATLAB会根据函数的参数自动选择使用 M文件 脚本式M文件和函数式M文件M文件的基本结构函数的参数函数句柄 脚本式M文件和函数式M文件 脚本式M文件和函数式M文件的区别如下表所示 M文件的基本结构 一个完整的函数式M文件应该包括函数定义行 H1行 帮助文本 函数体 注释和函数代码等方面的内容 其中函数定义行和函数代码是必需的 如function x y myfun a b c 函数定义行 H1行 用一行文字来综述函数的功能 帮助文本 用一行或多行文本解释如何使用函数 在命令行中键入 help 时可以使用它 函数体一般从第一个空白行后开始 注释 描述函数的行为 输入输出的类型等 在命令行中键入 help 时不会显示这些文本x prod a b 开始编写函数代码 函数的参数 检查输入参数的个数传递参数解包varargin中的内容打包varargout参数列表中的varargin和varargout返回输出参数 检查输入参数的个数 利用nargin和nargout函数可以确定函数输入参数和输出参数的个数 然后可以根据参数个数用条件语句完成不同的任务 例如functionc testarg1 a b if nargin 1 c a 2 elseif nargin 2 c a b end给定一个输入参数时 函数计算输入值的平方 给定两个输入参数时 求它们的和 传递参数 使用varargin和varargout函数可以传递任意个数的输入参数或者返回任意个数的输出参数给函数 MATLAB把所有指定的输入参数指定到一个单元数组中 每个单元可以包含任意大小或类型的数据 对于输出参数 函数代码必须把它们打包到一个单元数组中 这样 MATLAB就可以把参数返回给调用函数 解包varargin中的内容 因为varargin将所有输入参数包含在一个单元数组中 所以有必要使用单元数组索引来提取数据 例如y n varargin n 2 其中 索引表达式 n 获取varargin的第n个单元 表达式 2 表示单元内容的第二个元素 打包varargout 当允许有任意多个输出参数时 必须将所有输出打包到varargout单元数组中 使用nargout确定输出参数的个数 参数列表中的varargin和varargout varargin或varargout必须出现在参数列表的最后 即函数调用必须首先指定必要的参数 返回输出参数 放在函数定义行中等号左侧的任何参数都是调用函数的返回值 如果传递任何函数可以修改的输入参数 需要把相同的参数作为输出参数 这样 调用函数可以获得更新后的值 函数句柄 在MATLAB中 在函数名前用 符号创建一个函数句柄 下面的例子为humps函数创建一个函数句柄并将它指定给变量fhandle fhandle humps 可以像传递其它变量一样将句柄传递给另一个函数 用MATLAB的feval命令运行函数句柄的目标函数 用函数句柄使用本命令的语法为 feval fhandle arg1 arg2 argn 程序调试和错误处理 用try catch语句检查错误错误和警告信息用Debug菜单进行调试 编程技巧 矢量化预分配内存空间程序运行情况监测 Profiler 第4章图形绘制 创建二维图形创建三维图形 创建二维图形 线形图 条形图和面积图饼图误差条图散点图直方图对数坐标图和半对数坐标图多轴图 极坐标图帕累托图火柴杆图阶梯图玫瑰花图函数的图形动画 函数的图形 可以用fplot函数在指定范围内绘函数的图形 函数必须是y f x 形式的 其中 x是矢量 为自变量 y为矢量 为因变量 创建一个M文件myfun 它返回一个两列矩阵 functionY myfun x Y 1 200 sin x x Y 2 x 2 创建一个指向myfun的函数句柄 fh myfun 用下面的语句绘图 fplot fh 2020 生成右图 创建动画 在MATLAB中 可以用两种方法创建动画序列 保存很多不同的图片 然后以电影的形式进行显示 在屏幕上连续擦除和重画对象 每次重画都作递增式的改变 绘制三维图形 用给定数据绘三维线形图用给定数据绘三维表面图表面图绘制的数据格式问题函数的曲线和曲面二次曲面样条曲线和曲面多边形对象模型消隐控制三维图形的场景效果设置 用给定数据绘三维线形图 利用plot3函数可以绘制三维线形图 用plot3函数绘图时 需要指定线条穿过的点的坐标 假设X Y和Z是3个矢量 分别表示一系列点的x坐标 y坐标和z坐标 则下面的命令创建一条经过这些点的三维曲线 plot3 X Y Z 用给定数据绘三维表面图 当绘图数据已知时 可以用mesh surf和surfl等函数直接绘制网格图 刻面图和曲面图 网格图和刻面图又分三角形和四边形两种 表面图绘制的数据格式问题 MATLAB绘制表面图时数据格式是矩阵格式的 而我们通常得到的采样数据或数值计算数据是点坐标格式的 所以 用MATLAB函数绘表面图以前 需要先转换数据格式 xyzx 1 1 y 1 1 z 1 1 x 1 2 y 1 2 z 1 2 x 1 n y 1 n z 1 n x 2 1 y 2 1 z 2 1 x m n y m n z m n X矩阵x 1 1 x 1 2 x 1 n x 2 1 x 2 2 x 2 n x m 1 x m 2 x m n 同上构造Y矩阵和Z矩阵 函数的曲线和曲面 使用ezplot函数和ezplot3函数 可以很方便地绘制二维和三维参数曲线 使用ezpolar函数 可以在极坐标中绘制参数曲线 用ezmesh函数绘制函数表示的网格 函数形式可以是一般形式 也可以是参数形式 用ezsurf函数绘制函数表示的曲面 二次曲面 用cylinder函数生成柱面 用sphere函数生成球面 样条曲线和曲面 利用MATLAB的样条工具箱 可以绘制多种样条曲线和曲面 利用MATLAB样条工具箱 可以绘制样条曲面 包括三次样条曲面 B样条曲面和有理样条曲面等 多边形对象模型 由一个或多个相连或不相连的多边形组成的对象称为面片图形对象 也常称为多边形对象模型 创建多边形对象 需要定义面片 只需要指定顶点坐标和某种形式的颜色数据就可以定义面片了 面片支持多种着色方式 这一点对于用几何形体进行数据可视化很有用 定义面片主要有两种方式 指定每个多边形的顶点坐标 MATLAB按顺序连接这些顶点 形成面片 指定每个顶点的坐标值和一个指定如何把这些点连成面的矩阵 消隐处理 默认时 MATLAB绘制三维图形时会进行消隐处理 利用下面的命令 可以取消消隐 hiddenoff 三维图形的场景效果设置 绘制三维图以后 可以对它进行着色 添加光照 设置材质 纹理 透明性并进行交互操作 第5章图形编程 句柄图形对象基本图形元素的绘制图形的着色图形变换定制图形交互绘图 句柄图形对象 句柄图形对象简介Figure对象Root对象对象的属性 句柄图形对象的组织结构 句柄图形对象的层次体系如下图所示 Root Figure UI对象 Axes 隐藏的AnnotationAxes对象 核心对象 绘图对象 组对象 Annotation对象 Figure对象 Figure对象是MATLAB显示图形的窗口 图形窗口包括菜单 工具条 用户界面对象 上下文菜单 坐标系和坐标系的子对象等 Root对象 Root对象是Figure对象的父对象 不能实例化Root对象 因为它的作用只是保存信息 它保存MATLAB状态 计算机系统和MATLAB默认设置等信息 对象的属性 图形对象的属性控制它外观和行为的很多方面 属性包括了诸如对象类型 父对象 子对象 可见性之类的一般信息 也包括该对象类型的独有信息 例如 在任何给定的Figure对象上 可以知道最后按下的是哪个键 鼠标光标的位置或者最近选择的菜单的句柄等 基本图形元素的绘制 绘制直线段 多义线和曲线 line函数绘制矩形 圆角矩形 椭圆 圆及对应的区域图形 rectangle函数绘制多边形 patch函数绘制文本 text函数 绘制直线段和多义线 MATLAB中的直线段和多义线用Line对象表示 用line函数创建直线段对象 按照直线逼近的思路 还可以用该函数创建曲线 下面利用line函数生成多义线 X2 192028 Y2 1251032 line X2 Y2 LineWidth 2 Marker 绘制曲线 按照直线逼近的思路 可以用line函数创建曲线 下面用多条直线段逼近余弦曲线 左图用10条直线段逼近 右图用20条直线段逼近 绘制矩形 圆角矩形 椭圆 圆及对应的区域图形 MATLAB中 矩形 圆角矩形 椭圆 圆及对应的区域图形都用Rectangle对象表示 用rectangle函数可以创建Rectangle对象 在同一个坐标系中创建矩形 圆角矩形 椭圆和圆各一个 使用了不同的线型和线宽 rectangle Position 1 1 20 10 LineWidth 3 rectangle Position 5 3 10 15 Curvature 11 rectangle Position 5 3 10 10 Curvature 11 LineWidth 3 rectangle Position 4 5 12 8 Curvature 4 LineStyle axisequal 绘制多边形 任意多边形及多边形区域是用Patch对象表示的 该对象由patch函数创建 使用patch函数生成面片 有两种方法 一种是顶点 颜色法 通过指定每个小面的顶点坐标和颜色来创建 另一种是顶点 小面法 通过指定所有顶点的坐标和各小面的顶点和颜色来创建 绘制文本 文本用Text对象表示 该对象由text函数创建 text函数是创建文本图形对象的低级函数 使用它将文本字符串放在指定的位置上 下面创建多种形式的文本 text 10 30 添加文本1 text 10 25 添加文本2 FontSize 20 FontAngle Italic text 10 20 添加文本3 FontName 黑体 FontWeight bold text 10 10 添加文本4 Rotation 45 axis 520835 图形的着色 多边形的单色填充多边形的插值着色对同一个多边形 左图为单色填充效果 右图为插值着色效果 图形变换 在MATLAB中实现图形变换 需要用到hgtransform对象 使用该对象的Matrix属性可以给hgtransform对象的所有子对象应用一个变换 典型的变换包括旋转 平移和缩放 用hgtransform函数创建hgtransform图形对象 使用makehgtform函数创建4 4的变换矩阵 定制图形 前面介绍了在MATLAB中创建基本图形元素的方法 有了基本图形元素 就可以灵活运用它们 形成更复杂的图形 第6章高等数学计算 函数和极限导数极限和导数的应用不定积分和定积分空间解析几何与向量代数多元函数的极限和求导级数微分方程 函数 复合函数运算符号表达式的复合函数运算主要是通过函数compose来实现的 反函数符号表达式的反函数运算主要是通过函数finverse来实现的 函数的图形 极限 符号极限由函数limit来实现 例 求数列的极限 解 在命令窗口键入下面的命令行 symsn limit n 1 n 1 n n inf 得ans 1 导数 求函数的导数求隐函数的导数求参数方程确定的函数的导数 求函数的导数 用diff函数进行函数求导 例 求函数的导数 解 在命令窗口键入下面的命令行 symsx f sym x 1 3 x 1 B diff f 得B 3 x 1 2 x 1 x 1 3 x 1 2 求隐函数的导数 对于隐函数F x y 0 导数 求参数方程确定的函数的导数 对于参数方程导数 极限和导数的应用 渐近线极值拐点 不定积分和定积分 不定积分求定积分定积分的近似计算定积分的应用多重积分 不定积分 MATLAB中 用符号工具箱中的int函数求函数的不定积分和定积分 用int函数的前两种调用格式求不定积分 例 求不定积分 解 在命令窗口键入symsxnint x n 或symsxnint x n x 得ans x n 1 n 1 求定积分 用int函数的后两种调用格式求定积分 例 求定积分 解 在命令窗口键入symsxint x 7 0 1 得ans 1 8 定积分的近似计算 用MATLAB提供的trapz函数可以用梯形法近似求取定积分的值 例 积分的精确值为2 下面用trapz函数在均匀间隔的网格上求该积分的数值近似 X 0 pi 100 pi Y sin X Z trapz X Y Z 1 9998 定积分的应用 使用定积分 可以解决几何和物理中的很多实际问题 比如求平面图形的面积 求曲面围成的体积 求曲线的弧长 求功等 多重积分 可以用int函数求函数的多重积分 例 求二重积分 解 在命令窗口键入symsxy int int x y y 2 y 1 2 得ans 9 8 空间解析几何与向量代数 空间向量运算曲面及其方程 空间向量运算 已知向量a 2 1 1 b 1 1 2 计算a b a b 2a a b a b 解 在命令窗口键入下面的命令行 a 21 1 b 1 12 c a bd a be 2 af dot a b g cross a b 得c 301d 12 3e 42 2f 1g 1 5 3 上面分别用dot和cross函数计算向量的点积和叉积 曲面及其方程 利用MATLAB提供的绘图函数 可以绘制给定函数的曲面和二次曲面 相关内容 请参见6 2 4和6 2 5小节的介绍 多元函数的极限和求导 求多元函数的极限求多元函数的导数求二元隐函数的导数 求多元函数的极限 例 求极限 解 在命令行键入symsxy limit sin x y sin x y y 0 ans cos x 求多元函数的导数 用diff函数计算多元函数的偏导数 需要指定相对于哪个变量求偏导数 例 求函数f sin st 的偏导数 解 在命令窗口键入下面的命令行symsstf sin s t diff f t ans cos s t s 求二元隐函数的导数 对于隐函数F x y z 0 导数 级数 级数求和泰勒级数展开傅立叶级数展开 级数求和 可以用symsum函数求级数的和 例 求级数和 解 在命令窗口键入symsxks1 symsum 1 k 2 1 inf s2 symsum x k k 0 inf s1 1 6 pi 2s2 1 x 1 泰勒级数展开 用taylor函数进行泰勒级数展开 例 求函数的泰勒级数展开 取前7项 解 在命令窗口键入下面的代码symsxf 1 5 4 cos x T taylor f 8 返回T 1 9 2 81 x 2 5 1458 x 4 49 131220 x 6 傅立叶级数展开 通过编写程序 可以实现函数的傅立叶级数展开 微分方程 微分方程可以通过函数dsolve求解 例 求微分方程的通解 y为应变量 t为默认的自变量 解 输入下面的命令行dsolve Dy 1 y 2 返回ans tan t C1 即为所求的通解 下面指定初始条件y x 0 1 y dsolve Dy 1 y 2 y 0 1 生成y tan t 1 4 pi 第7章线性代数 矩阵分析矩阵的分解线性方程组的求解矩阵的特征值和特征向量符号矩阵稀疏矩阵 矩阵分析 矩阵的行列式矩阵的四则运算矩阵的幂和平方根矩阵的指数和对数矩阵的翻转矩阵的逆运算矩阵的迹 矩阵的范数矩阵的条件数矩阵的重塑矩阵的逻辑运算矩阵的初等变换矩阵的秩 矩阵的行列式 可用函数det求矩阵的行列式大小 例 a 120 25 1 410 1 b det a b 1 矩阵的四则运算 数组和矩阵的加减运算使用加号和减号 即 和 矩阵相乘使用 运算符 如果只是将两个矩阵中相同位置的元素相乘 使用 运算符 矩阵除法有左除和右除的区别 分别使用 和 运算符 与 和 运算符相对应 也有 和 运算符 分别用于将两个矩阵中的对应元素相除 矩阵与常数的代数运算 可以直接使用上面的各种运算符 矩阵的幂和平方根 矩阵的幂运算使用运算符 幂运算具有类似X p的形式 如果p是整数 则幂通过重复求平方来计算 如果该整数为负值 则首先计算X的逆 如果p取其他值 则计算需要用到特征值和特征矢量 即如果 V D eig X 则X p V D p V 用sqrtm函数求矩阵的平方根 矩阵的指数和对数 矩阵的指数运算用expm函数实现 矩阵的对数运算用logm函数实现 矩阵的翻转 用fliplr函数左右翻转矩阵 用flipud函数上下翻转矩阵 用flipdim函数沿指定方向翻转矩阵 用transpose函数沿主对角线翻转矩阵 矩阵的逆运算 用函数inv实现矩阵的逆运算 由函数pinv实现矩阵的伪逆运算 矩阵的迹 矩阵的迹是指矩阵所有对角线元素的和 在MATLAB中 矩阵的迹可由函数trace计算得到 矩阵的范数 矩阵的范数运算可由函数norm来实现 具有norm A norm A 1 norm A 2 norm A inf norm A fro 等形式 分别代表矩阵的范数运算 1 范数运算 7 范数运算 无穷大范数运算和F 范数运算 矩阵的条件数 条件数的值代表矩阵 病态 程度的大小 在MATLAB中 矩阵的条件数可分别由函数cond A condest A 或rcond A 计算得到 它们分别计算矩阵的条件数值 1 范数矩阵条件数值和矩阵的逆条件数值 矩阵的重塑 用reshape函数进行矩阵重塑 下面将一个3 4的矩阵重塑为2 6的 例 A 14710 25811 36912 A 147102581136912B reshape A 2 6 B 135791124681012 矩阵的逻辑运算 使用逻辑运算符 可以直接对数组或矩阵进行逻辑运算 包括逻辑非 逻辑或 逻辑与和逻辑异或运算 矩阵的初等变换 用rref函数进行矩阵的初等行变换 例 A 1218 12310 23113 1229 A 121812310231131229B rref A B 1003010200110000 矩阵的秩 用函数rank求矩阵的秩 例 a 120 25 1 410 1 b rank a b 3 矩阵的分解 矩阵的LU分解矩阵的QR分解矩阵的QZ分解矩阵的乔累斯基分解矩阵的奇异值分解矩阵的特征值分解矩阵的Schur分解 矩阵的LU分解 矩阵的LU分解是线性方程组求解方法中高斯消去法的基础 在MATLAB中由函数lu来实现 矩阵的QR分解 在MATLAB中 QR分解可由函数qr实现 常用的调用格式如下 B C qr A 返回的矩阵C为上三角矩阵 矩阵B为满秩矩阵 Q R E qr A 返回的矩阵E是置换矩阵 矩阵R是上三角矩阵 矩阵Q是满秩矩阵 上述矩阵满足关系A E Q R 矩阵的QZ分解 在MATLAB中 QZ分解可由函数qz来实现 qz函数常用的调用格式如下 AA BB Q Z V qz A B 要求矩阵A B是方阵 产生的矩阵AA BB是上三角矩阵 Q Z是正交矩阵 矩阵V是特征矢量矩阵 其中 满足Q A Z AA与Q B Z BB AA BB Q Z V qz A B flag 对于方阵A B的QZ分解取决于参数flag 参数flag可取 complex 与 real 矩阵的乔累斯基分解 设矩阵A为n阶对称正定矩阵 则A矩阵可分解为LL 即A LL 其中 矩阵L是上三角矩阵 此时 这种分解就称为乔累斯基分解 在MATLAB中 乔累斯基分解由函数chol实现 矩阵的奇异值分解 在MATLAB中 矩阵的奇异值分解由函数svd来实现 其调用格式为 b c d svd A 矩阵的特征值分解 在线性代数中 很多情况下需要求矩阵的特征值 MATLAB中求矩阵特征值的函数是eig和eigs 其中函数eigs主要应用于稀疏矩阵 矩阵的Schur分解 在MATLAB中 矩阵的Schur分解由Schur函数来实现 其调用格式为 b c schur A 其中c矩阵为Schur矩阵 线性方程组的求解 方形系统超定系统不定系统 矩阵的特征值和特征向量 在MATLAB中 矩阵的特征值运算用函数eig或eigs实现 其中 eigs函数主要针对矩阵为稀疏矩阵的情况 符号矩阵 符号矩阵的四则运算符号矩阵的转置运算符号矩阵的行列式运算符号矩阵的求逆运算符号矩阵的求秩运算符号矩阵的常用函数运算符号矩阵常用线性方程 组 的求解 稀疏矩阵 MATLAB中 创建稀疏矩阵一般用函数sparse或spdiags来实现 稀疏矩阵由于存储空间变小 而且MATLAB专门开发了针对它的算法 因此对稀疏矩阵的运算速度也非常快 第8章概率论与数理统计的MATLAB实现 随机变量及其分布多维随机变量及其分布随机变量的数字特征样本描述参数估计假设检验方差分析一元线性回归 随机变量及其分布 离散型随机变量及其分布律连续型随机变量及其概率密度分布函数逆累加分布函数 离散型随机变量及其分布 二项分布泊松分布离散均匀分布几何分布超几何分布 连续型随机变量及其概率密度 连续型均匀分布指数分布正态分布 分布函数 对于离散型随机变量X 设x为任意实数 X的分布函数为对于连续型随机变量X 假设其概率密度为f x 则其分布函数为 逆累加分布函数 逆累加分布函数是累加分布函数的逆函数 利用逆累加分布函数 可以求得满足给定概率时随机变量对应的置信区间的最小值和最大值 多维随机变量及其分布 用mvnpdf和mvncdf函数可以计算二维正态分布随机变量在指定位置处的概率和累积分布函数值 下面左图和右图分别为二维正态分布随机变量的概率密度图和累积分布图 随机变量的数字特征 期望方差常见分布的数学期望和方差协方差和相关系数矩和协方差矩阵 样本描述 集中趋势包括算术平均值 几何均值 调和均值 中值和截尾均值等 离中趋势包括均值绝对差 极差 方差和标准差等 抽样分布包括卡方分布 t分布和F分布等 参数估计 点估计可以用矩法和最大似然法进行参数估计 区间估计可以用mle函数 利用最大似然估计法进行参数的区间估计 常见分布的参数估计MATLAB统计工具箱提供了多种函数的参数估计函数 详见课本 假设检验 方差已知时的均值检验方差未知时单个正态总体均值的检验方差未知时两个正态总体均值差的检验基于成对数据的检验分布拟合检验 方差已知时的均值检验 用ztest函数在给定方差的条件下检验单样本数据是否服从给定均值的正态分布 方差未知时单个正态总体均值的假设检验 t检验是用小样本检验总体参数 特点是在均方差不知道的情况下 可以检验样本平均数的显著性 用ttest函数进行样本均值的t检验 方差未知时两个正态总体均值差的检验 ttest2函数对两个样本的均值差异进行t检验 基于成对数据的检验 实际工作中为了比较两种方法或两种产品的差异 常常需要进行对比试验 这样得到的数据具有成对的特点 分析这种数据 还是需要t检验 前面用到的ttest函数可以进行检验 分布拟合检验 q q图峰度 偏度检验秩和检验 q q图 q q图用变量数据分布的分位数与所指定分布的分位数之间的关系曲线来检验数据的分布 如果两个样本来自同一分布 则图中数据点呈现直线关系 否则为曲线关系 峰度 偏度检验 峰度 偏度检验又称为Jarque Bera检验 评价给定数据服从未知均值和方差的正态分布的假设是否成立 该检验基于数据样本的偏度和峰度 对于正态分布数据 样本偏度接近于0 样本峰度接近于3 秩和检验 秩和检验可检验两个总体是否相等 用ranksum函数检验两个样本是否取自中值相同的总体 方差分析 单因子方差分析用anova1函数进行单因子方差分析 双因子方差分析用anova2函数进行双因子方差分析 一元线性回归 进行一元线性回归MATLAB中可以使用polyfit函数实现一元线性回归 对于给定的数据 该函数返回一元线性回归方程的系数 可化为一元线性回归的曲线回归问题在实际应用过程中 人们遇到的更多是非线性问题 通过变换 有的非线性问题可以转换为线性问题 从而可以用线性回归的方法来处理 第9章最优化方法的MATLAB实现 一维搜索问题线性规划无约束非线性最优化问题有约束非线性最优化问题 一维搜索问题 求解单变量最优化问题的方法有很多种 如果函数的导数容易求得 一般来说首先考虑使用三次插值法 因为它具有较高的效率 对于只需要计算函数值的方法 二次插值法是一个很好的方法 它的收敛速度较快 在极小点所在区间较小时尤其如此 黄金分割法则是一种十分稳定的方法 并且计算简单 由于以上原因 MATLAB优化工具箱中用得较多的方法是二次插值法 三次插值法 二次三次混合插值法和黄金分割法 利用fminbnd函数找到固定区间内单变量函数的最小值 例 对边长为3m的正方形铁板 在4个角处剪去相等的正方形以制成方形无盖水槽 问如何剪法使水槽的容积最大 解 假设剪去的正方形的边长为x 则水槽的容积为现在要求在区间 0 1 5 上确定一个x 使最大化 因为优化工具箱中要求目标函数最小化 所以需要对目标函数进行转换 即要求最小化 首先编写M文件fminbndtest m functionf myfun x f 3 2 x 2 x 然后调用fminbnd函数 x fminbnd fminbndtest 0 1 5 得到问题的解 x 0 5000即剪掉的正方形的边长为0 5m时水槽的容积最大 线性规划 线性规划问题的矩阵形式为线性规划的标准形式要求使目标函数最小化 约束条件取等式 变量b非负 不符合这几个条件的线性模型要首先转化成标准形式 在MATLAB工具箱中 可用linprog函数求解线性规划问题 无约束非线性最优化问题 求解无约束最优化问题的方法主要有两类 即直接搜索法和梯度法 直接搜索法适用于目标函数高度非线性 没有导数或导数很难计算的情况 常用的直接搜索法为单纯形法 此外还有Hooke Jeeves搜索法 Pavell共轭方向法等 在函数的导数可求的情况下 梯度法是一种更优的方法 常见的梯度法有最速下降法 Newton法 Marquart法 共轭梯度法和拟牛顿法等 MATLAB优化工具箱中用于求解无约束非线性规划问题的函数有fminunc和fminsearch 有约束非线性最优化问题 有约束非线性最优化问题的数学模型为其中 x b beq lb 和ub为矢量 A和Aeq为矩阵 c x 和ceq x 为函数 返回标量 f x c x 和ceq x 可以是非线性函数 利用fmincon函数求多变量有约束非线性函数的最小值 第10章复变函数的MATLAB实现 构造复数 矩阵 复数运算复变函数的图形 构造复数 矩阵 用complex函数构造复数 语法格式为c complex a b 其中 a和b分别表示复数的实部和虚部 必须是标量或大小相同的向量 矩阵或多维数组 输出结果c a bi 其大小与输入参数的相同 复数的实部和虚部 用real函数返回复数的实部 用imag函数返回复数的虚部 共轭复数 用conj函数计算复数的共轭值 该函数的语法格式为ZC conj Z 其中Z为复数数组 复数的模 用abs函数求复数的模 该函数的调用格式为abs Z 返回复数的模 等价于sqrt real Z 2 imag Z 2 复数的辐角 用angle计算复数的辐角 该函数的语法格式为P angle Z 复数的乘除法 复数的乘除法运算由 和 实现 例 m 4 2i n 2 5i m nans 18 0000 16 0000im nans 0 0690 0 8276i 复数的指数运算 用exp函数进行复数的指数运算 该函数的调用格式为Y exp Z 其中Z为复数数组 复数的对数运算 用log函数进行复数的对数运算 该函数的调用格式为Y log Z 其中Z为复数数组 复数的平方根运算 用sqrt函数进行复数的平方根运算 该函数的调用格式为B sqrt Z 该函数返回复数数组Z中每个元素的平方根 复数的幂运算 复数的幂运算的形式为Z n 结果返回复数Z的次幂 例 3 i 2ans 8 0000 6 0000i 复数的三角函数运算 复数的三角函数运算函数参见下表 求方程的复数根 用solve函数可以求方程的复数根 例 解方程x2 1 0 z solve x 2 1 0 z i i如果方程为多项式形式 可以用roots函数进行求解 复变函数的积分 利用int函数 可以求复变函数的不定积分和定积分 例 求积分 symsz int exp z z pi i 0 ans 2 绘复变函数的图形 绘二维图形绘三维图形 复数 数组 矩阵 的图形 可以用plot函数绘复数 数组 矩阵 的图形 语法格式为plot Z 其中 Z为复数向量或矩阵 等价于plot real Z imag Z 复变函数的三维图形 假设f z 为复变函数 在指定的范围内 用曲面的高度表示实部 real f z 颜色表示虚部 imag f z 颜色映射通过变化HSV颜色模型中的饱和度 用cplxmap函数绘制复变函数的图形 语法格式为cplxmap z f z bound 其中 z指定范围 f z 为复变函数 用cplxgrid函数生成极坐标复数网格 z cplxgrid m 是一个 m 1 2 m 1 的复数极坐标网格 复变函数的图形示例 绘函数f z z的图形 colormap hsv 64 z cplxgrid 30 cplxmap z z title z 生成下图 绘函数f z z 3的图形 cplxmap z z 3 title z 3 生成下图 第11章运筹学的MATLAB实现 线性规划与非线性规划整数规划最大最小化多目标决策 线性规划与非线性规划 线性和非线性最优化问题请参见第8章8 2 8 4节的内容 二次规划如果某非线性规划的目标函数为自变量的二次函数 约束条件全是线性函数 就称这种规划为二次规划 利用quadprog函数求解二次规划问题 整数规划 主要介绍0 1规划 0 1规划是一种特殊形式的整数规划 用bintprog函数求解0 1规划问题 最大最小化 最大最小化问题的数学模型为式中x b beq lb和ub为矢量 A和Aeq为矩阵 c x ceq x 和F x 为函数 返回矢量 F x c x 和ceq x 可以是非线性函数 fminimax使多目标函数中的最坏情况达到最小化 多目标决策 多目标决策问题的数学模型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司沉浸式展厅策划方案
- 公司组织轰趴活动方案
- 公司文化圈策划方案
- 公司月刊创刊策划方案
- 公司欢迎仪式活动方案
- 公司老干部活动方案
- 公司激情文化活动方案
- 公司来新人了活动方案
- 公司汇演暖场活动方案
- 公司旅游年会策划方案
- 2025年法院书记员招聘考试题库(含各题型)
- 2025山西焦煤集团公司招聘高频重点提升(共500题)附带答案详解
- 《民用无人机作业气象条件等级 植保》编制说明
- 中药灌肠法治疗肾衰
- 人教版(2024)英语七年级上册单词表
- 客户拓展推介-化学品储存方案
- ISO27001-2013信息安全管理体系要求
- 安装门窗承包劳务合同模板
- 220kV升压站调试施工方案
- GB/T 10069.3-2024旋转电机噪声测定方法及限值第3部分:噪声限值
- TTJSFB 002-2024 绿色融资租赁项目评价指南
评论
0/150
提交评论