您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 04-06 数值向量和数组,矩阵
第4章数值向量和数组•介绍MATLAB7的数值计算功能,包括MATLAB7的向量和数组及它们之间的运算。•通过本章逐步掌握MATLAB7的数值计算方法。教学过程•向量及其运算方法•数组及其运算方法•多项式的创建和运算方法•关系和逻辑运算(1)在命令窗口中直接输入向量•在MATLAB7中,生成向量最简单的方法就是在命令窗口中按一定格式直接输入。输入的格式要求是,向量元素用“[]”括起来,元素之间用空格、逗号或者分号相隔。需要注意的是,用它们相隔生成的向量形式是不相同的:用空格或逗号生成行向量;用分号生成列向量。•a2=[15,21,27,93,101];•a1=[15;21;27;93;101];•a1•a1=•15•21•27•93•101•a2•a2=•15212793101•1.向量及其运算(2)等差元素向量的生成•当向量的元素过多,同时向量各元素有等差的规律,此时采用直接输入法将过于繁琐。针对该种情况,可以使用冒号(:)和linspace函数来生成等差元素向量。•vec1=10:5:60•vec1=•1015202530354045505560•vec2=linspace(10,60,11)•vec2=•1015202530354045505560(3)向量与数的四则运算•向量与数的加法(减法):向量中的每个元素与数的加法(减法)运算。•向量与数的乘法(除法):向量中的每个元素与数的乘法(除法)运算。•vec1=80:-9:10•vec1=•8071625344352617•vec1+101•ans=•181172163154145136127118•(4)向量与向量之间的加减运算•向量与向量的加法(减法)运算:向量中的每个元素与另一个向量中相对应的元素的加法(减法)运算。•vec1=linspace(200,500,7)•vec2=linspace(900,600,7)•vec3=vec1+vec2•vec3=•Columns1through5•11001100110011001100•Columns6through7•11001100•(5)点积、叉积和混合积•两个向量的点积等于其中一个向量的模与另一个向量在这个向量的方向上的投影的乘积•叉积的几何意义是指过两个相交向量的交点,并与此两向量所在平面垂直的向量•点积运算•x1=[11223344]•x2=[1,2,3,4]•a=dot(x1,x2)•a=•330•sum(x1.*x2)•ans=•330••叉积运算•x1=[112233]•x1=•112233•x2=[123]•x2=•123•x3=cross(x1,x2)•x3=•000(1)数组寻址•通过对数组下表的访问来实现数组寻址•A=rand(1,5)•A=•0.95010.23110.60680.48600.8913••A(4)•ans=•0.4860•A(2:3)•ans=•0.23110.60682.数组及其运算(2)数组的基本数值运算•数组的加法(减法)•数组的乘法(除法)•数组的乘方•加减法•X=[147];•Y=[258];•Z=X-Y•Z=•-1-1-1•V=X+Y•V=•3915••乘方•X=[147]•X=•147•Y=[258]•Y=•258•Z=X.^Y•Z=•110245764801(3)数组的关系运算•两个数通常可以用6种关系来进行描述:小于()、小于等于(=)、大于()、大于等于(=)、等于(==)和不等于(~=)•比较两个元素的大小时,如果结果为1,则表明关系式为真;如果结果为0,则表明关系式为假。例如关系式4+3=6(数学语言表示4与3的和小于等于6),通过上面的叙述可知,此关系式的结果为0,标明关系式为假。(4)数组的逻辑运算•在各种逻辑运算中,有3种逻辑运算:与(&)、或(|)和非(~)。“&”和“|”操作符号可以比较两个标量或者两个通解数组(或矩阵);对于逻辑非“~”是一个一元操作符。但是对于数组(矩阵),逻辑运算是针对于数组(矩阵)中的每一个元素。同样,当逻辑为真时,返回值为1;当逻辑为假时,返回值为0。•在MATLAB7中,逻辑运算通常可以用来生成只含有元素0和1的矩阵。3多项式运算多项式表示及其四则运算1.MATLAB的多项式表示对多项式:01111)(axaxaxaxpnnnn5x2x)x(p3可表示成行向量:p=[1,0,–2,5]。用其系数的行向量p=[an,an-1,…,a1,a0]来表示。注意:如果x的某次幂的系数为零,这个零必须列入系数向量中。例如一个一元3次多项式:直接输入系数向量创建多项式•由于在MATLAB7中多项式是以向量的形式存储的,直接输入向量,MATLAB7将按降幂自动把向量的元素分配给多项式各项的系数。而该向量可以是行向量,也可以是列向量。•P=[3501012]•P=•3501012•y=poly2sym(P)•y=•3*x^5+5*x^4+x^2+12•disp(y)•3*x^5+5*x^4+x^2+12••在MATLAB7语言里,多项式由一个行向量表示,设为p,它的系数按降序排列,使用roots函数可以求出该多项式的根。其使用格式为roots(p)。•p=[10312-7]•p=•10312-7•roots(p)•ans=•0.7876+2.4351i•0.7876-2.4351i•-2.0872•0.5121•2.多项式的根求解多项式的根,即p(x)=0的解。格式:r=roots(p)功能:返回多项式p(x)的根。注意,MATLAB按惯例规定,多项式是行向量,根是列向量。3.多项式的加减运算格式:A=B+C4.多项式相乘运算格式:w=conv(u,v)功能:返回u和v两向量的卷积,也就是u和v代表的两多项式的乘积。5.多项式相除格式:[q,r]=deconv(u,v)功能:给出商多项式q和余数多项式r,u为被除多项式6.多项式求导函数polyder格式一:k=polyder(p)功能:返回多项式p的一阶导数。格式二:k=polyder(u,v)功能:返回多项式u与v乘积的导数。格式三:[q,d]=polyer(u,v)功能:返回多项式商u/v的导数,返回的格式为:q为分子,d为分母。多项式的四则运算•加法和减法–如果两个多项式的向量阶数相同,标准的数组加法有效。当两个多项式的向量阶数不同时,需要在低阶多项式的前边补0,使得它与相加的高阶多项式有相同的阶数。•a=[8228],b=[6161]•a=•8228•b=•6161•c=a+b•c=•14389•Y3=poly2sym(c)•Y3=•14*x^3+3*x^2+8*x+9多项式的四则运算•乘法–使用conv函数对多项式进行乘法运算。格式为c=conv(a,b),其中a和b为两个多项式的系数向量,c为相乘所生成的多项式的系数向量。•a=[1234],b=[5678];•Y1=poly2sym(a)•Y1=•x^3+2*x^2+3*x+4•Y2=poly2sym(b)•Y2=•5*x^3+6*x^2+7*x+8•c=conv(a,b);•Y=poly2sym(c)•Y=•5*x^6+16*x^5+34*x^4+60*x^3+61*x^2+52*x+32多项式的四则运算•除法–在数值计算中,经常需要用一个多项式去除另一个多项式。在MATLAB7语言中,使用decon函数来完成该项功能。•a=[1234],b=[5678];•c=conv(a,b);•d=deconv(c,a);•e=deconv(c,b)•x=poly2sym(d),y=poly2sym(e)•x=•5*x^3+6*x^2+7*x+8•y=•x^3+2*x^2+3*x+4•多项式的四则运算•求导和积分–在MATLAB7语言中,分别使用polyder函数和polyint函数来求多项式的导数与积分。•p=[3188]•p=•3188•q=polyder(p)•q=•928•p1=polyint(q)•p1=•3180•7.多项式求值函数polyval()利用函数polyval可以求得多项式在某一点的值。格式:y=polyval(p,x)功能:返回多项式p在x处的值。其中x可以是复数,也可以是数组。8.部分分式展开函数residue()格式:[r,p,k]=residue(b,a)功能:把b(s)/a(s)展开成:snnkpsrpsrpsrsasb2211)()(其中r代表余数数组,p代表极点数组,ks代表部分分式展开的常数项。当分母多项式的阶次数高于分子多项式的阶次数时ks=0多项式的求值•polyval函数对多项式进行求值,以数组为计算单位。•p=[1.0000-20.0000-16.0000480.000098.0000]•p=•1-20-1648098•x=4•x=•4•polyval(p,x)•ans=•73812198201023ssss将其展开成部分分式num=[10,20];den=[1,8,19,12];[res,poles,k]=residue(num,den)res=-6.66675.00001.6667poles=-4.0000-3.0000-1.0000k=[]部分分式展开多项式拟合与多项式插值9.多项式拟合函数polyfit()格式:p=polyfit(x,y,n)功能:利用已知的数据向量x和y所确定的数据点,采用最小二乘法构造出n阶多项式去逼近已知的离散数据,实现多项式曲线的拟合。其中p是求出的多项式系数,n阶多项式应该有n+1个系数,故p的长度为n+1。10.多项式插值插值和拟合的不同点在于:①插值函数通常是分段的,人们关心的不是函数的表达式,而是插值出的数据点;②插值函数应通过给定的数据点。(1)一维插值函数interpl()格式:yi=interpl(x,y,xi,'method')功能:为给定的数据对(x,y)以及x坐标上的插值范围向量xi,用指定所使用的插值方法method实现插值。yi是插值后的对应数据点集的y坐标。插值的方法method有以下6种可供选择:nearest(最邻近插值法)、linear(线性插值)、spline(三次样条插值)、cubic(立方插值)、pchip(三次Hermite插值)、v5cubic。所谓数据拟合是求一个简单的函数,例如是一个低次多项式,不要求通过已知的这些点,而是要求在整体上“尽量好”的逼近原函数。这时,在每个已知点上就会有误差,数据拟合就是从整体上使误差,尽量的小一些。多项式拟合--数据最小二乘拟合例1:某种铝合金的含铝量为x%,其溶解温度为y摄氏度,由试验测得的x与y的数据表如下,试用最小二乘算法建立x,y的经验公式。ixiyi136.9181246.7197363.7235477.8270584283687292x=[36.946.763.777.88487.5];y=[181197235270283292];a=polyfit(x,y,1)a=2.233795.3524x0=0:.1:1;y0=(x0.^2-3*x0+5).*exp(-5*x0).*sin(x0);p3=polyfit(x0,y0,3);%先进行三次拟合p3=2.8400-4.78981.94320.0598多项式如下:2.8400*x^3-4.7898*x^2+1.9432*x+0.0598例2:已知数据点来自用多项式拟合方法在不同阶次下进行拟合。xexxxfxsin)53()(52拟合该数据的程序绘制拟合曲线:x=0:.01:1;ya=(x.^2-3*x+5).*exp(-5*x).*sin(x);
本文标题:04-06 数值向量和数组,矩阵
链接地址:https://www.777doc.com/doc-3109553 .html