




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 验 一,矩阵运算与Matlab命令,日常矩阵及其运算,矩阵应用实例: 榄球防护用品的生产管理,应用问题,一个工厂生产三种橄榄球用品 : 防护帽、 垫肩、臀垫。 需要不同数量的:硬塑料 、 泡沫塑料 尼龙线 、 劳动力。 为监控生产,管理者对它们之间的关系十分关心。 为把握这些量的关系,他列出下面的表,生产原料和产品关系表,订单,管理者接到四份订单如上表所示。 问应该如何计算每份订单所需的原材料,以便组织生产?,将表格写成矩阵形式,MATLAB的运行方式,1.直接在命令窗口中输入: 2.M文件输入法:,M文件建立方法: 1. 在Matlab中,点:File-New-M-file 2. 在编辑窗口中输入程序内容 3. 点:File-Save,存盘。,对于简单问题,使用直接输入命令简单有效;对稍复杂和多次重复的应用,直接输入命令比较麻烦。MATLAB提供了逻辑解决方案,它允许用户把多个命令放在一个简单的文本文件中,如同在MATLAB中键入命令一般,这种文件称为脚本文件,由于脚本文件以m为扩展名,它常称为M文件。脚本文件为文本形式的,对跨平台处理十分有利。 使用M文件,可以把命令保存在磁盘上,便于以后的访问;同时对使用大的数组也带来的方便; 增加注释可以为脚本中的命令作文挡以免以后忘记。 % 以一个%开头的行是注释行,不被执行,矩阵:matrix meitriks,是matlab进行数据处理和运算的基本元素 大部分运算和命令都是在矩阵的意义进行的 仅有一行或一列的矩阵称为向量 vector vekt n. 向量(又称矢量) 学好线性代数,Matlab基本指令,向量的创建和运算,1. 直接输入向量,向量的输入格式:向量名=x1,x2,xn或=x1 x2 xn x=x1,x2,xn或x=x1 x2 xn 注意:将向量的元素用方括号 括起来, 分量间的各元素之间用空格或逗号分隔,此时输入 的是行向量, 列向量可用转置运算 x1=1 2 4, x2=1,2,1, x3=x1 运行结果 x1 = 1 2 4 x2 = 1 2 1 x3 = 1 2 4,注意: 多条命令可以放在一行中 同行中各条命令用逗号隔开,表示需要显示结果 各条命令可用分号隔开,表示禁止结果显示 x1=1 2 4, x3=x1 运行结果 x1 = 1 2 4 x3 = 1 2 4 x1=1 2 4; x3=x1 运行结果 x3 = 1 2 4,2.冒号创建向量,冒号表达式可以产生一个行向量,一般格式是: e1:e2:e3 其中e1为初始值,e2为步长,e3为终止值。 注:步长e2 =1时,可用初始值:终止值的格式e1:e3 x1=3.4:6.7, x2=3.4:2:6.7, x3=2.6:-0.8:0 运算结果: x1 = 3.4000 4.4000 5.4000 6.4000 x2 = 3.4000 5.4000 x3 = 2.6000 1.8000 1.0000 0.2000,3.生成线性等分向量,指令x=linspace(a,b,n) 在a,b区间产生 n 个等分点(包括端点) linspace 线性等分向量 其调用格式为:linspace(a,b,n) 其中a和b是生成向量的第一个和最后一个元素,n是元素总数。 x=linspace(0,1,5) 运行结果: x = 0 0.2500 0.5000 0.7500 1.0000,工作空间workspace,在Matlab窗口创建向量后并运行后,向量就存在于工作空间,可以被调用。 下面介绍运算,先介绍运算符号和一些函数调用,,常用的数学运算符, - 加 - 减 * - 乘 - 左除 / - 右除 - 幂,常用数学函数,sin () - 正弦 cos () - 余弦 tan () - 正切 cot() - 余切 asin () - 反正弦 acos() - 反余弦 atan() - 反正切 acot() - 反余切 sqrt() - 求平方根 abs () - 求绝对值,square root square skw 平方 root ru:t, rut 根 absolute bslju:t adj. 绝对的; absolute value 绝对值,exp() - 以e为底的指数函数 exponent ikspunnt n. 数 指数; exponential function 指数函数 log () - 自然对数(以e为底的对数 ln) log10 () - 求以10为底的对数 log2 () - 求以2为底的对数 logarithm lrim n. 数 对数 logarithmic function lrimik 对数函数 另外loga(b),根据换底公式可表示为: log(b)/log(a) Power function 幂函数 conj () - 共扼复数 imag(x) - 求x的虚部 real(x) - 求x的实部 sign(x) - 求x的符号,特殊常量,Pi 圆周率 inf 无穷大 ,由零做除数引入此常量 infinite infint 数 无穷大,向量的运算,设x=x1 x2 x3; y=y1 y2 y3;为两个三维向量,a,b为标量。 向量的数乘:a*x=a*x1 a*x2 a*x3 向量的平移: x+b=x1+b x2+b x3+b 向量和: x+y=x1+y1 x2+y2 x3+y3 向量差: x-y=x1-y1 x2-y2 x3-y3 数的乘幂: 如 a2,例如: x1=1 2 4, x2=1,2,1,运行结果:x1 =1 2 4 x2 = 1 2 1 数乘:2*x1 ans = 2 4 8 平移:2+x1 ans =3 4 6 和:x1+x2 差:x1-x2,元素群运算(四则运算):单个元素的成批运算:,x.*y=x1*y1 x2*y2 x3*y3 (元素群乘积) x./y=x1/y1 x2/y2 x3/y3 (元素群右除,右边的y做分母) x.y=y1/x1 y2/x2 y3/x3 (元素群左除,左边的x做分母) x=1 2 4, y=1,2,1 运行结果:x =1 2 4 y= 1 2 1 x.*y= 1 4 4 x./y= 1 1 4 x.y= 1.0000 1.0000 0.2500,元素群运算(四则运算):单个元素的成批运算:,x.5=x15 x25 x35 (元素群乘幂) 2.x=2x1 2x2 2x3 (元素群乘幂) x.y=x1y1 x2y2 x3y3 (元素群乘幂) power,程序:x=1 2 4, y=1,2,1 运行结果: x=1 2 4, y=1 2 1 x.5= 1 32 1024 2.x= 2 4 16 x.y= 1 4 4,元素群函数的计算,Matlab有许多内部函数,可直接作用于向量产生一个同维的函数向量。 x=linspace(0,4*pi,100);(产生100维向量x) y=sin(x); (y也自动为100维向量) y1=sin(x).2; y2=exp(-x).*sin(x); 观察结果,创建矩阵(数值矩阵的创建),1. 直接输入法创建简单矩阵。 A=1 2 3 4; 5 6 7 8; 9 10 11 12 约定:矩阵的元素必须放在方括号内, 每行的元素间使用空格或逗号隔开 行与行之间用分号隔开, 元素可以是数值或表达式 B=-1.3,sqrt(3);(1+2)*4/5,sin(5);exp(2),6 观察运行结果,计 算,输入下面Matlab指令 A=4 2 3;1 3 2;1 3 3;3 2 2, B=35 20 60 45;10 15 50 40;20 12 45 20 C=A*B 请自行计算观看结果,创建矩阵(符号矩阵的创建),用指令“syms”说明符号变量。 syms a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34 b11 b12 b13 b14 b21 b22 b23 b24 b31 b32 b33 b34 A1=a11 a12 a13 a14 ;a21 a22 a23 a24; a31 a32 a33 a34, B1=b11 b12 b13 b14 ;b21 b22 b23 b24; b31 b32 b33 b34 运行,syms a b c d e f g h A= a b; c d,B=e f;g h A*B a*e+b*g, a*f+b*h c*e+d*g, c*f+d*h,2.矩阵运算:,矩阵的四则运算 + - * / 矩阵的乘方 矩阵乘方 An .元素对元素的乘方 求行列式:det(A) determinant dit:minnt n.数 行列式 求逆:inv(A) inverse inv:s n.逆 注意:这两种运算都要求矩阵A为方阵 求转置: A 用符号来表示和实现,1.矩阵的四则运算 (1) 矩阵加减运算 假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。 运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。 C=A1+B1 D=A1-B1,(2) 矩阵乘法 假定有两个矩阵A和B,若A为mn矩阵,B为np矩阵,则C=A*B为mp矩阵。 C=A1*B1 数乘 syms c, cA=c*A1,(3)左除和右除,左除“ ”: 求矩阵方程AX=B的解;( A 、B的行要保持一致) 解为 X=AB; 当A为方阵且可逆时有X=AB=inv(A)*B; 右除“ / ”: 求矩阵方程XA=B的解 (A 、B的列要保持一致) 解为 X=B/A , 当A为方阵且可逆时有X=B/A=B*inv(A),例:求矩阵方程: 设A、B满足关系式:AB2B+A,求B。 其中A=3 0 1; 1 1 0; 0 1 4。 解:有(A-2I)BA 程序 : A=3 0 1; 1 1 0;0 1 4 B=inv(A-2*eye(3)*A, B=(A-2*eye(3)A 观察结果: B = 5 -2 -2 4 -3 -2 -2 2 3,矩阵的转置、逆、行列式:,转置A 求逆:inv(A) 求行列式:det(A) 注意:这两种运算都要求矩阵A为方阵! 程序: H=1 2 3 ; 2 1 0 ; 1 2 3 , H det(H), inv(H),H = 1 2 3 2 1 0 1 2 3 H = 1 2 1 2 1 2 3 0 3 det(H) = 0 inv(H) Warning: Matrix is singular to working precision. ans = Inf Inf Inf Inf Inf Inf Inf Inf Inf,矩阵下标 MATLAB通过确认矩阵下标,可以对矩阵进行插入子块,提取子块和重排子块的操作。 A(i,j):提取第i行,第j列元素, A(:,j):提取第j列元素 A(i,:):提取第m行元素 A(i1:i2,j1:j2):提取第i1行到第i2行和第j1列到第j2列的所有元素(提取子块)。,程序: A2=A1(:,1:3), B1, %提取A1中的前三列 G=A2*B1,3.分块矩阵(矩阵的标识),1.矩阵元素的标识 : A(i,j)表示矩阵A 的第 i 行 j 列的元素;,H=1 2 3 ; 2 1 0 ; 1 2 3 , H(1,3) -提取第1行、第3列元素 H(:,3)-提取第3列元素 H(2,:) -提取第2行元素 H(1:2,2:3)-提取第1到2行、第2到3列元素 运行结果: H= 1 2 3 2 1 0 1 2 3 H(1,3)=3 H(:,3)= 3 0 3 H(2,:) =2 1 0 A(1:2,2:3)= 0 1 1 0,2.向量标识方式 A(vr,vc): vr=i1,i2,ik、vc=j1,j2,ju 分别是含有矩阵A的行号和列号的单调向量。 A(vr,vc)是取出矩阵A的第i1,i2,ik行与j1,j2,ju列交叉处的元素所构成新矩阵,可实现对矩阵的提取和分块。 vector vekt n. 向量 row ru n. 行 column klm n 列 常用的:vr=: 表示取出全部行 vc=: 表示取出全部列,程序:A=1 0 1 1 2;0 1 -1 2 3;3 0 5 1 0;2 3 1 2 1, vr=1, 3;vc=1, 3; A1=A(vr, vc) 取出A的1、3行和1、3列的交叉处元素构成新矩阵A1 A(:,vc), A(vr,:) 观察结果 A = 1 0 1 1 2 0 1 -1 2 3 3 0 5 1 0 2 3 1 2 1 A1 = 1 1 3 5 A(:,vc) =1 1 0 -1 3 5 2 1 A(vr,:)= 1 0 1 1 2 3 0 5 1 0,MATLAB通过确认矩阵下标,可以对矩阵进行插入子块,提取子块和重排子块的操作。,A(m,n):提取第m行,第n列元素 A(:,n):提取第n列元素 A(m,:):提取第m行元素 A(m1:m2,n1:n2):提取第m1行到第m2行和第n1列到第n2列的所有元素(提取子块)。,说明: 我们不仅可以用A(vr,vc)对矩阵进行分块,也可以定义子矩阵,然后再把他们拼接大矩阵,例:将A分为四块,并把它们赋值到矩阵B中,观察运行后的结果。,程序:A=1 0 1 1 2;0 1 -1 2 3; 3 0 5 1 0;2 3 1 2 1, A11=A(1:2,1:2), A12=A(1:2,3:5), A21=A(3:4,1:2), A22=A(3:4,3:5) B=A11 A12;A21 A22子矩阵拼接成一个大矩阵 运行结果: A = 1 0 1 1 2 0 1 -1 2 3 3 0 5 1 0 2 3 1 2 1 A11 = 1 0 A12 = 1 1 2 0 1 -1 2 3 A21 = 3 0 A22 = 5 1 0 2 3 1 2 1 B = 1 0 1 1 2 0 1 -1 2 3 3 0 5 1 0 2 3 1 2 1,(2)矩阵的修改和提取,1.修改:要修改已经定义好的,只需对它的子 块重新赋值。 如果在取子块时, 例:修改矩阵A,将它的第1行变为0。 程序: A=1 0 1 1 2; 0 1 -1 2 3; 3 0 5 1 0; 2 3 1 2 1 A(1,:)=0 0 0 0 0; 运行结果:A =1 0 1 1 2 0 1 -1 2 3 3 0 5 1 0 2 3 1 2 1 A =0 0 0 0 0 0 1 -1 2 3 3 0 5 1 0 2 3 1 2 1,2.删除:如果在矩阵子块赋值为空矩阵(用 表示),则相当于删除除相应的矩阵子块. 删除上面矩阵A的第1、3行 删除矩阵A的第2、4列 程序: A(1,3,:)= A(:,2,4)= 结果 A =1 0 1 1 2 0 1 -1 2 3 3 0 5 1 0 2 3 1 2 1 A = 0 1 -1 2 3 2 3 1 2 1 A = 1 1 2 0 -1 3 3 5 0 2 1 1,(4)生成特殊矩阵,全1阵 ones(n), 生成 的全1阵 ones(m,n), 生成 的全1阵 ones(size(A)生成与矩阵A同维数的全1阵 全零阵: zeros, zeros(m,n), zeros(size(A),(4)生成特殊矩阵,单位阵: eye(n), eye(m,n) 随机阵:矩阵的每一个元素是0,1上的随机数 rand(m,n), rand(n)=rand(n,n)用于随机模拟,常和rand(seed,k)配合使用。,将rand指令运行多次,观察结果。 程序: y1=rand(1,5), y2=rand(1,5), 如果希望运行结果保持一致,需要和rand(seed,k), 配合使用。 rand(seed,3), x1=rand(1,5), rand(seed,3), x2=rand(1,5) 结果,常用矩阵函数,det(A) : 方阵的行列式; rank(A): 矩阵的秩; eig(A): 方阵的特征值和特征向量; trace(A): 矩阵的迹; rref(A): 初等变换阶梯化矩阵A svd(A): 矩阵奇异值分解。 cond(A): 矩阵的条件数;,数据的简单分析,1.当数据为行向量或列向量时,函数对整个向量进行计算. 2.当数据为矩阵时,命令对列进行计算,即把每一列数据当成同一变量的不同观察值。 常用的数据分析函数:max(求最大)、min(求最小)、mean(求平均值)、sum(求和)、std(求标准差)、cumsum(求累积和)、median(求中值)、diff(差分)、sort(升序排列)、sortrows(行升序排列)等等。,观察:生成一个36的随机数矩阵,并将其各列排序、求各列的最大值与各列元素之和。 程序 A=rand(3,6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论