Matlab实验指导书.doc_第1页
Matlab实验指导书.doc_第2页
Matlab实验指导书.doc_第3页
Matlab实验指导书.doc_第4页
Matlab实验指导书.doc_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

Matlab 实验指导书 1 目目 录录 实验内容实验内容 1.实验一 MATLAB 基础知识.1 2.实验二 矩阵与数组6 3.实验三 基本操作指令12 4.实验四 高级操作指令21 5.实验五 绘图功能.27 6.实验六 GUI 设计技术.31 7.实验七 MATLAB 应用.42 8.实验八 Simulink 仿真.46 附录附录 参考书目参考书目.52 2 1.实验一实验一 MATLAB 基础知识基础知识 实验目的和要求: (1) 熟练掌握 MATLAB 的启动和退出。 (2) 熟悉 MATLAB 的命令窗口。 (3) 熟悉常用选单和工具栏。 (4) 熟悉 MATLAB 桌面的其他窗口。 (5) 使用“帮助”查找帮助信息。 (6) 熟悉数据和变量 实验仪器: 计算机一台 实验步骤和内容: 这里介绍 MATLAB 一些入门知识,包括 MATLAB 桌面和窗口,MATLAB 命 令格式、数据格式、数据文件和变量管理. 表一 MATLAB 的基本命令 主题词含义主题词含义 format设置数据显示格式feval函数求值 who显示变量名input提示输入 whos显示变量信息disp输出 clear清除内存变量tic启动秒表 save保存工作变量到文件toc时间读数(秒) load从文件装载变量help帮助 linspace区间等分lookfor查找 length获取数组长度type列程序清单 size矩阵大小which查找文件目录 max最大值double双精度 min最小值str2num字符串转化为数值 sum求和num2str数值转化为字符串 find条件检索 1.1MATLAB 桌面 启动 MATLAB 后,就进入 MATLAB 的桌面,图 1 为 MATLAB7.0 的默认 (Default)桌面。第一行为菜单栏,第二行为工具栏,下面是三个最常用的窗口。 右边最大的是命令窗口(Command Window) ,左上方前台为发行说明书窗口 (Launch pad) ,后台为工作空间(Workspace) ,左下方为命令历史(Command History)后台为当前目录(Current Directory) 。 1.1.1 窗口 (1)命令窗口 该窗口是进行 MATLAB 操作最主要的窗口。窗口中“”为命令输入提示符, 其后输入运算命令,按回车键就可执行运算,并显示运算结果.。 3 图 1 (2)发行说明书窗口 发行说明书窗口是 MATLAB 所特有的,用来说明用户所拥有的 Mathworks 公 司产品的工具包、演示以及帮助信息。 (3)工作空间 在默认桌面,位于左上方窗口前台,列出内存中 MATLAB 工作空间的所有变 量的变量名、尺寸、字节数。用鼠标选中变量,击右键可以打开、保存、删除、绘 图等操作。 (4)当前目录 在默认桌面,位于左下方窗口后台,用鼠标点击可以切换到前台。该窗口列出 当前目录的程序文件(.m)和数据文件(.mat)等。用鼠标选中文件,击右键可以 进行打开、运行、删除等操作。 (5)命令历史(Command History) 该窗口列出在命令窗口执行过的 MATLAB 命令行的历史记录。用鼠标选中命 令行,击右键可以进行复制、执行(Evaluate Selection) 、删除等操作。 除上述窗口外,MATLAB 常用窗口还有编程器窗口、图形窗口等。 1.2 在线帮助 help 显示 MATLAB 主题目录 help 子目录名 显示子目录中所有 MATLAB 系统命令及函数 help 命令或函数 显示该命令或函数的说明部分 lookfor 关键字 显示与该关键字有关的命令和函数 type M 文件名 显示 M 文件程序代码 which M 文件名 显示指定的 MATLAB 文件的路径 demo 演示 MATLAB 功能 4 MATLAB 提供了两种形式的帮助系统:纯文本帮助、HTML 帮助。纯文本帮 助是最常用、最经济的在线帮助,不需要另外安装,是边用边学计算机软件的最有 效的方法。 help %显示 MATLAB 及其工具箱的主题目录,其中有 graph3d help graph3d %显示 3 维图形主题目录内所有 M 命令和函数,其中有 mesh help mesh %显示 M 函数 mesh 的用法说明,即其 M 文件的注释部分 which mesh %显示 M 函数 mesh 所在的目录 type mesh %显示函数 mesh 的 M 文件程序代码 lookfor surface %显示 MATLAB 搜索路径中凡是第一行注释含 surface 的 M 命令和函数,其中有函数 mesh 若我们现在要解决一个线性规划问题,但不知道怎么用 MATLAB 求解,可利 用线性规划的关键字 programming: lookfor programming 可以找到有关 programming 的很多命令,其中有一个 LINPROG 是线性规划 (Linear programming).再用: help linprog 可以得到使用 linprog 解线性规划问题用法的详细说明。进一步使用: type linprog 可以看到 linprog 的 M 文件程序代码。 2.文件和目录管理 MATLAB 文件有 M、Mat、Mex 等。其中 M 文件是最重要的,MATLAB 绝大 多数内部命令和函数是 M 文件,用户自编的程序一般也是 M 文件。MATLAB 只 执行当前目录(Current Directory)和搜索路径(写在文件 pathdef.m)中的 M 文件。 初学者在 M 文件的保存上经常出现下列几种错误: (1)文件修改后没有保存; (2)文件保存的目录不在当前目录和 MATLAB 搜索路径中; (3)文件名使用了常数或内存中的变量,如 1.m,pi.m 等; (4)文件名用了减号、空格等非法字符,如 eg2-1.m,eg2.1.m 等; (5)文件名与 MATLAB 内建(build-in)函数和其他内部函数冲突,如 mesh.m,fitfun.m 等。 1.3 数据和变量 1.3.1 表达式 在命令窗口作一些简单的计算,就如同使用一个功能强大的计算器,使用变量 无须预先定义类型。 例如,设球半径为 r=2,求球的体积。 3 3 4 rV r=2 %表达式将 2 赋予变量 r r= %系统返回 r 的值 2 v=4/3*pi*r3 %pi 为内置常量,乘方用表示 v= 33.5103 5 几个表达式可以写在一行,用分号(;)或逗号(, )分割,用分号(;)使 该表达式运算结果不显示,而逗号(, )则显示结果。也可以将一个长表达式分在 几行上写,用三点()续行。 若需要修改已执行过的命令行,可以在命令历史中找到该命令行复制,再粘贴 至命令窗口修改。也可以直接使用键盘调出已执行过的命令行修改。 1.3.2 数据显示格式 MATLAB 默认的数据显示格式为短格式(short):当结果为整数,就作为整 数显示;当结果是实数,以小数点后四位的长度显示。若结果的有效数字超出一定 范围,以科学计数法显示(如 3.2000e-006 表示) 。数据显示格式可使用命 6 102 . 3 令 Format 改变。例如: format long;v %长格式,16 位 v = 33.51032163829112 format short;v %短格式 v = 33.5103 format rational;v %有理格式,近似分数 v = 6501/194 1.3.3 复数 MATLAB 中复数可以如同实数一样,直接输入和计算。例如: a=1+2i;b=5-4*i;c=a/b c = -0.0732 + 0.3415i 1.3.4 预定义变量 MATLAB 有一些预定义变量(表 2) ,启动时就已赋值,可以直接使用,如前 我们使用的圆周率 pi 和虚数单位 i. 表 2 常用预定义变量 变量名说 明 i 或 j虚数单位 1 pi圆周率 3.14159 eps浮点数识别精度 2(-52)= 16 2.2204 10 realmin最小正实数 308 2.2251 10 realmax最大正实数 308 1.7977 10 inf无穷大 NaN没有意义的数 预定义变量在工作空间观察不到。如果预定义变量被用户重新赋值,则原来的 功能暂不能使用。当这些用户变量被清除(clear)或 MATLAB 重新启动后,这些 功能得以恢复。 1.3.5 用户变量 MATLAB 变量名总以字母开头,以字母、数字或下划线组成,区分大小写, 有效字符长度为 63 个。如 A,a,a1,a_b 都是合法的,且 a 与 A 表示不同变量。在 Command Window 中使用的变量一旦被赋值,就会携带这个值存在于工作空间, 直到被清除或被赋予新的值。 6 ans 是系统一个特别的变量名。若一个表达式运算结果没有赋予任何变量,系 统自动用 ans 存放答案。例如: A=5+4i;b=5-4*i;B=1;A*b %没有定义 A*b 的输出变量 ans = 41%ans 来接受计算结果,注意这是大写 A 与小 写 b 的乘积,尽管我们可以使用工作空间来查询和清除变量,但使用下列命令方式 更快捷: whos%查询 Workspace 中的变量列表 Name Size Bytes Class A 1x1 16 double array (complex) B 1x1 8 double array a 1x1 16 double array (complex) ans 1x1 8 double array b 1x1 16 double array (complex) c 1x1 16 double array (complex) Grand total is 6 elements using 80 bytes A %查询变量 A 的值 A = 5.0000 + 4.0000i clear A%清除变量 A A%再查询 A 的值,已经不存在了 ? Undefined function or variable A. clear%清除 Workspace 中所有变量 whos%Workspace 中已没有任何变量了 7 2.实验二实验二 矩阵与数组矩阵与数组 实验目的和要求: (1) 熟练掌握数组的基本命令。 (2) 熟练掌握矩阵的基本命令。 实验仪器: 计算机一台 实验步骤和内容: MATLAB 基本数据单元是无需指定维数的数组。数组运算是 MATLAB 最鲜 明的特点,一方面可以使得计算程序简明易读,另一方面可以提高计算速度。 2.1 数组的输入 最常用的数组是双精度数值数组(double array) 。一维数组相当于向量,二维 数组相当于矩阵,一维数组可以视为二维数组的特例。二维数组的第一维称为“行” ,第二维称为“列” 。MATLAB 数组无需预先定义维数。直接输入数组的元素,用 中括号()表示一个数组,同行元素间用空格或逗号分隔,不同行间用分号或回 车分隔,例如: clear;a=1,2,3;4,5,6;7,8,9 a = 1 2 3 4 5 6 7 8 9 或 a=1 2 3%这种方式特别适用于大型矩阵 4 5 6 7 8 9 a = 1 2 3 4 5 6 7 8 9 对于等差数列构造的一维数组,可用冒号运算生成,也可用函数 linspace 生成。 b=0:3:10%初值:增量:终值 b = 0 3 6 9 b=0:10%增量为 1 可省略 b = 0 1 2 3 4 5 6 7 8 9 10 b=10:-3:0%递减 b = 10 7 4 1 b=linspace(0,10,4)%将区间0,10等分为 4-1=3 份 b = 0 3.3333 6.6667 10.0000 length(b)%查询 b 的长度 ans = 8 4 b(3)%查询 b 的第三个元素 ans = 6.6667 b(1,end)%查询 b 的首和尾元素 ans = 0 10 二维数组元素双下标编址按通常方式,单下标编址按列排序。 size(a)%查询数组 a 的尺寸 ans = 3 3 a(3,2),a(6) ans = 8 ans = 8 c=a(1 3,2 3)%提取 a 的第一、第三行和第二、第三列(分块 矩阵) c = 2 3 8 9 d=a(2,:)%提取 a 的第二行 d = 4 5 6 a(:)%将 a 所有元素按单下标顺序排为列向量 ans = 1 4 7 2 5 8 3 6 9 一些特殊的二维数组可以用函数产生,例如: a=zeros(2,4)%生成 2 行 4 列零矩阵 a = 0 0 0 0 0 0 0 0 b=ones(1,4)%生成 1 行 4 列 1 矩阵 b = 1 1 1 1 c=a;b%拼接 c = 9 0 0 0 0 0 0 0 0 1 1 1 1 c(2,1)=100%修改部分元素 c = 0 0 0 0 100 0 0 0 1 1 1 1 reshape(c,2,6)%按 2 行 6 列重排矩阵元素 ans = 0 1 0 0 1 0 100 0 1 0 0 1 注意:数组下标对应矩阵的行和列,编址一律从 1 开始,不能用 0. 矩阵输入也可用“load”命令从外部数据文件导入 2.2 数组运算 数组运算是指数组对应元素之间的运算,也称点运算。矩阵的乘法、乘方和除 法有特殊的数学含义,并不是数组对应元素的运算,所数组乘法、乘方和除法的运 算符前特别加了一个点。特别要区分数组运算在乘法、乘方和除法上的意义和表示 上与矩阵运算的不同。 表 1 数组运算符 运算符号说明 数组加与减A+B 与 A-B对应元素之间加减 数乘数组k*A 或 A*kk 乘 A 的每个元素 数与数组加减k+A 或 k-Ak 加(减)A 的每个元素 数组乘数组A.*B 数组乘方A.k,k.A 数除以数组k./A 数组除法左除 A.B,右除 B./A 点运算只有点乘、点乘方、点除三个, 表示对应元素之间的运算;(.*)是一 个整体,点(.)不能漏掉, (.)和(*)之 间也不能有空格 clear;A=1 -1;0 2;B=0 1;1 -1; A.*B%注意不是 A*B ans = 0 -1 0 -2 A.B,A./B Warning: Divide by zero. ans = 0 -1.0000 Inf -0.5000 Warning: Divide by zero. ans = Inf -1 0 -2 A.2 ans = 1 1 10 0 4 1./A Warning: Divide by zero. ans = 1.0000 -1.0000 Inf 0.5000 2.3 矩阵运算 矩阵是一个二维数组,所以矩阵的加、减、数乘等运算与数组运算是一致的。 但是有两点需要注意: (1)对于乘法、乘方和除法等三种运算,矩阵运算与数组运算的运算符及含 义不同:矩阵运算按线性变换定义,使用通常符号;数组运算按对应元素运算定义, 使用点运算符; (2)数与矩阵加减、矩阵除法在数学上是没有意义的,在 MATLAB 中为简 便起见,定义了这两类运算,其含义见表 2. 表 2 矩阵运算符 运算符号说明 转置A 加与减A+B 与 A-B同数组运算 数乘矩阵k*A 或 A*k同数组运算 矩阵乘法A*B 矩阵乘方Ak 数与矩阵加减k+A 与 k-Ak+A 等价于 k*ones(size(A)+A 矩阵除法左除 AB,右除 B/A 它们分别为矩阵方程 AX=B 和 XA=B 的解 A=1 2;3 4;B=4 3;2 1; 100+A ans = 101 102 103 104 A*B,A.*B%注意矩阵运算和数组运算的区别 ans = 8 5 20 13 ans = 4 6 6 4 AB,B/A,A.B,B./A%注意矩阵运算和数组运算的区别 ans = -6.0000 -5.0000 5.0000 4.0000 ans = -3.5000 2.5000 -2.5000 1.5000 ans = 11 4.0000 1.5000 0.6667 0.2500 ans = 4.0000 1.5000 0.6667 0.2500 2.4 数学函数 数组的数学函数也是按每个元素的运算,使用通常的函数符号,常用数学函数 见表 3 表 3 数学函数 函数意义函数意义 sin正弦fix向 0 取整 cos余弦mod模余 tan正切rem除法余数 cot余切abs绝对值(模) asin反正弦exp指数函数 acos反余弦log自然对数 sqrt开方log10以 10 为底的对数 A=4 -1;3 2; B=exp(A) B = 54.5982 0.3679 20.0855 7.3891 C=fix(B) C = 54 0 20 7 D=sin(C) D = -0.5588 0 0.9129 0.6570 E=log(D) Warning: Log of zero. E = -0.5820 + 3.1416i -Inf -0.0911 -0.4201 2.5 关系与逻辑运算 MATLAB 的关系运算和逻辑运算符都是对于元素的操作,其结果是特殊的逻 辑数组(logical array)表 4, “真”用 1 表示, “假”用 0 表示,而逻辑运算中,所 有非零元素作为 1(真)处理。 12 表 4 关系运算和逻辑运算 运算符含义运算符含义 大于非 =大于等于all = =等于any =不等于 A=-2:4,B=4:-1:-2 A = -2 -1 0 1 2 3 4 B = 4 3 2 1 0 -1 -2 AB ans = 0 0 0 0 1 1 1 A=B ans = 0 0 0 1 0 0 0 A n= input(矩阵列数:n=); for i=1:m for j=1:n disp(输入第,num2str(i),行,第, num2str(j),列元素) A(i, j) = input ( ) end end 3.2 条件循环 1) if-else-then 语句 if-else-then 语句的常使用三种形式为: (1) if 逻辑表达式 (3) if 逻辑表达式 1 语句体 语句体 1 end elseif 逻辑表达式 2 语句体 2 (2) if 逻辑表达式 1 elseif 逻辑表达式 3 语句体 1 else else 语句体 2 语句体 n end end 2) while 循环语句 while 循环的一般使用形式为: while 表达式 语句体 End 14 3.3 分支结构 若需要对不同的情形执行不同的操作,可用 switch 分支语句: switch 表达式(标量或字符串) case 值 1 语句体 1 case 值 2 语句体 2 otherwise 语句体 n end 说明:当表达式不是“case”所列值时,执行 otherwise 语句体。 3.4 建立 M 文件 将多个可执行的系统命令,用文本编辑器编辑后并存放在后缀为 .m 的文件中,若在 MATLAB 命令窗口中输入该 m-文件的文件名(不跟后缀.m!) ,即可依次执行该文件中的多个 命令。这个后缀为.m 的文件,也称为 Matlab 的脚本文件(Script File)。 注意:文件存放路径必须在 Matlab 能搜索的范围内。 3.5 建立函数文件 对于一些特殊用户函数,系统提供了一个用于创建用户函数的命令 function,以备用户随 时调用。 1格式: function 输出变量列表=fun_name(输入变量列表) 用户自定义的函数体 2函数文件名为:fun_name,注意:保存时文件名与函数名最好相同; 3存储路径:最好在系统的搜索路径上。 4. 调用方法:输出参量=fun_name (输入变量) 例 计算 s = n!,在文本编辑器中输入: function s=pp(n); s=1; for i=1:n s=s*i; end s; 在 MATLAB 命令窗口中输入:s=pp(5) 结果为 s = 120 3.6 矩阵的创建 1.加、减运算 运算符:“”和“”分别为加、减运算符。 15 运算规则:对应元素相加、减,即按线性代数中矩阵的“十” 、 “一”运算进行。 例 3-6-1 在 Matlab 编辑器中建立 m 文件:LX0701.m A=1, 1, 1; 1, 2, 3; 1, 3, 6 B=8, 1, 6; 3, 5, 7; 4, 9, 2 AB=A+B A-=A-B 在 Matlab 命令窗口建入 LX0701,则 结果显示:A+B= 9 2 7 4 7 10 5 12 8 AB= -7 0 -5 -2 -3 -4 -3 -6 4 2.乘法 运算符:* 运算规则:按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在 后面的矩阵的各列元素对应相乘并相加。 (1)两个矩阵相乘 例 3-6-2 在 Mtalab 编辑器中建立 M 文件:LX0702.m X= 2 3 4 5 1 2 2 1; Y=0 1 1 1 1 0 0 0 1 1 0 0; Z=X*Y 存盘 在命令行中建入 LX0702,回车后显示: Z= 8 5 6 3 3 3 (2)矩阵的数乘:数乘矩阵 上例中:a=2*X 则显示:a = 4 6 8 10 2 4 4 2 (3)向量的点乘(内积):维数相同的两个向量的点乘。 命令:命令:dot 向量点乘函数 例:X=-1 0 2; Y=-2 -1 1; Z=dot(X, Y) 则显示:Z = 4 16 还可用另一种算法: sum(X.*Y) ans= 4 (4)向量叉乘 在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。在 Matlab 中,用函数 cross 实现。 命令 cross 向量叉乘函数 例 3-6-3 计算垂直于向量(1, 2, 3)和(4, 5, 6)的向量。 在 Mtalab 编辑器中建立 M 文件:LX0703.m a=1 2 3; b=4 5 6; c=cross(a,b) 结果显示: c= -3 6 -3 可得垂直于向量(1, 2, 3)和(4, 5, 6)的向量为(-3, 6, -3) (5)混合积 混合积由以上两函数实现: 例 3-6-4 计算向量 a=(1, 2, 3)、b=(4, 5, 6)和 c=(-3, 6, -3) 的混合积) cb(a 在 Matlab 编辑器中建立 M 文件:LX0704.m a=1 2 3; b=4 5 6; c=-3 6 -3; x=dot(a, cross(b, c) 结果显示:x = 54 注意:注意:先叉乘后点乘,顺序不可颠倒。 3.矩阵的除法 Matlab 提供了两种除法运算:左除()和右除(/) 。一般情况下,x=ab 是方程 a*x =b 的 解,而 x=b/a 是方程 x*a=b 的解 例:a=1 2 3; 4 2 6; 7 4 9 b=4; 1; 2; x=ab 则显示:x= -1.5000 2.0000 0.5000 如果 a 为非奇异矩阵,则 ab 和 b/a 可通过 a 的逆矩阵与 b 阵得到: ab = inv(a)*b b/a = b*inv(a) 4.矩阵乘方 运算符: 运算规则: (1)当 A 为方阵,p 为大于 0 的整数时,AP 表示 A 的 P 次方,即 A 自乘 P 次;p 为小 17 于 0 的整数时,AP 表示 A-1的 P 次方。 (2)当 A 为方阵,p 为非整数时,则其中 V 为 A 的特征向量, 1 p nn p 11 V d d VPA 为特征值矩阵 nn 11 d d 5.矩阵的转置 运算符: 运算规则:与线性代数中矩阵的转置相同。 6.矩阵的逆矩阵 例 3-6-5 求的逆矩阵 343 122 321 A 方法一:在 Matlab 编辑器中建立 M 文件:LX07051.m A=1 2 3; 2 2 1; 3 4 3; inv(A)或 A(-1) 则结果显示为 ans = 1.0000 3.0000 -2.0000 -1.5000 -3.0000 2.5000 1.0000 1.0000 -1.0000 方法二:由增广矩阵进行初等行变换 100343 010122 001321 B 在 Matlab 编辑器中建立 M 文件:LX07052.m B=1, 2, 3, 1, 0, 0; 2, 2, 1, 0, 1, 0; 3, 4, 3, 0, 0, 1; C=rref(B) %化行最简形 X=C(:, 4:6) 在 Matlab 命令窗口建入 LX07052,则显示结果如下: C = 1.0000 0 0 1.0000 3.0000 -2.0000 0 1.0000 0 -1.5000 -3.0000 2.5000 0 0 1.0000 1.0000 1.0000 -1.0000 X = 1.0000 3.0000 -2.0000 -1.5000 -3.0000 2.5000 1.0000 1.0000 -1.0000 这就是 A 的逆矩阵。 7.方阵的行列式 命令:命令: det 计算行列式的值 例 3-6-6 计算上例中 A 的行列式的值 在 Matlab 编辑器中建立 M 文件:LX0706.m A=1 2 3; 2 2 1; 3 4 3; 18 D=det(A) 则结果显示为 D = 2 3.7 符号矩阵的运算 1.符号矩阵的四则运算 Matlab 5.x 抛弃了在 4.2 版中为符号矩阵设计的复杂函数形式,把符号矩阵的四则运算简 化为与数值矩阵完全相同的运算方式,其运算符为:加() ,减() 、乘() 、除(/、) 等或:符号矩阵的和(symadd) ,差(symsub) ,乘 (symmul)。 例 3-7-1 ); ) 3x/(1),2x/(1);1x/(1, x/1 (symA ;) 0, 2x; 1, x(symB C=B-A D=ab 则显示: C= x-1/x 1-1/(x+1) x+2-1/(x+2) -1/(x+3) D= -6*x-2*x3-7*x2 1/2*x3+x+3/2*x2 6+2*x3+10*x2+14*x -2*x2-3/2*x-1/2*x3 2.其他基本运算 符号矩阵的其他一些基本运算包括转置() 、行列式(det) 、逆(inv) 、秩(rank) 、幂 ()和指数(exp 和 expm)等都与数值矩阵相同 3.符号矩阵的简化 符号工具箱中提供了符号矩阵因式分解、展开、合并、简化及通分等符号操作函数。 (1)因式分解 命令:命令:factor 符号表达式因式分解函数 格式:factor(s) 说明:说明:s 为符号矩阵或符号表达式。常用于多项式的因式分解 例 3-7-2 将 x 9-1 分解因式 在 Matlab 命令窗口建入 syms x factor(x9-1) 则显示:ans = (x-1)*(x2+x+1)*(x6+x3+1) 例 3-7-3 问入取何值时,齐次方程组 0)1 ( 0)3 (2 042)1 ( 321 321 321 xxx xxx xxx 有非 0 解 解:在 Matlab 编辑器中建立 M 文件:LX0709.m syms k 19 A=1-k -2 4;2 3-k 1;1 1 1-k; D=det(A) factor(D) 其结果显示如下: D = -6*k+5*k2-k3 ans = -k*(k-2)*(-3+k) 从而得到:当 k=0、k=2 或 k=3 时,原方程组有非 0 解。 (2)符号矩阵的展开 命令命令 expand 符号表达式展开函数 格式:expand(s) 说明:说明:s 为符号矩阵或表达式。常用在多项式的因式分解中,也常用于三角函数,指数函 数和对数函数的展开中 例 3-7-4 将(x+1)3、sin(x+y)展开 在 Matlab 编辑器中建立 M 文件:LX0710.m syms x y p=expand(x+1)3) q=expand(sin(x+y) 则结果显示为 p = x3+3*x2+3*x+1 q = sin(x)*cos(y)+cos(x)*sin(y) (3)同类式合并 命令:命令:Collect 合并系数函数 格式:Collect(s,v) 将 s 中的变量 v 的同幂项系数合并。 Collect(s) s 矩阵或表达式,此命令对由命令 findsym 函数返回的默认变量进行 同类项合并。 (4)符号简化 命令:命令:simple 或或 simplify 寻找符号矩阵或符号表达式的最简型 格式:Simple(s) s 矩阵或表达式 说明说明:Simple(s)将表达式 s 的长度化到最短。若还想让表达式更加精美,可使用函数 Pretty。 格式:Pretty(s) 使表达式 s 更加精美 例 3-7-5 计算行列式 4444 2222 1111 dcba dcba dcba 的值。 在 Matlab 编辑器中建立 M 文件:LX0711.m syms a b c d 20 A=1 1 1 1;a b c d;a2 b2 c2 d2;a4 b4 c4 d4; d1=det(A) d2=simple(d1) %化简表达式 d1 pretty(d2) %让表达式 d2 符合人们的书写习惯 则显示结果如下: d1 = b*c2*d4-b*d2*c4-b2*c*d4+b2*d*c4+b4*c*d2-b4*d*c2- a*c2*d4+a*d2*c4+a*b2*d4-a*b2*c4-a*b4*d2+a*b4*c2+a2*c*d4-a2*d*c4- a2*b*d4+a2*b*c4+a2*b4*d-a2*b4*c-a4*c*d2+a4*d*c2+a4*b*d2-a4*b*c2- a4*b2*d+a4*b2*c d2 = (-d+c)*(b-d)*(b-c)*(-d+a)*(a-c)*(a-b)*(a+c+d+b) (-d+c)(b-d)(b-c)(-d+a)(a-c)(a-b)(a+c+d+b) 例 3-7-6 设, 343 122 321 A 35 12 B 13 02 31 C 求矩阵 X,使满足:AXB = C 在 Matlab 编辑器中建立 M 文件:LX0712.m A=1 2 3;2 2 1;3 4 3; B=2,1;5 3; C=1 3;2 0;3 1; X=AC/B 则结果显示如下: X = -2.0000 1.0000 10.0000 -4.0000 -10.0000 4.0000 例 3-7-7 计算 5 ) tcos() tsin( ) tsin() tcos( 在 Matlab 编辑器中建立 M 文件:LX0713.m syms t A =cos(t) -sin(t); sin(t), cos(t); B=sympow(A, 5) %计算 A 的 5 次幂 C=simple(B) %化简 pretty(C) 则显示结果如下 B = cos(t)*(cos(t)*(cos(t)*(cos(t)2-sin(t)2)-2*sin(t)2*cos(t)-sin(t)*(sin(t)*(cos(t)2- sin(t)2)+2*cos(t)2*sin(t)-sin(t)*(sin(t)*(cos(t)*(cos(t)2-sin(t)2)- 2*sin(t)2*cos(t)+cos(t)*(sin(t)*(cos(t)2-sin(t)2)+2*cos(t)2*sin(t), cos(t)*(cos(t)*(- 2*cos(t)2*sin(t)-sin(t)*(cos(t)2-sin(t)2)-sin(t)*(cos(t)*(cos(t)2-sin(t)2)-2*sin(t)2*cos(t)- sin(t)*(sin(t)*(-2*cos(t)2*sin(t)-sin(t)*(cos(t)2-sin(t)2)+cos(t)*(cos(t)*(cos(t)2-sin(t)2)- 2*sin(t)2*cos(t) sin(t)*(cos(t)*(cos(t)*(cos(t)2-sin(t)2)-2*sin(t)2*cos(t)-sin(t)*(sin(t)*(cos(t)2- 21 sin(t)2)+2*cos(t)2*sin(t)+cos(t)*(sin(t)*(cos(t)*(cos(t)2-sin(t)2)- 2*sin(t)2*cos(t)+cos(t)*(sin(t)*(cos(t)2-sin(t)2)+2*cos(t)2*sin(t), sin(t)*(cos(t)*(-2*cos(t)2*sin(t)-sin(t)*(cos(t)2-sin(t)2)-sin(t)*(cos(t)*(cos(t)2-sin(t)2)- 2*sin(t)2*cos(t)+cos(t)*(sin(t)*(-2*cos(t)2*sin(t)-sin(t)*(cos(t)2- sin(t)2)+cos(t)*(cos(t)*(cos(t)2-sin(t)2)-2*sin(t)2*cos(t) C = cos(5*t), -sin(5*t) sin(5*t), cos(5*t) cos(5 t) -sin(5 t) sin(5 t) cos(5 t) 4.实验四实验四 高级操作指令高级操作指令 22 实验目的和要求: (1) 熟练掌握矩阵和向量组的秩和线形相关性的命令。 (2)熟练掌握程序设计语句。 实验仪器: 计算机一台 实验步骤和内容: 4.1 矩阵和向量组的秩以及向量组的线性相关性 矩阵 A 的秩是矩阵 A 中最高阶非零子式的阶数;向量组的秩通常由该向量组构成的矩阵 来计算。 命令:命令:rank 格式:rank(A) A 为矩阵式向量组构成的矩阵 例 4-1 求向量组,) 3221 ( 1 ) 3142( 2 ) 3021( 3 ,的秩,并判断其线性相关性。) 3260( 4 ) 4362( 5 在 Matlab 编辑器中建立 M 文件:LX0714.m A=1 -2 2 3;-2 4 -1 3;-1 2 0 3;0 6 2 3;2 -6 3 4; B=rank(A) 运行后结果如下: B = 3 由于秩为 3 clear;s=0; for n=1:100 s=s+1/n/n; end s s = 1.6350 2.M 脚本文件 复杂程序结构在命令窗口调试保存都不方便,所以进行复杂的运算大都使用程 序文件。从命令窗口用命令“edit”就进入 MATLAB 的程序编辑器窗口,用以编 写用户的 M 文件。M 文件可分为两类:M 脚本文件和 M 函数文件。 将多条 MATLAB 语句写在编辑器中,并以.m 文件保存在适当的目录中(这个 目录须为 MATLAB 的搜索目录) ,就得到一个 M 脚本。如我们将例 1 中的几条语 句写在编辑器中, 保存为 naega_1,然后在命令窗口执行: naega_1 s= 1.6350 执行 M 脚本文件也可以在程序编辑器的 Debug 菜单选 Run。使用编辑器也可 打开和修改 M 文件、观察变量值、调试程序等。 注意:M 文件名一律以字母开头,以字母、数字或下划线组成,不要含有空 格、减号等,并要防止它与系统的变量名、系统内部的 M 函数名冲突。例如 1.m,ega-1.m,ega.1.m 都是不合法的。另外,别忘了每次修改程序后都要存盘。 3.M 函数文件 M 脚本文件没有参数传递功能,当我们需要修改程序中的某些变量值,必须 修改 M 文件。而 M 函数文件使得我们可以进行参数传递。 M 函数文件以 function 开头,格式如下: function 输出变量=函数名(输入变量) 语句 例如,写函数文件: % M 函数 naega_1f.m function s=f(m) s=0; for n=1:m s=s+1/n/n; end 保存为 naega_1f.m,在命令窗口执行: clear;naega_1f(100),naega_1f(1000) ans= 25 1.6350 ans= 1.6439 注意:在 MATLAB 中,使用 M 函数是以该函数的磁盘文件主名调用,而不 是文件中的函数名,但为了增强程序可读性,最好两者同名。 M 函数不能像 M 脚本那样在编辑器窗口用 Debugrun 执行,因为 M 函数必须 给予输入参数值。M 函数常常被 M 脚本或其他 M 函数调用。 4.函数句柄和内嵌函数 M 函数除了直接用其函数名调用之外,也可以作为一个参数调用。调用时使 用所谓函数句柄(handle)方式。MATLAB 命令 feval 用于执行函数的参数方式。例 如: fname=naega_1f;feval(fname,1000) ans= 1.6439 比较简单的函数表达式可以不用写成外部 M 函数,而是用更简捷的内嵌 (inline)函数方式。inline 的使用格式如下: fun=inline(expr,arg1,agr2,) expr 为函数表达式字符串,arg1,arg2,.为自变量 名字符串 例如: fname=inline(sum(1./(1:n).2),n) fname = Inline function: fname(n) = sum(1./(1:n).2) feval(fname,1000) ans = 1.6439 5.其他 (1)注释 为了增强程序的可读性,程序中常常需要注释语句。M 文件开头一般应有一 段注释。注释用%开头,顶格书写,对本行后面字符起作用,说明文件的功能和使 用方法。注释语句不参与运算,只起说明作用。使用 Help 可看到。注释符(%) 也常用于程序调试。 (2)对话 Input 在交互式执行程序中用于提示键盘输入,Disp 用于屏幕显示。 例 4-3-2 编写一个脚本文件,使对键盘提示输入的向量求得元素总和。 % M 文件 naega_2.m %用途:本程序提示输入一个向量,并求得元素总和 %用法:输入向量用中括号,元素之间用逗号 clear A; A=input(Enter a vector:); d=sum(A); disp(The sum is,num2str(d); 然后在命令窗口执行: naega_2 Enter a vector:1 2 3 4 26 The sum is 10 help naega_2 用途:本程序提示输入一个向量,并求得元素总和 用法:输入向量用中括号,元素之间用逗号 (4)子函数 M 函数中允许使用子函数。M 函数中第一个 function 为主函数,其他 function 为子函数。子函数只能被同一文件的主函数和其他子函数调用,不能被外部函数调 用。 (5)全程变量与局部变量 M 函数中所有变量为局部变量,而脚本文件中所有变量同命令窗口的命令一 样都是全程变量。M 函数变量值传递主要通过其输入输出变量,但也可以用 global 定义全程变量。它的意义与普通全程变量稍有区别,只对有定义的文件起作用。 (6)nargin 与 nargout 在 M 函数内,nargin 表示该函数的输入变量个数,nargout 表示该函数的输出 变量个数。 (7)提高速度 MATLAB 软件主要缺点是执行循环语句时速度慢。好的 M 程序文件应尽量使 用数组运算和内部函数,少用循环语句,以提高运算速度。尽管 MATLAB 数组无 须定义尺寸,但经常改变数组尺寸会影响速度,采取一些预分配方法可提高运算速 度。另外,减少运行过程中不必要的结果显示也可提高速度。 (8)强行中断 使用快捷键 Ctrl+C 可以强行中断程序运行。 例 4-3-3 编写一个 M 函数,对于任意输入的向量 x,可以计算下列分段函数 值构成的向量: 2, 1 ( )1, 11 32 ,1 xx f xx x x %M 函数 naega_3a.m function y=naega_3a(x) n=length(x); for i=1:n if x(i)1 y(i)=x(i)2; elseif x(i)-1 y(i)=1; else y(i)=3+2*x(i); end end %M 函数 naega_3b.m function y=naega_3b(x) y=

温馨提示

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

评论

0/150

提交评论