《matlab7教程课件第2章数值运算.ppt》由会员分享,可在线阅读,更多相关《matlab7教程课件第2章数值运算.ppt(153页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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.00
2、00+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=25MATL
3、AB中的变量必须以字母打头,之后可以是任意字母、数字或下划线,变量名区分字母大小写,变量名不超过19个字符,默认变量名为ans。除此之外还包含一些特殊的变量。Whos命令能够显示变量的信息。2.2 MATLAB的数值运算基础的数值运算基础A/B相当于B*inv(A)AB相当于inv(A)*B2.3数组及向量运算数组及向量运算1、数组构造数组及向量的生成可直接在方括号内输入数据,也可以不加括号,同样生成数组。(1)利用first:increment:last来创建等差数组,a=(first:increment:last),increment为增量。a=(0:0.5:2)a=0 0.5000 1.
4、0000 1.5000 2.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.
5、1623 10.0000 31.6228 100.00002、数组运算(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元素
6、,x(find(x x=1 2;3 4;x=1 2;3 4;l,u=lu(x)l,u=lu(x)l=l=0.3333 1.0000 0.3333 1.0000 1.0000 0 1.0000 0 u=u=3.0000 4.0000 3.0000 4.0000 0 0.6667 0 0.6667 l,u,p=lu(x)l,u,p=lu(x)l=l=1.0000 0 1.0000 0 0.3333 1.0000 0.3333 1.0000 u=u=3.0000 4.0000 3.0000 4.0000 0 0.6667 0 0.6667 p=p=0 1 0 1 1 0 1 0正交分解(qr)q,r
7、=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=chol(a*a)。特征值分解(eig)v,d=eig(x)命令生成两个矩阵v和d,其中v是以矩阵x的特征向量作为列向量组成的矩阵,d是由矩阵x的特征值作为主对角线元素构成的对角矩阵,它们满足x*v=v*d。v,d=eig(a,b)命令对矩阵a、b
8、作广义特征值分解,它们满足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(x,0)命令进行奇异值的最佳分解。X为m*n阶矩阵,当mn时,生成的矩阵u只有前n列元素被计算出来,且s为n*n阶矩阵。6、矩阵的一些特殊处理函数矩阵的变维reshape(x,m,n)命令将矩阵x的所有元素分配到一个m*n的新矩阵,当矩阵x的元素数
9、不是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上下翻转。fliplr(x)命令将矩阵x左右翻转。flipdim(x,dim)命令将矩阵x的dim维翻转。选取数组上三角或下三角矩阵tril(a,k)命令的功能是提取矩阵的下三角矩阵,k为正数时,非零元素向右上角错k行,k为负数时,非零元素向左下角错k
10、行。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 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;
11、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 77、特殊矩阵的生成空矩阵:空矩阵用表示,空矩阵大小为零,但变量名存在于工作空间。零矩阵:a=zeros(m,n),a=zeros(size(b)其中b是已存在的矩阵,若a是方阵也可a=zeros(n)。全1矩阵:a=ones(m,n),a=ones(size(b)其
12、中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大于零时表示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
13、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 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阶随机矩阵,生成矩阵
14、的元素值在区间(0.0,1.0)之间。randn(n)命令生成n*n阶随机矩阵,生成矩阵的元素值在服从正态分布N(0,1)。randn(m,n)命令生成m*n阶随机矩阵,生成矩阵的元素值在服从正态分布N(0,1)。魔方矩阵:魔方矩阵是个方阵,其每一行,每一列,每条主对角线的和都相等(2阶除外)。A=magic(n)范德蒙德矩阵:a=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
15、)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 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
16、 4;a;bans=1 2 3 4 vertcat(a,b)ans=1 2 3 4矩阵的尺寸信息length命令是获取矩阵最长方向的长度;ndims命令是获取矩阵的维数;numel命令是获取矩阵的元素个数;size命令是获取矩阵大小信息,及几行几列。2.5 稀疏矩阵在MATLAB中用两种方式来存储矩阵,即满矩阵存储方式和稀疏矩阵存储方式,简称满矩阵和稀疏矩阵。满矩阵中所有的数值都要存储,会造成存储空间的浪费和计算速度的降低,而稀疏矩阵是以非零元素行标和列标来表示的,可以节省空间,也可以提高计算速度。1、稀疏矩阵的生成speye(n)生成n阶单位稀疏矩阵,speye(m,n)也生成一个单位稀疏矩
17、阵,其维数是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)+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
18、,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 12、稀疏矩阵与满矩阵的转换a=sparse(x)将满矩阵x转化为稀疏矩阵a。a=sparse(i,j,s,m,n,nzm)生成m*n阶的稀疏矩阵a,向量s的元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,nzm为给出的矩阵存储的非零元素的个数,不能小于s的长度,此时nzmax是返回用于存储非零值的空间长度。a=sparse(i,j,s,m,n)生
19、成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,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=(
20、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=8a=sparse(i,j,s)生成m*n阶的稀疏矩阵a,向量s的元素分布在以向量i的对应值和向量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转化
21、为满矩阵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(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 0i=find(x)返回矩
22、阵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)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;x=0 2 0 0;3 0 0
23、6;0 0 7 0;0 0 0 2;i j v=find(x)i j v=find(x)i=i=2 2 1 1 3 3 2 2 4 4 j=j=1 1 2 2 3 3 4 4 4 4 v=v=3 3 2 2 7 7 6 6 2 23、稀疏矩阵的操作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 0;0 0 0 2;n=nnz(x)n=5 x=0 2 0 0;3 0 0 6;0 0 7 0;0
24、 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 2r=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)1 (1,2)1 (3,3)1 (2,4)1 (4,4)1 x=0 2 0 0;3 0 0 6;0 0
25、 7 0;0 0 0 2;issparse(x)ans=0 issparse(sparse(x)ans=14、稀疏矩阵的图形显示为了形象地显示稀疏矩阵的密度,可以用稀疏矩阵图像化函数spy,其语法格式如下:spy(s)输出任意稀疏矩阵的图形,其横坐标表示列数,纵坐标表示行数。该图形中对非零元素相应的坐标显示一个圆点,圆点的颜色为蓝色。圆点大小与非零元素的数值无关。对于矩阵中零元素相应位置显示空白。spy(s,markersize)通过markersize改变圆点大小。spy(s,linespec,markersize)通过linespec改变标记的类型和颜色。a=1 0 0 9 0 0;0 3
26、 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 0 0 9 0 0 0 3 0 0 5 0 0 0 3 0 0 4 2 0 0 0 0 0spy(a,
27、*,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 多项式运算多项式(polynomial)1、多项式的四则运算多项式的四则运算主要是加、减、乘、除运算,加减运算时向量的大小必须相等,没项的用零补,
28、乘法运算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 02、多项式的导数和微分多项式的导数运算用函数polyder实现,其调用方式为:k=polyder(p),返回多项式p的导数,k仍是一系数多项式;k=polyder(a,b)返回多项式a与多项式b乘积的导数,k仍是一系数多项式;p,q=polyder(a,b)返回多项式a除以b
29、的商的导数,并以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 variable y.syms y b=poly2sym(a,y)b=2*y3+3*y2+4*y+5 a=1 2 3;b
30、=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=polyint(a,8)k=0.3333 1.0000 3.0000 8.0000 k=polyint(a)k=0.3333 1
31、.0000 3.0000 03、多项式的估值运算多项式的估值,即求给定点的多项式函数的值,用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 166 934 3400 polyvalm(a,1 2;3 4)ans=3166 4608 6912 10078 a=2 5 0 4
32、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.3488i -0.0644-1.3488i与多项式求根相反的过程是由根创建多项式,其调用格式如下:p=poly(r),r为向量时,
33、返回以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.00005、多项式部分分式展开函数residue可以将多项式之比用部分分式展开,也可以将一个部分分式表示为多项式之比。其调用格式如下:r,p,k=residue(a,b)返回多项式之比a/b的部分分式展开,参照下面公式。a,b=residue(r,p,k)返回部分分式的多项式向量。a=2 3-4 1;b=1-3 2;r,p,k=residue(a,b)r=21 -
34、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 26、多项式的拟合多项式拟合用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=polyfit(x,y,3);y1=polyval(t,x);plot(x,y,go,x,y1,b-)7、曲线拟合图形用户接口为了方便用户的
35、使用,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),y,i=min(a)同上,只是多输出最大(小)元素在向量中或在矩阵中的最大(小)值下标,按列优先的原则。max(a,b),min(a
36、,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 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
37、1 2 2 1 4 max(a,b)ans=3 5 3 7 1 8min函数的应用如图所示的一个用围墙围起来的场地,构建面积为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)MATLAB实现最小值求解 R=0.01:0.01:31.92;W=40*pi*R+15*(3200+(4-pi).*R.*R)./R);Wmin,i
38、=min(W)Wmin=5.1575e+003i=1861 R(1861)ans=18.6100 l=(3200-pi*18.61*18.61)/4/18.61l=28.37142、mean和median函数mean,median函数用于求向量或矩阵中元素的平均值(中值),mean(a)中a为向量则输出元素平均值,若为矩阵则输出每列元素平均值。median命令是先按升序或降序排列,如果是奇数个数的话,则取中间的数值,如是偶数个数的话,则取中间两个数的平均值。a=2 5 0 4 1 7;mean(a)ans=3.1667 median(a)ans=3 a=2 6 5 4 2;median(a)a
39、ns=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.50003、sum和prod函数sum(a),prod(a)中a为向量则返回所有元素的和(积),若为矩阵则返回每列的和(积)。a=2 5 0 4 1 7;sum(a)ans=19 prod(a)ans=04、sort函数Sort(a)中a为向量,返回从小到大排列的向量,为矩阵返回个列从小到大排序的矩阵;y,i=sort(a)中i返回新矩阵中元素在原矩阵中的脚标。数组排序:sort(x)命令将数组x中的元素按升序排列。当x是多维数组时,命令是将x中各列元素按升序排
40、列;当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 35、三角函数2.7.2 有限差分类函数1、diff函数diff函数用于求差分和近似导数,diff(a)中a为向量,则返回a(2)-a(1),a(n)-a(n-1),若为矩阵,则返回矩阵每列的差分;diff(a,n)返回向量或矩阵中第一个非独立维的n阶差分或导数值。a=2 4 2 8;9 5 3 2;diff(a)ans=7 1 1 -6 dif
41、f(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。习题课11、求 的值。2、求2/5和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的
42、线性向量间隔为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、写出求向量点积和叉积的命令,并说出进行两种运算时对向量的要求。11、写出求矩阵行列式的命令,并说出对矩阵的要求。12、写出求矩阵秩和求逆阵的命令。13、先讨论2/
43、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进行顺时针270度的旋转,结果是多少。18、已知a=1 2 3;4 5 6;7 8 9,如何实现a的上下翻转,结果是多少。19、已知a=1 2 3;4 5 6;7 8 9,如何实现
44、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,分别使用矩阵水平连接和竖直连接命令合并a,b并分别写出结果。25、分别写出length(1 2 3;4 5 6)和numel(1 2;3 4)的结果。26、写出sparse命令的几种
45、用法,并分别举例说明。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 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
46、、用多项式的方法求解方程 。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、分别采用3次曲线和6次曲线拟合正弦函数,并画出其图形进行比较。38、写出多项式x6-5x3+7x-7求导后的多项式。39、用两种方法求解多项式x2+2x-3与多项式x3-3x+5乘积求导后的多项式。40、求解多项式x2+2x-3与多项式x-2的商的导数,并输出结果。41、写出多项式x6-5x3+7x-7积分后的多项式,并自己设常数项。42、求解根为1 2 3 4的多项式。43、求解多项式(x2-3x+5)/(x2-3x+2)部分分式展开式,并写出结果,保留计算过程。44、写出如何把式子写成多项式相除的形式,并写出结果。45、已知a=1 4 6 2;5 3 1 2;7 5 2 8分别求出a中每行的最大及最小元素,并求出其所处的位置。46、已知a=5 2 4 7 9,b=4 8 3 5写出求其中值的命令并写出结果。