《数值向量和数组》PPT课件.ppt

上传人:xin****828 文档编号:15594792 上传时间:2020-08-22 格式:PPT 页数:65 大小:556KB
返回 下载 相关 举报
《数值向量和数组》PPT课件.ppt_第1页
第1页 / 共65页
《数值向量和数组》PPT课件.ppt_第2页
第2页 / 共65页
《数值向量和数组》PPT课件.ppt_第3页
第3页 / 共65页
点击查看更多>>
资源描述
第4章 数值向量和数组,教学目标 教学重点 教学过程,教学目标,本章将介绍MATLAB 7的数值计算功能,包括MATLAB 7的向量和数组,并介绍它们之间的运算。 通过对本章的学习,读者可以编写简单且功能完善的MATLAB 7程序,从而解决各类基本问题,用户可以通过本章逐步掌握MATLAB 7的数值计算方法。,教学重点,向量的运算方法 关系和逻辑运算,教学过程,向量及其运算方法 数组及其运算方法 多项式的创建和运算方法 关系和逻辑运算,一.向量及其运算,在命令窗口中直接输入向量 等差元素向量的生成,1.向量的生成,(1)在命令窗口中直接输入向量,在命令窗口中按一定格式直接输入。 输入的格式要求是,向量元素用“ ”括起来,元素之间用空格、逗号或者分号相隔。 需要注意的是,用它们相隔生成的向量形式是不相同的:用空格或逗号生成行向量;用分号生成列向量。,例1 a3=15 21 27 93 101; a2=15,21,27,93,101; a1=15;21;27;93;101; a1,a2 a2 = 15 21 27 93 101,a1 = 15 21 27 93 101,a3 a3 = 15 21 27 93 101,Matlab可以用“ ”在行和列之间进行转置。,a1 a2 = 15 21 27 93 101,a3 a1 = 15 21 27 93 101,(2)等差元素向量的生成,冒号生成法:基本格式 vec=vec0: n : vecn 其中:vec表示生成的向量,vec0表示向量的第一个元素,n表示步长,vecn表示向量的最后一个元素。n缺省时,表示步长为1,当向量的元素过多,同时向量各元素有等差的规律,此时采用直接输入法将过于繁琐。针对该种情况 ,可以使用冒号(:) 和linspace函数来生成等差元素向量。, vec1=10:5:60 vec1 = 10 15 20 25 30 35 40 45 50 55 60,linspace函数:基本格式 vec=linspace(vec0, vecn,n) Vec表示要生成的向量,vec0表示向量的第一个元素,vecn表示向量的最后一个元素,n表示生成向量元素的个数。线性等分向量函数。, vec2=linspace (10,60,11) vec2 = 10 15 20 25 30 35 40 45 50 55 60,向量的基本运算,向量与数的四则运算 向量与向量之间的加减运算 点积、叉积和混合积,(1) 向量与数的四则运算,向量与数的加法(减法):向量中的每个元素与数的加法(减法)运算。 向量与数的乘法(除法):向量中的每个元素与数的乘法(除法)运算。, vec1=80:-9:10 vec1 = 80 71 62 53 44 35 26 17 vec1+10 ans = 90 81 72 63 54 45 36 27 vec1-10 ans = 70 61 52 43 34 25 16 7 vec1*10 vec1 = 800 710 620 530 440 350 260 170 vec1/10 vec1 = 8.0000 7.1000 6.2000 5.3000 4.4000 3.5000 2.6000 1.7000,(2)向量与向量之间的加减运算,向量与向量的加法(减法)运算:向量中的每个元素与另一个向量中相对应的元素的加法(减法)运算。, vec1=linspace(200,500,7) vec1 = 200 250 300 350 400 450 500 vec2=linspace(900,600,7) vec2 = 900 850 800 750 700 650 600 vec3=vec1+vec2 vec3 = 1100 1100 1100 1100 1100 1100 1100 vec3=vec1-vec2 vec3 = -700 -600 -500 -400 -300 -200 -100,(3) 点积、叉积和混合积,两个向量的点积: 定义:也就是数分中“内积”。设向量 a=a1,a2,.an,b=b1,b2.bn ,则 aba1b1a2b2anbn 几何意义:一个向量在另一个向量上的投影的长度。 格式:dot(A,B), x1=11 22 33 44 x2=1,2,3,4 a=dot(x1,x2) a = 330 sum(x1.*x2) ans = 330,两个三维向量的叉积: 定义:等于一个新的向量, 该向量与前两者垂直,且长度为前两者张成的平行四边形面积, 其方向按照右手螺旋决定。 数学表达:叉积c=aXb可如下严格定义。 (1)|c|=|ab|=|a|b|sin (2)ca, 且cb, (3)c的方向要用“右手法则”判断 格式:cross(a,b), x1=11 22 33 x1 = 11 22 33 x2=1 2 3 x2 = 1 2 3 x3=cross(x1,x2) x3 = 0 0 0,向量的混合积: 定义:设 a , b , c 是空间中三个向量,则 (ab) c 称为三个向量 a , b , c 的混合积。 (ab)c=|ab|c|cos(a b,c) 几何意义:它的绝对值表示以向量为棱的平行六面体的体积 格式:,dot(cross(a,b),c),dot(a,cross(b,c),a=1 2 3 a = 1 2 3 b=2 4 3 b = 2 4 3 c=5 2 1 c = 5 2 1 v=dot(a,cross(b,c) v = -24 v=dot(cross(a,b),c) v = -24, v=cross(a,dot(b,c) ? Error using = cross A and B must be same size.,2. 数组及其运算,数组寻址和排序 数组的基本数值运算,(1) 数组寻址和排序,若访问单个元素,则直接采用访问下标的方法,1)数组的寻址 即访问数组的元素。 通过对数组的下标来访问数组元素。 数组元素的下标是从1开始。, A=rand(1,5) %生成15的随机矩阵,元素(0,1) A = 0.9501 0.2311 0.6068 0.4860 0.8913 A(4) ans = 0.4860,若访问一块连续标号的数据,可以使用冒号 A(2:4) ans = 0.2311 0.6068 0.4860 若访问一块标号不连续的数据,可以使用中括号 A(1 3 5) ans = 0.9501 0.6068 0.8913 可以用end表示数组的结尾 A(3:end) ans = 0.6068 0.4860 0.8913,A =0.9501 0.2311 0.6068 0.4860 0.8913,2)数组的排序 使用sort函数对数组进行排序。 格式:sort(X) 当X是一维数组时,sort(X)将X中的元素按升序排列 当X是多维数组时,sort(X)将X中的各列元素按升序排列 当X是字符型单元数组时, sort(X)将X中的各列元素按对应的ASCII码进行升序排列 sort(X,DIM,MODE): DIM表示选择用于排列的维数,MODE表示排序的方式, ascend 升序, descend 降序 当X是复数数组时,将按各元素的模abs(X)进行排序。, X = 3 7 5 0 8 9 X = 3 7 5 0 8 9 sort(X,1) %将行进行升序排列 ans = 0 7 5 3 8 9 sort(X,1,descend) %将行进行降序排列 ans = 3 8 9 0 7 5 sort(X,2) %将列进行升序排列 ans = 3 5 7 0 8 9, X=1+2i,4+i;1+i,2+3i X = 1.0000 + 2.0000i 4.0000 + 1.0000i 1.0000 + 1.0000i 2.0000 + 3.0000i sort(X) ans = 1.0000 + 1.0000i 2.0000 + 3.0000i 1.0000 + 2.0000i 4.0000 + 1.0000i,(2)数组的基本数值运算,数组的加法(减法) 数组的乘法(除法) 数组的乘方,1)数组的加减法 对应元素相加或者相减 例:计算x=1,4,7与Y=2,5,8的和与差。 X=1 4 7; Y=2 5 8; Z=X-Y Z = -1 -1 -1 V=X+Y V = 3 9 15,2)数组的乘除法 对应元素相乘或者相除。如果X和Y具有相同的维数,则 X.*Y 表示对应元素的乘积, X./Y 表示X各元素除以对应的Y的各元素。 X.Y 表示Y各元素除以对应的X的各元素。, X=10 52 96 12 56; Y=2 26 3 4 8; X.*Y ans = 20 1352 288 48 448 X./Y ans = 5 2 32 3 7 X.Y ans = 0.2000 0.5000 0.0313 0.3333 0.1429, x1=11 22 33 44; x2=1,2,3,4; a=dot(x1,x2) a = 330 sum(x1.*x2) ans = 330,3)数组的乘方,设,数组的乘方有三种不同的形式:,两个数组之间的乘方运算 格式:X.Y 意义:,数组为底数,指数为标量的乘方 格式:X.a 意义:,数组为指数,底数为标量的乘方 格式:a.X 意义:, X=1 4 7; Y=2 5 8; Z=X.Y Z = 1 1024 5764801 X=3,6,9; Z=X.3 Z = 27 216 729 X=4 5 6 7 8; Z=3.X Z = 81 243 729 2187 6561,3. 多项式,多项式的创建 多项式的运算 关系和逻辑运算,(1)多项式的创建,直接输入系数向量创建多项式 特征多项式输入法 由多项式的根逆推多项式,在 Matlab 中,n 次多项式是用一个长度为 n+1的向量来表示,缺少的幂次项系数为0。例如:,在Matlab中表示为相应的向量:,例:,直接输入系数向量创建多项式,P=2 -1 0 2,然后用,poly2sym(P),将向量P转化为多项式,注意: 书写向量的时候,系数按降幂排序。 而该向量可以是行向量,也可以是列向量 。 系数中的零不能省!, P=3 5 0 1 0 12 P = 3 5 0 1 0 12 y=poly2sym(P) %将向量P转化成多项式 y = 3*x5+5*x4+x2+12,特征多项式输入法,MATLAB 7提供了poly函数,使用它可以由矩阵的特征多项式创建多项式。,注意: 使用该方法生成多项式时,其首项的系数必为1 。 生成的结果是用一个向量表示的多项式,若想以多项式的形式显示,须用函数poly2sym,格式:poly(A),A是一个矩阵,poly(A)表示生成矩阵A的特征多项式, A= 3 1 4 1; 5 9 2 6;5 3 5 8; 9 7 9 3; p=poly(A) p =1.0000 -20.0000 -16.0000 480.0000 98.0000 y=poly2sym(p) y =x4-20*x3-16*x2+480*x+1724034232352773/17592186044416 vpa(y,6) %将多项式y中的各系数以不超过6位的形式出现 ans = x4-20.*x3-16.*x2+480.*x+98.0000,注: vpa(a,n)实现数值精确到小数点后某一位, vpa会根据精度要求去掉末尾的数位或者补0。 整数+小数部分的位数一共是n位。,由多项式的根逆推多项式,如果已知某个多项式的根,那么,使用poly函数,可以很轻松地产生其对应的多项式。,A是一个向量,A=a1,a2,.an poly(A)表示生成以A为根的多项式,格式:poly(A),注意: 使用该方法生成多项式时,其首项的系数必为1 。 生成的结果是用一个向量表示的多项式,若想以多项式的形式显示,须用函数poly2sym, roots=-4 -2+2i -2-2i 5 roots = -4.0000 -2.0000 + 2.0000i -2.0000 - 2.0000i 5.0000 p=poly(roots) p = 1 3 -16 -88 -160 poly2sym(p) x4+3*x3-16*x2-88*x-160,(2)多项式的运算,多项式的求值 求多项式的根 多项式的四则运算,多项式的求值,MATLAB 7提供了两个函数来对多项式进行求值,即polyval和polyvalm。,polyval 用来求代数多项式的值, 格式: y=polyval(P,x) 意义:返回以向量P为系数的多项式在x处的值。 说明: 若x矩阵或向量,则将对矩阵或向量的每一个元素都进行计算,polyvalm用来求矩阵多项式的值 格式: y=polyvalm(P,x) 意义:返回以向量P为系数的多项式在矩阵x处的值。, p=1 -20 -16 480 98; x=4; polyval(p,x) ans = 738, p = 3 2 1; x=5,7,9; polyval(p,x) ans = 86 162 262, p = 3 2 1; x=1,2;1,-1; polyval(p,x) ans = 6 17 6 2, p=1 -20 -16 480 98; X=magic(3) %生成3*3的魔术矩阵 X =8 1 6 3 5 7 4 9 2 polyval(p,X) ans = -3230 543 -622 935 223 -1785 738 -4897 850 polyvalm(p,X) ans =-4199 -4489 -4489 -4489 -4199 -4489 -4489 -4489 -4199,求多项式的根,在MATLAB 7语言里,多项式由一个行向量表示,设为p,使用roots函数可以求出该多项式的根。 格式 roots(p), p=1,-5,6; ROOTS(p) ans = 3.0000 2.0000,注:有的版本的matlab,求根函数是大写的ROOTS ROOTS(p),第二种求多项式根的方法:,例如:求多项式的根 solve(x2-5*x+6=0) ans = 3 2,另外: 多项式的合并 多项式的因式分解 多项式的展开 多项式的简化多项式的作图 留待第七章和第八章再讲,多项式的四则运算,加法和减法 如果多项式以向量形式表示 若两个多项式的向量阶数相同,两个向量相加减 当两个多项式的向量阶数不同时,需要在低阶多项式的前边补0,使得它与相加的高阶多项式有相同的阶数。 也可以直接让两个多项式相加减,已知向量a=8 2 2 8;b=6 1 6 1;求对应多项式的加法,方法一: a=8 2 2 8; b=6 1 6 1; c=a+b; Y3=poly2sym(c) Y3 = 14*x3+3*x2+8*x+9,方法二: a=8 2 2 8; b=6 1 6 1; Y1=poly2sym(a); Y2=poly2sym(b); Y3=Y1+Y2 Y3 = 14*x3+3*x2+8*x+9, a=14 3 8 9; b=2 4; a+b ? Error using = plus Matrix dimensions must agree. c=a+0 0 b c = 14 3 10 13 poly2sym(c) ans = 14*x3+3*x2+10*x+13,当两个多项式的阶数不一致时:,乘法,方法一:使用conv(a,b) a和b为两个多项式的系数向量,c为相乘所生成的多项式的系数向量。 a=1 2 3 4;b=5 6 7 8; c=conv(a,b) c = 5 16 34 60 61 52 32 Y3=poly2sym(c) Y3 = 5*x6+16*x5+34*x4+60*x3+61*x2+52*x+32,方法二:直接用乘号运算符 a=1 2 3 4;b=5 6 7 8; Y1=poly2sym(a); %求向量a表示的多项式 Y2=poly2sym(b); %求向量b表示的多项式 Y3=Y1*Y2 Y3 = (x3+2*x2+3*x+4)*(5*x3+6*x2+7*x+8) expand(Y3) %展开多项式Y3 ans = 5*x6+16*x5+34*x4+60*x3+61*x2+52*x+32,除法,使用deconv(a,b) a和b为两个多项式的系数向量,c为相除得到的多项式所生成的多项式的系数向量。 a=5 16 34 60 61 52 32; b=5 6 7 8; c=deconv(a,b); poly2sym(c) ans = x3+2*x2+3*x+4,多项式除法运算的另外一种形式: k,r=deconv(p,q),其中 k 返回的是多项式 p 除以 q 的商,r 是余式。 a=1 0 -2; b=1 -1; k,r=deconv(a,b) k = 1 1 r = 0 0 -1 k=poly2sym(k), r=poly2sym(r) k = x+1 r =-1,求导和积分 1)对多项式求导数 p=polyder(P):求以向量P为系数的多项式的导函数 p=polyder(P,Q):求PQ的导函数 p,q=polyder(P,Q):求P/Q的导函数,导函数的分子存入p,分母存入q。 2)对多项式求积分 polyint(P):求多项式的积分 polyint(P,K):求多项式的积分,K为积分的常数项, p=3 1 8 8; q=polyder(p) q = 9 2 8 p1=polyint(q) p1 = 3 1 8 0,4.关系和逻辑运算,关系操作符 逻辑操作符 关系与逻辑函数 NaNs和空矩阵 各种运算符的优先级,(1) 关系操作符,关系操作符及其功能,两个数组在进行关系运算时,维数必须一样。是两个数组的对应元素分别进行关系运算 一个数组与一个常数进行关系运算时,是数组的每个元素分别与这个常数进行关系运算。, a=1,-5,7,4; b=-1,6,7,2; c=ab c = 1 0 0 1 d=a=b d = 0 0 1 0, a=1,-5,7,4; b=a1 b = 0 0 1 1 c=a=4 c = 0 0 0 1,(2) 逻辑操作符,逻辑操作符及其功能, A=linspace(1,10,10) A = 1 2 3 4 5 6 7 8 9 10 B=linspace(10,1,10) B = 10 9 8 7 6 5 4 3 2 1 L1=A4 t=1,0,-1,3,0; xor(s,t) ans = 0 1 1 0 0 any(s) ans = 1 all(s) ans = 0,各种运算符的优先级,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!