《数值向量和数组》由会员分享,可在线阅读,更多相关《数值向量和数组(35页珍藏版)》请在金锄头文库上搜索。
1、2019/1/15,第4章 数值向量和数组,1,第4章 数值向量和数组,教学目标 教学重点 教学过程,2019/1/15,第4章 数值向量和数组,2,教学目标,本章将介绍MATLAB 7的数值计算功能,包括MATLAB 7的向量和数组,并介绍它们之间的运算。 通过对本章的学习,读者可以编写简单且功能完善的MATLAB 7程序,从而解决各类基本问题,用户可以通过本章逐步掌握MATLAB 7的数值计算方法。,2019/1/15,第4章 数值向量和数组,3,教学重点,向量的运算方法 关系和逻辑运算,2019/1/15,第4章 数值向量和数组,4,教学过程,向量及其运算方法 数组及其运算方法 多项式的
2、创建和运算方法 关系和逻辑运算,2019/1/15,第4章 数值向量和数组,5,1.向量及其运算,在命令窗口中直接输入向量 等差元素向量的生成 向量与数的四则运算 向量与向量之间的加减运算 点积、叉积和混合积,2019/1/15,第4章 数值向量和数组,6,(1)在命令窗口中直接输入向量,在MATLAB 7中,生成向量最简单的方法就是在命令窗口中按一定格式直接输入。输入的格式要求是,向量元素用“ ”括起来,元素之间用空格、逗号或者分号相隔。需要注意的是,用它们相隔生成的向量形式是不相同的:用空格或逗号生成行向量;用分号生成列向量。, a2=15,21,27,93,101; a1=15;21;2
3、7;93;101; a1 a1 = 15 21 27 93 101 a2 a2 = 15 21 27 93 101 ,2019/1/15,第4章 数值向量和数组,7,(2)等差元素向量的生成,当向量的元素过多,同时向量各元素有等差的规律,此时采用直接输入法将过于繁琐。针对该种情况 ,可以使用冒号(:) 和linspace函数来生成等差元素向量。, vec1=10:5:60 vec1 = 10 15 20 25 30 35 40 45 50 55 60 vec2=linspace (10,60,11) vec2 = 10 15 20 25 30 35 40 45 50 55 60,2019/1/
4、15,第4章 数值向量和数组,8,(3) 向量与数的四则运算,向量与数的加法(减法):向量中的每个元素与数的加法(减法)运算。 向量与数的乘法(除法):向量中的每个元素与数的乘法(除法)运算。, vec1=80:-9:10 vec1 = 80 71 62 53 44 35 26 17 vec1+101 ans = 181 172 163 154 145 136 127 118 ,2019/1/15,第4章 数值向量和数组,9,(4)向量与向量之间的加减运算,向量与向量的加法(减法)运算:向量中的每个元素与另一个向量中相对应的元素的加法(减法)运算。 vec1=linspace(200,500,
5、7) vec2=linspace(900,600,7) vec3=vec1+vec2 vec3 = Columns 1 through 5 1100 1100 1100 1100 1100 Columns 6 through 7 1100 1100 ,2019/1/15,第4章 数值向量和数组,10,(5) 点积、叉积和混合积,两个向量的点积等于其中一个向量的模与另一个向量在这个向量的方向上的投影的乘积 叉积的几何意义是指过两个相交向量的交点,并与此两向量所在平面垂直的向量 向量的混合积的几何意义是它的绝对值表示以向量为棱的平行六面体的体积,2019/1/15,第4章 数值向量和数组,11,点
6、积、叉积运算举例,点积 运算 x1=11 22 33 44 x2=1,2,3,4 a=dot(x1,x2) a = 330 sum(x1.*x2) ans = 330 ,叉积运算 x1=11 22 33 x1 = 11 22 33 x2=1 2 3 x2 = 1 2 3 x3=cross(x1,x2) x3 = 0 0 0,2019/1/15,第4章 数值向量和数组,12,2. 数组及其运算,数组寻址和排序 数组的基本数值运算 数组的关系运算 数组的逻辑运算,2019/1/15,第4章 数值向量和数组,13,(1) 数组寻址和排序,通过对数组下表的访问来实现数组寻址 A=rand(1,5) A
7、 = 0.9501 0.2311 0.6068 0.4860 0.8913 A(4) ans = 0.4860 A(2:3) ans = 0.2311 0.6068,使用sort函数对数组进行排序 X = 3 7 5 0 4 2 sort(X,1) ans = 0 4 2 3 7 5 sort(2) ans = 2,2019/1/15,第4章 数值向量和数组,14,(2)数组的基本数值运算,数组的加法(减法) 数组的乘法(除法) 数组的乘方,2019/1/15,第4章 数值向量和数组,15,数值运算举例,加减法 X=1 4 7; Y=2 5 8; Z=X-Y Z = -1 -1 -1 V=X+
8、Y V = 3 9 15 ,乘方 X=1 4 7 X = 1 4 7 Y=2 5 8 Y = 2 5 8 Z=X.Y Z = 1 1024 5764801,2019/1/15,第4章 数值向量和数组,16,(3)数组的关系运算,两个数通常可以用6种关系来进行描述:小于()、大于等于( =)、等于(= =)和不等于( =) 比较两个元素的大小时,如果结果为1,则表明关系式为真;如果结果为0,则表明关系式为假。例如关系式4+3=6(数学语言表示4与3的和小于等于6),通过上面的叙述可知,此关系式的结果为0,标明关系式为假。,2019/1/15,第4章 数值向量和数组,17,(4)数组的逻辑运算,在
9、各种逻辑运算中,有3种逻辑运算:与(&)、或(|)和非()。“&”和“|”操作符号可以比较两个标量或者两个通解数组(或矩阵);对于逻辑非“”是一个一元操作符。但是对于数组(矩阵),逻辑运算是针对于数组(矩阵)中的每一个元素。同样,当逻辑为真时,返回值为1;当逻辑为假时,返回值为0。 在MATLAB 7中,逻辑运算通常可以用来生成只含有元素0和1的矩阵。,2019/1/15,第4章 数值向量和数组,18,3. 多项式,多项式的创建 多项式的运算 关系和逻辑运算,2019/1/15,第4章 数值向量和数组,19,(1)多项式的创建,直接输入系数向量创建多项式 特征多项式输入法 由多项式的根逆推多项
10、式,2019/1/15,第4章 数值向量和数组,20,直接输入系数向量创建多项式,由于在MATLAB 7中多项式是以向量的形式存储的,直接输入向量,MATLAB 7将按降幂自动把向量的元素分配给多项式各项的系数。而该向量可以是行向量,也可以是列向量 。, P=3 5 0 1 0 12 P = 3 5 0 1 0 12 y=poly2sym(P) y = 3*x5+5*x4+x2+12 disp(y) 3*x5+5*x4+x2+12 ,2019/1/15,第4章 数值向量和数组,21,特征多项式输入法,MATLAB 7提供了poly函数,使用它可以由矩阵的特征多项式创建多项式。使用该方法生成多项
11、式时,其首项的系数必为1 。, A= 3 1 4 1; 5 9 2 6;5 3 5 8; 9 7 9 3 A = 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 p=poly(A); disp(poly2sym(p) x4-20*x3-16*x2+480*x+1724034232352773/17592186044416,2019/1/15,第4章 数值向量和数组,22,由多项式的根逆推多项式,如果已知某个多项式的根,那么,使用poly函数,可以很轻松地产生其对应的多项式。, roots=-4 -2+2i -2-2i 5 roots = -4.0000 -2.0000 + 2.
12、0000i -2.0000 - 2.0000i 5.0000 p=poly(roots) p = 1 3 -16 -88 -160 disp(poly2sym(p) x4+3*x3-16*x2-88*x-160 ,2019/1/15,第4章 数值向量和数组,23,(2)多项式的运算,多项式的求值 求多项式的根 多项式的四则运算,2019/1/15,第4章 数值向量和数组,24,多项式的求值,MATLAB 7提供了两个函数来对多项式进行求值,即polyval和polyvalm。前者以数组为计算单位,后者以矩阵为计算单位。, p=1.0000 -20.0000 -16.0000 480.0000
13、98.0000 p = 1 -20 -16 480 98 x=4 x = 4 polyval(p,x) ans = 738,2019/1/15,第4章 数值向量和数组,25,求多项式的根,在MATLAB 7语言里,多项式由一个行向量表示,设为p,它的系数按降序排列,使用roots函数可以求出该多项式的根。其使用格式为roots(p)。, p=1 0 3 12 -7 p = 1 0 3 12 -7 roots(p) ans = 0.7876 + 2.4351i 0.7876 - 2.4351i -2.0872 0.5121 ,2019/1/15,第4章 数值向量和数组,26,多项式的四则运算,加
14、法和减法 如果两个多项式的向量阶数相同,标准的数组加法有效。当两个多项式的向量阶数不同时,需要在低阶多项式的前边补0,使得它与相加的高阶多项式有相同的阶数。, a=8 2 2 8,b=6 1 6 1 a = 8 2 2 8 b = 6 1 6 1 c=a+b c = 14 3 8 9 Y3=poly2sym(c) Y3 = 14*x3+3*x2+8*x+9,2019/1/15,第4章 数值向量和数组,27,多项式的四则运算,乘法 使用conv函数对多项式进行乘法运算。 格式为c=conv(a,b),其中a和b为两个多项式的系数向量,c为相乘所生成的多项式的系数向量。, a=1 2 3 4,b=
15、5 6 7 8; Y1=poly2sym(a) Y1 = x3+2*x2+3*x+4 Y2=poly2sym(b) Y2 = 5*x3+6*x2+7*x+8 c=conv(a,b); Y=poly2sym(c) Y = 5*x6+16*x5+34*x4+60*x3+61*x2+52*x+32,2019/1/15,第4章 数值向量和数组,28,多项式的四则运算,除法 在数值计算中,经常需要用一个多项式去除另一个多项式。在MATLAB 7语言中,使用decon函数来完成该项功能。, a=1 2 3 4,b=5 6 7 8; c=conv(a,b); d=deconv(c,a); e=deconv(c,b) x=poly2sym(d),y=poly2sym(e) x = 5*x3+6*x2+7*x+8 y = x3+2*x2+3*x+4 ,2019/1/15,第4章 数值向量和数组,29,多项式的四则运算,求导和积分 在MATLAB 7语言中,分别使用polyder函数和polyint函数来求多项式的导数与积分。, p=3 1 8 8 p = 3 1 8 8 q=polyder(p) q = 9 2 8 p1=polyint(q) p1