《matlab7教程课件第2章数值运算.ppt》由会员分享,可在线阅读,更多相关《matlab7教程课件第2章数值运算.ppt(153页珍藏版)》请在三一办公上搜索。
1、MATLAB 7.0从入门到精通,主要讲述内容,第1章 MATLAB简介第2章 数值运算第3章 单元数组和结构第4章 字符串第5章 符号运算第6章 MATLAB绘图基础第7章 程序设计第8章 计算方法的MATLAB实现第9章 优化设计第10章 Simulink仿真初探,第2章 数值运算,首先matlab中支持复数,表示方法为a=m+ni(j),当n是表达式时,n与i(j)之间必须要加乘号。另外也可以用complex(x,y)来产生复数。i,j不要作为变量名称,以免生成数据时发生误解。,2.1MATLAB中的变量,a=1+2ia=1.0000+2.0000i a=1+2*ia=1.0000+2.
2、0000i,b=sin(2)+cos(2)i?b=sin(2)+cos(2)i|Error:Unexpected MATLAB expression.b=sin(2)+cos(2)*ib=0.9093-0.4161i,x=sin(2);y=cos(3);z=complex(x,y)z=0.9093-0.9900i z=complex(x)z=0.9093,i+2ians=0+3.0000i i+2*ians=0+3.0000i,i=10;i+2ians=10.0000+2.0000i i+2*ians=30 5+2ians=5.0000+2.0000i 5+2*ians=25,MATLAB中的
3、变量必须以字母打头,之后可以是任意字母、数字或下划线,变量名区分字母大小写,变量名不超过19个字符,默认变量名为ans。除此之外还包含一些特殊的变量。Whos命令能够显示变量的信息。,2.2 MATLAB的数值运算基础,A/B相当于B*inv(A)AB相当于inv(A)*B,2.3数组及向量运算,1、数组构造数组及向量的生成可直接在方括号内输入数据,也可以不加括号,同样生成数组。(1)利用first:increment:last来创建等差数组,a=(first:increment:last),increment为增量。a=(0:0.5:2)a=0 0.5000 1.0000 1.5000 2.
4、0000,(2)利用MATLAB函数linspace来创建数组,形成一个等差数列关系的数组,number为数组个数linspace(firstvalue,lastvalue,number)。a=linspace(0,2,5)a=0 0.5000 1.0000 1.5000 2.0000,(3)利用logspace函数来创建一个对数分隔的数组,形成一个等比数列关系的数组,logspace(firstvalue,lastvalue,number)。数值从10的firstvalue次幂到10的lastvalue次幂结束。a=logspace(0,2,5)a=1.0000 3.1623 10.0000
5、 31.6228 100.0000,2、数组运算(1)数组与标量的四则运算是指数组中的每个元素与标量进行加、减、乘、除运算。数组的指数运算exp,以2为底的指数运算pow2,自然对数运算log,常用对数运算log10,以2为底的对数运算log2,开方运算sqrt。是数组中每个元素进行相对应的运算。(2)数组与数组之间进行运算时,每个数组必须具有相同的维数,且必须用点乘或点除。,查询x数组的第n个元素,x(n);查询x数组的第2到4个元素,x(2:4);查询x数组的第4到最后1个元素,x(4:end);查询x数组的第3、2、1个元素,x(3:-1:1);查询x数组的小于n元素,x(find(xn
6、);查询x数组的第4、2、5个元素,x(4 2 5);将x数组的第n个元素赋值为A,x(n)=A;查询数组A的第2行,第3列的元素,A(2,3);查询数组A的第3行所有的元素,A(3,:);查询数组A的第2列转置后所有的元素,(A(:,2)。,数组排序:sort(x)命令将数组x中的元素按升序排列。当x是多维数组时,命令是将x中各列元素按升序排列;当x是一个字符型单元数组,命令是将x中的元素按ASC码升序排列;当x数据类型是复数,命令将按各元素的模升序排列;y=sort(x,mode)中,mode决定排序方式,选择ascend将按升序排列,选择descend将按降序排列,y与x保持相同大小。,
7、3、向量运算在高等数学中,向量的点积是指两个向量在其中某一向量方向上的投影的乘积,它通常来定义向量的长度,是个数值。c=dot(a,b)表示向量a与b的点积放在c中,a与b长度必须相同。在高等数学中,向量的叉积是过两个向量的交点并且与这两个向量所在平面相垂直的向量,是个向量。c=cross(a,b)表示向量a与b的叉积放在c中,a与b必须是三个元素的向量,生成的仍然是一个三维的向量。,2.4 矩阵及其运算,1、矩阵的生成和基本操作矩阵的生成通常有四种方法:(1)在命令窗口中直接输入矩阵;(2)通过语句和函数产生矩阵;(3)在M文件中建立矩阵;(4)从外部的数据文件中导入矩阵。求方阵行列式的函数
8、是det(determinant),求矩阵秩的函数是rank,求矩阵逆阵的函数是inv(inverse matrix),size命令能测试矩阵的大小。,2、矩阵与常数的四则运算矩阵与常数的四则运算是指矩阵各元素与常数之间的四则运算,但是矩阵与常数进行除法时,常数通常只能做除数。,3、矩阵之间的四则运算矩阵与矩阵之间的加减法就是矩阵中各元素之间的加减运算,矩阵必须具有相同的维数。矩阵与矩阵之间的乘法与除法要符合矩阵之间的乘除法则。大小完全相同的方阵即可进行乘除运算,也可以进行点乘点除运算,但结果是不同的。矩阵的左除为矩阵乘法的逆运算,若AB=C,则B=AC,矩阵左除常用于解线性方程组AX=B;矩
9、阵的右除也为矩阵乘法的逆运算,若AB=C,则A=C/B。,4、矩阵的特征参数运算矩阵的指数运算expm,自然对数运算logm,开方运算sqrtm。其中矩阵必须是方阵。,矩阵的特征值运算使用函数eig或eigs计算;条件数的值代表矩阵“病态”程度的大小。计算矩阵的条件数值cond(a),计算1-范数矩阵条件值condest(a),计算矩阵的逆条件数值rcond(a);矩阵的奇异值一般通过函数svd(a)和svds(a)计算得到;矩阵范数运算norm(a),矩阵1-范数运算norm(a,1),矩阵2-范数运算norm(a,2),矩阵无穷大范数运算norm(a,inf),矩阵F-范数运算norm(a
10、,fro);矩阵中的秩用函数rangk(a)求得;矩阵的正交化运算由函数orth(a)得到;求矩阵对角线所有元素之和用trace(a)计算;矩阵的伪逆运算pinv(a);矩阵函数计算funm(a,fun),a为矩阵,fun为调用函数名,函数名不带m。,5、矩阵的分解运算三角分解(lu)高斯消去法又称LU分解。l,u=lu(x)产生一个“心理”下三角矩阵(下三角矩阵和置换矩阵的乘积)l和一个上三角矩阵u,使x=l*u成立,x可以不是方阵。l,u,p=lu(x)产生一个单位下三角矩阵l,一个上三角矩阵u和交换矩阵p,使它们满足P*x=l*u。,x=1 2;3 4;l,u=lu(x)l=0.3333
11、 1.0000 1.0000 0u=3.0000 4.0000 0 0.6667 l,u,p=lu(x)l=1.0000 0 0.3333 1.0000u=3.0000 4.0000 0 0.6667p=0 1 1 0,正交分解(qr)q,r=qr(a)产生一个与a维数相同的上三角矩阵r和一个正交矩阵q(q*q=单位矩阵),使它们满足a=q*r。q,r,e=qr(a)产生一个交换矩阵e、一个上三角矩阵r和正交矩阵q,使它们满足a*e=q*r。q,r=qr(a,0)对矩阵a进行有选择的qr分解。当矩阵a为m*n并且mn,则只产生具有前n列的正交矩阵q。R=qr(a)只产生矩阵r,且满足r=cho
12、l(a*a)。,特征值分解(eig)v,d=eig(x)命令生成两个矩阵v和d,其中v是以矩阵x的特征向量作为列向量组成的矩阵,d是由矩阵x的特征值作为主对角线元素构成的对角矩阵,它们满足x*v=v*d。v,d=eig(a,b)命令对矩阵a、b作广义特征值分解,它们满足a*v=b*v*d。,Chollesky分解(chol)当矩阵a(n*n)对称正定时,则存在唯一的对角元素为正的上三角矩阵r,使得a=r*r,这既是Chollesky分解。,奇异值分解(svd)u,s,v=svd(x)命令产生一个与矩阵x维数相同的对角矩阵s、正交矩阵u和正交矩阵v,使它们满足x=u*s*v。u,s,v=svd(
13、x,0)命令进行奇异值的最佳分解。X为m*n阶矩阵,当mn时,生成的矩阵u只有前n列元素被计算出来,且s为n*n阶矩阵。,6、矩阵的一些特殊处理函数矩阵的变维reshape(x,m,n)命令将矩阵x的所有元素分配到一个m*n的新矩阵,当矩阵x的元素数不是m*n时,返回错误信息。原则按列优先。reshape(x,m,n,p)和reshape(x,m,n,p)命令一样返回由矩阵x的元素组成的m*n*p*多维矩阵,元素个数必须相等。,矩阵的变向rot90(a)命令返回矩阵a按逆时针旋转90度所得的矩阵。rot90(a,k)命令返回矩阵a按逆时针旋转90*k度所得的矩阵。flipud(x)命令将矩阵x
14、上下翻转。fliplr(x)命令将矩阵x左右翻转。flipdim(x,dim)命令将矩阵x的dim维翻转。,选取数组上三角或下三角矩阵tril(a,k)命令的功能是提取矩阵的下三角矩阵,k为正数时,非零元素向右上角错k行,k为负数时,非零元素向左下角错k行。triu(a,k)命令的功能是提取矩阵的上三角矩阵,k为正数时,非零元素向右上角错k行,k为负数时,非零元素向左下角错k行。,a=1 2 3 4;2 3 4 5;3 4 5 6;4 5 6 7;tril(a)ans=1 0 0 0 2 3 0 0 3 4 5 0 4 5 6 7,a=1 2 3 4;2 3 4 5;3 4 5 6;4 5 6
15、 7;triu(a,1)ans=0 2 3 4 0 0 4 5 0 0 0 6 0 0 0 0 triu(a,-1)ans=1 2 3 4 2 3 4 5 0 4 5 6 0 0 6 7,a=1 2 3 4;2 3 4 5;3 4 5 6;4 5 6 7;triu(a)ans=1 2 3 4 0 3 4 5 0 0 5 6 0 0 0 7,a=1 2 3 4;2 3 4 5;3 4 5 6;4 5 6 7;triu(a,1)ans=0 2 3 4 0 0 4 5 0 0 0 6 0 0 0 0 triu(a,-1)ans=1 2 3 4 2 3 4 5 0 4 5 6 0 0 6 7,7、特殊
16、矩阵的生成空矩阵:空矩阵用表示,空矩阵大小为零,但变量名存在于工作空间。零矩阵:a=zeros(m,n),a=zeros(size(b)其中b是已存在的矩阵,若a是方阵也可a=zeros(n)。全1矩阵:a=ones(m,n),a=ones(size(b)其中b是已存在的矩阵,若a是方阵也可a=ones(n)。单位矩阵:a=eye(m,n),a=eye(size(b)其中b是已存在的矩阵,若a是方阵也可a=eye(n)。,对角矩阵:对角矩阵指的是对角线上的元素为任意数,其它元素为零的矩阵。a=diag(v,k)中,v是向量,k为向量v偏离主对角线的列数,k等于零时表示v为主对角线,k大于零时表
17、示v在主对角线以上,k小于零时表示v在主对角线以下。a=diag(v)相当于a=diag(v,0)。,v=1 2 3;a=diag(v)a=1 0 0 0 2 0 0 0 3,v=1 2 3;a=diag(v,1)a=0 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0,v=1 2 3;a=diag(v,2)a=0 0 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0,v=1 2 3;a=diag(v,-1)a=0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0,v=1 2 3;a=diag(v,-2)a=0 0 0 0 0 0
18、0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0,随机矩阵:随机矩阵是指矩阵元素由随机数构成的矩阵。rand(n)命令生成n*n阶随机矩阵,生成矩阵的元素值在区间(0.0,1.0)之间。rand(m,n)命令生成m*n阶随机矩阵,生成矩阵的元素值在区间(0.0,1.0)之间。randn(n)命令生成n*n阶随机矩阵,生成矩阵的元素值在服从正态分布N(0,1)。randn(m,n)命令生成m*n阶随机矩阵,生成矩阵的元素值在服从正态分布N(0,1)。,魔方矩阵:魔方矩阵是个方阵,其每一行,每一列,每条主对角线的和都相等(2阶除外)。A=magic(n)范德蒙德矩阵:a=
19、vender(v),其中a(i,j)=v(i)n-j。,矩阵重组用新的行或列取代原有矩阵的行或列。a=1 2 3;4 5 6;5 4 3;b=1 1 1;2 2 2;3 3 3;b(1,:)=a(1,:)b=1 2 3 2 2 2 3 3 3 b(:,2)=a(:,1)b=1 1 3 2 4 2 3 5 3,从矩阵中选取子矩阵 a=1 2 3;4 5 6;5 4 3a=1 2 3 4 5 6 5 4 3 b=a(1:2,2:3)b=2 3 5 6,将矩阵改成行向量或列向量 a=1 2 3;4 5 6;5 4 3a=1 2 3 4 5 6 5 4 3 b=a(:)b=1 4 5 2 5 4 3
20、6 3,矩阵的水平连接用horzcat(a,b)或a,b。a=1 2;3 4;b=5 6;7 8;a,bans=1 2 5 6 3 4 7 8 horzcat(a,b)ans=1 2 5 6 3 4 7 8,矩阵的垂直连接用vertcat(a,b)或a;b。a=1 2;b=3 4;a;bans=1 2 3 4 vertcat(a,b)ans=1 2 3 4,矩阵的尺寸信息length命令是获取矩阵最长方向的长度;ndims命令是获取矩阵的维数;numel命令是获取矩阵的元素个数;size命令是获取矩阵大小信息,及几行几列。,2.5 稀疏矩阵,在MATLAB中用两种方式来存储矩阵,即满矩阵存储方
21、式和稀疏矩阵存储方式,简称满矩阵和稀疏矩阵。满矩阵中所有的数值都要存储,会造成存储空间的浪费和计算速度的降低,而稀疏矩阵是以非零元素行标和列标来表示的,可以节省空间,也可以提高计算速度。,1、稀疏矩阵的生成speye(n)生成n阶单位稀疏矩阵,speye(m,n)也生成一个单位稀疏矩阵,其维数是m和n中较小的,注意:它所生成的矩阵仍然是m*n的矩阵,它只是在显示主对角线上的元素。speye(size(a)生成与a大小相等的稀疏矩阵,主对角线上元素为1,其它为0。spones(a)创建矩阵a中非零元素为1的稀疏矩阵。,speye(3)ans=(1,1)1(2,2)1(3,3)1 speye(3)
22、+1ans=2 1 1 1 2 1 1 1 2,speye(3,4)ans=(1,1)1(2,2)1(3,3)1 speye(3,4)+1ans=2 1 1 1 1 2 1 1 1 1 2 1,speye(4,3)ans=(1,1)1(2,2)1(3,3)1 speye(4,3)+1ans=2 1 1 1 2 1 1 1 2 1 1 1,a=1 2 3;4 5 6a=1 2 3 4 5 6 speye(size(a)ans=(1,1)1(2,2)1 speye(size(a)+1ans=2 1 1 1 2 1,2、稀疏矩阵与满矩阵的转换a=sparse(x)将满矩阵x转化为稀疏矩阵a。a=sp
23、arse(i,j,s,m,n,nzm)生成m*n阶的稀疏矩阵a,向量s的元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,nzm为给出的矩阵存储的非零元素的个数,不能小于s的长度,此时nzmax是返回用于存储非零值的空间长度。a=sparse(i,j,s,m,n)生成m*n阶的稀疏矩阵a,向量s的元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,其中nzmax=length(s)。,x=1 2;3 4x=1 2 3 4 a=sparse(x)a=(1,1)1(2,1)3(1,2)2(2,2)4,x=1 0;3 0 x=1 0 3 0 a=sparse(x)a=(1,1)1(2,
24、1)3,s=sparse(1,2,3,4,3,2,1,3,1,2,3,4,4,4,3)?Error using=sparseIndex exceeds matrix dimensions.,s=sparse(1,2,3,4,3,2,1,3,1,2,3,4,4,4)s=(3,1)3(2,2)2(1,3)1(4,3)4 n=nzmax(s)n=4,s=sparse(1,2,3,4,3,2,1,3,1,2,3,4,4,4,8)s=(3,1)3(2,2)2(1,3)1(4,3)4 n=nzmax(s)n=8,a=sparse(i,j,s)生成m*n阶的稀疏矩阵a,向量s的元素分布在以向量i的对应值和向
25、量j的对应值为坐标的位置上,其中m=max(i),n=max(j)。a=sparse(m,n)就是 a=sparse(,m,n,0)的简化形式。生成n阶稀疏方阵时必须用a=sparse(n,n),不能用a=sparse(n)。s=full(x)将稀疏矩阵x转化为满矩阵S。,s=full(sparse(1,2,3,4,3,2,1,3,1,2,3,4)s=0 0 1 0 2 0 3 0 0 0 0 4,s=sparse(1,2,3,4,3,2,1,3,1,2,3,4,5,5)+1s=1 1 2 1 1 1 3 1 1 1 4 1 1 1 1 1 1 5 1 1 1 1 1 1 1,s=sparse
26、(5,5)s=All zero sparse:5-by-5 a=sparse(5)a=(1,1)5,s=full(sparse(5,5)s=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,i=find(x)返回矩阵x的非零元素的位置,按照列数优先的原则选取。i,j=find(x)返回矩阵x的非零元素的所在行和所在列的位置,按照列数优先的原则表述。i,j,v=find(x)除了返回矩阵x的非零元素的行列之外,还返回矩阵中非零元素的值,按照列数优先的原则表述。,x=0 2 0 0;3 0 0 6;0 0 7 0;0 0 0 2;i=find(x)
27、i=2 5 11 14 16,x=0 2 0 0;3 0 0 6;0 0 7 0;0 0 0 2;i j=find(x)i=2 1 3 2 4j=1 2 3 4 4,x=0 2 0 0;3 0 0 6;0 0 7 0;0 0 0 2;i j v=find(x)i=2 1 3 2 4j=1 2 3 4 4v=3 2 7 6 2,3、稀疏矩阵的操作n=nnz(s)返回矩阵s中非零元素的个数。d=nnz(s)/prod(size(s)表示稀疏矩阵s中非零元素的密度。prod表示矩阵s行数与列数的乘积,既表明s中元素的总个数。nonzeros返回非零值。,x=0 2 0 0;3 0 0 6;0 0 7
28、 0;0 0 0 2;n=nnz(x)n=5,x=0 2 0 0;3 0 0 6;0 0 7 0;0 0 0 2;d=nnz(x)/prod(size(x)d=0.3125,x=0 2 0 0;3 0 0 6;0 0 7 0;0 0 0 2;nonzeros(x)ans=3 2 7 6 2,r=spones(s)生成一个与稀疏矩阵s结构相同的稀疏矩阵r,但是矩阵s中的非零元素都用1替代。issparse(s)判断s是否是稀疏矩阵,返回1则说明矩阵s是稀疏矩阵,返回0则说明矩阵s不是稀疏矩阵。,x=0 2 0 0;3 0 0 6;0 0 7 0;0 0 0 2;spones(x)ans=(2,1
29、)1(1,2)1(3,3)1(2,4)1(4,4)1,x=0 2 0 0;3 0 0 6;0 0 7 0;0 0 0 2;issparse(x)ans=0 issparse(sparse(x)ans=1,4、稀疏矩阵的图形显示为了形象地显示稀疏矩阵的密度,可以用稀疏矩阵图像化函数spy,其语法格式如下:spy(s)输出任意稀疏矩阵的图形,其横坐标表示列数,纵坐标表示行数。该图形中对非零元素相应的坐标显示一个圆点,圆点的颜色为蓝色。圆点大小与非零元素的数值无关。对于矩阵中零元素相应位置显示空白。spy(s,markersize)通过markersize改变圆点大小。spy(s,linespec,
30、markersize)通过linespec改变标记的类型和颜色。,a=1 0 0 9 0 0;0 3 0 0 5 0;0 0 3 0 0 4;2 0 0 0 0 0a=1 0 0 9 0 0 0 3 0 0 5 0 0 0 3 0 0 4 2 0 0 0 0 0 spy(a),a=1 0 0 9 0 0;0 3 0 0 5 0;0 0 3 0 0 4;2 0 0 0 0 0a=1 0 0 9 0 0 0 3 0 0 5 0 0 0 3 0 0 4 2 0 0 0 0 0 spy(a,35),a=1 0 0 9 0 0;0 3 0 0 5 0;0 0 3 0 0 4;2 0 0 0 0 0a=1
31、 0 0 9 0 0 0 3 0 0 5 0 0 0 3 0 0 4 2 0 0 0 0 0spy(a,*,20),a=1 0 0 9 0 0;0 3 0 0 5 0;0 0 3 0 0 4;2 0 0 0 0 0a=1 0 0 9 0 0 0 3 0 0 5 0 0 0 3 0 0 4 2 0 0 0 0 0spy(a,o,20),a=1 0 0 9 0 0;0 3 0 0 5 0;0 0 3 0 0 4;2 0 0 0 0 0a=1 0 0 9 0 0 0 3 0 0 5 0 0 0 3 0 0 4 2 0 0 0 0 0spy(a,+,20),2.6 多项式运算,多项式(polynomi
32、al),1、多项式的四则运算多项式的四则运算主要是加、减、乘、除运算,加减运算时向量的大小必须相等,没项的用零补,乘法运算t=conv(t1,t2),除法运算t r=deconv(t1,t2),t多项式相除后的商向量,r多项式相除后的余向量。,x=1 2 3;y=2 3 4;z=conv(x,y)z=2 7 16 17 12,x=1 2 3;y=2 7 16 17 12;t,r=deconv(y,x)t=2 3 4r=0 0 0 0 0,2、多项式的导数和微分多项式的导数运算用函数polyder实现,其调用方式为:k=polyder(p),返回多项式p的导数,k仍是一系数多项式;k=polyd
33、er(a,b)返回多项式a与多项式b乘积的导数,k仍是一系数多项式;p,q=polyder(a,b)返回多项式a除以b的商的导数,并以p/q的格式表示,参照商的导数规则。c=poly2sym(b)命令实现多项式符号化。c=poly2sym(b,v)自变量用先定义好的符号变量v指定。,x=1 2 3;y=2 7 16 17 12;p,q=polyder(y,x)p=4 19 52 78 72 27q=1 4 10 12 9,a=2 3 4 5;b=polyder(a);c=poly2sym(b)c=6*x2+6*x+4 b=poly2sym(a,y)?Undefined function or
34、variable y.syms y b=poly2sym(a,y)b=2*y3+3*y2+4*y+5,a=1 2 3;b=2 3 4;k=polyder(conv(a,b)k=8 21 32 17 k=polyder(a,b)k=8 21 32 17,a=1 2 3 4;b=1 2;p,q=polyder(a,b)p=2 8 8 2q=1 4 4,多项式的积分运算是采用polyint函数来实现的,其调用方式如下:k=polyint(p,m),返回多项式p的积分,设积分的常数项为m;k=polyint(p),返回多项式p的积分,设积分的常数项为零。,a=1 2 3;k=poly(a,8)k=po
35、lyint(a,8)k=0.3333 1.0000 3.0000 8.0000 k=polyint(a)k=0.3333 1.0000 3.0000 0,3、多项式的估值运算多项式的估值,即求给定点的多项式函数的值,用polyval(p,s)和polyvalm(p,s)来实现,后者实现的是矩阵运算。,a=2 5 0 4 1 4;b=polyval(a,3 4)b=934 3400 b=polyvalm(a,3 4)?Error using=polyvalm at 29Matrix must be square.,a=2 5 0 4 1 4;polyval(a,1 2;3 4)ans=16 16
36、6 934 3400 polyvalm(a,1 2;3 4)ans=3166 4608 6912 10078,a=2 5 0 4 1 4;polyval(a,1 2;3 4;5 6)ans=16 166 934 3400 9484 22186 polyvalm(a,1 2;3 4;5 6)?Error using=polyvalm at 29Matrix must be square.,4、多项式的根和由根创建多项式多项式的求根运算使用函数roots来实现,其调用格式如下:r=roots(c)返回多项式c的所有根r。t=2 3 4 5;b=roots(t)b=-1.3711-0.0644+1.
37、3488i-0.0644-1.3488i,与多项式求根相反的过程是由根创建多项式,其调用格式如下:p=poly(r),r为向量时,返回以r为根的多项式系数;p=poly(A),A为方阵时,返回以A的特征值为根的多项式系数。A*x=k*x。,a=1 2;p=poly(a)p=1-3 2 b=1 2;3 4;p=poly(b)p=1.0000-5.0000-2.0000,5、多项式部分分式展开函数residue可以将多项式之比用部分分式展开,也可以将一个部分分式表示为多项式之比。其调用格式如下:r,p,k=residue(a,b)返回多项式之比a/b的部分分式展开,参照下面公式。a,b=resid
38、ue(r,p,k)返回部分分式的多项式向量。,a=2 3-4 1;b=1-3 2;r,p,k=residue(a,b)r=21-2p=2 1k=2 9,r=21;-2;p=2;1;k=2 9;c,d=residue(r,p,k)c=2 3-4 1d=1-3 2,6、多项式的拟合多项式拟合用polyfit(x,y,n)来实现,n是拟合多项式的阶次。x=linspace(0,2*pi,100);y=cos(x);t=polyfit(x,y,6);y1=polyval(t,x);plot(x,y,go,x,y1,b-),x=linspace(0,2*pi,100);y=cos(x);t=polyfi
39、t(x,y,3);y1=polyval(t,x);plot(x,y,go,x,y1,b-),7、曲线拟合图形用户接口为了方便用户的使用,MATLAB7.0提供了支持曲线拟合的图形用户接口。它位于“Figure”窗口的“ToolBasic Fitting”菜单中。为了使用该工具,首先用代拟合的数据画图。,x=0:0.2:10;y=0.25*x+20*sin(x);plot(x,y,ro),2.7 数据分析 2.7.1 基本数据操作函数,1、max与min函数使用方法完全一样,max(a),min(a)中a为向量时,输出单个最大(小)值,a为矩阵时,输出矩阵每列的最大(小)元素;y,i=max(a
40、),y,i=min(a)同上,只是多输出最大(小)元素在向量中或在矩阵中的最大(小)值下标,按列优先的原则。max(a,b),min(a,b)对比两个矩阵的元素,输出最大(小)值。,a=2 5 0 4 1 7;min(a)ans=0 y i=min(a)y=0i=3,a=2 5 0 4 1 7;max(a)ans=7 y i=max(a)y=7i=6,b=1 2;3 4;min(b)ans=1 2 max(b)ans=3 4,b=1 2;3 4;y i=min(b)y=1 2i=1 1 y i=max(b)y=3 4i=2 2,a=2 6 1 5;b=4 1 0 8;min(a,b)ans=2
41、 1 0 5 max(a,b)ans=4 6 1 8,a=1 5 3;2 1 4;b=3 1 2;7 1 8;min(a,b)ans=1 1 2 2 1 4 max(a,b)ans=3 5 3 7 1 8,min函数的应用如图所示的一个用围墙围起来的场地,构建面积为1600平方米,围墙成本:弯曲部分每米40元,直边部分每米30元,使用min函数确定,当分辨率为0.01米时,使围墙成本最小所需的R和L值,并计算最小成本。,解:根据题意有2*R*l+0.5*pi*R*R=1600W=40*pi*R+30*(l+l+2R)化简W=40*pi*R+15*(3200+(4-pi)*R*R)/R),MAT
42、LAB实现最小值求解 R=0.01:0.01:31.92;W=40*pi*R+15*(3200+(4-pi).*R.*R)./R);Wmin,i=min(W)Wmin=5.1575e+003i=1861 R(1861)ans=18.6100 l=(3200-pi*18.61*18.61)/4/18.61l=28.3714,2、mean和median函数mean,median函数用于求向量或矩阵中元素的平均值(中值),mean(a)中a为向量则输出元素平均值,若为矩阵则输出每列元素平均值。median命令是先按升序或降序排列,如果是奇数个数的话,则取中间的数值,如是偶数个数的话,则取中间两个数的
43、平均值。,a=2 5 0 4 1 7;mean(a)ans=3.1667 median(a)ans=3,a=2 6 5 4 2;median(a)ans=4 a=2 6 5 4 2 4;median(a)ans=4 a=2 6 5 4 2 4 5 9;median(a)ans=4.5000,3、sum和prod函数sum(a),prod(a)中a为向量则返回所有元素的和(积),若为矩阵则返回每列的和(积)。,a=2 5 0 4 1 7;sum(a)ans=19 prod(a)ans=0,4、sort函数Sort(a)中a为向量,返回从小到大排列的向量,为矩阵返回个列从小到大排序的矩阵;y,i=
44、sort(a)中i返回新矩阵中元素在原矩阵中的脚标。数组排序:sort(x)命令将数组x中的元素按升序排列。当x是多维数组时,命令是将x中各列元素按升序排列;当x是一个字符型单元数组,命令是将x中的元素按ASC码升序排列;当x数据类型是复数,命令将按各元素的模升序排列;,a=8 3 7;3 9 0;6 4 8;y,i=sort(a)y=3 3 0 6 4 7 8 9 8i=2 1 2 3 3 1 1 2 3,5、三角函数,2.7.2 有限差分类函数,1、diff函数diff函数用于求差分和近似导数,diff(a)中a为向量,则返回a(2)-a(1),a(n)-a(n-1),若为矩阵,则返回矩阵
45、每列的差分;diff(a,n)返回向量或矩阵中第一个非独立维的n阶差分或导数值。,a=2 4 2 8;9 5 3 2;diff(a)ans=7 1 1-6 diff(a,1)ans=7 1 1-6 diff(a,2)ans=-6 0-7 diff(a,3)ans=6-7 diff(a,4)ans=-13 diff(a,5)ans=,2、gradient函数gradient函数用于求近似梯度,df=gradient(f)中f是向量,返回f的数值梯度,fx,fy=gradient(f)中f是矩阵,返回f的数值梯度,fx相当于df/dx,fy相当于df/dy。,习题课1,1、求 的值。2、求2/5和
46、52的值。3、求1 2;2 1*1 1;0 2和1 2;2 1.*1 1;0 2的值。4、求1 2;2 1.2和1 2;2 12的值。5、用两种方法求20100的线性向量间隔为4。6、求11000间分10个点的对数分布向量。,7、已知x为110的整数,写出求y=(x+x2+x3)/(1+sinx/2)的解法。8、已知a=1 4 2 6 7 3 1 8 3 4,写出a(5)的结果,写出输出7 8的命令,写出输出8 1 3 7的命令,写出输出7 4 8的命令,写出输出3 1 7 2的命令,写出1 8 3 4的命令。9、已知a=1 4 2 6 7 3 1 8 3 4,分别对a进行升序和降序排列。10
47、、写出求向量点积和叉积的命令,并说出进行两种运算时对向量的要求。11、写出求矩阵行列式的命令,并说出对矩阵的要求。,12、写出求矩阵秩和求逆阵的命令。13、先讨论2/1 2;3 4、21 2;3 4、1 2;3 4/2、1 2;3 42哪些能输出结果,然后写出结果。14、用矩阵除法解线性方程组AX=B,并讨论线性方程组可否写成XA=B的形式,为什么。15、写出矩阵的指数运算,自然对数运算,开方运算的命令,并对矩阵提出要求。16、已知a=1 2 3 4 5 6;2 3 4 5 6 7,如何把它写成一个34的矩阵,结果是多少。,17、已知a=1 2 3;4 5 6;7 8 9,如何把a进行顺时针2
48、70度的旋转,结果是多少。18、已知a=1 2 3;4 5 6;7 8 9,如何实现a的上下翻转,结果是多少。19、已知a=1 2 3;4 5 6;7 8 9,如何实现a的左右翻转,结果是多少。20、如何生成矩阵1 0 0 0;0 1 0 0;0 0 1 0。21、写出diag(1 2 3,2)和diag(1 2 3,-1)的结果。22、已知a=1 2 3 4;5 6 7 8;4 5 6 7;5 6 7 8,如何从a中提取矩阵6 7 8;5 6 7。,23、已知a=1 2 3;4 5 6,如何把矩阵a写成向量1 2 3 4 5 6。24、已知a=1 2;3 4,b=5 6;7 8,分别使用矩阵
49、水平连接和竖直连接命令合并a,b并分别写出结果。25、分别写出length(1 2 3;4 5 6)和numel(1 2;3 4)的结果。26、写出sparse命令的几种用法,并分别举例说明。27、写出i,j,v=find(x)的含义,并举例说明。28、写出稀疏矩阵中返回非零元素的函数,并举例说明。,29、写出speye(4)和speye(4,8)的结果,他们是否代表相同的矩阵。30、用函数ones和diag分别编写下列矩阵。1 1 1 1 1 1 1;1 3 3 3 3 3 1;1 3 5 5 5 3 1;1 3 5 7 5 3 1;1 3 5 5 5 3 1;1 3 3 3 3 3 1;1
50、 1 1 1 1 1 1(可用a(2:6,2:6)=b的矩阵重组命令)4 5 6 0 0;3 4 5 6 0;2 3 4 5 6;0 2 3 4 5;0 0 2 3 431、用多项式的方法求解方程。,32、求多项式x6-5x3+7x-7与多项式x4+6x-8的和的多项式。33、求多项式x6-5x3+7x-7与多项式x4+6x-8的差的多项式。34、求多项式x6-5x3+7x-7与多项式x4+6x-8的积的多项式。35、求多项式x6-5x3+7x-7除以多项式x4+6x-8的结果。36、采用多项式估值运算方法计算多项式x6-5x3+7x-7当x=1 2 3和x=1 2;3 4时的值。,37、分别