MATLAB矩阵及其运算.ppt_第1页
MATLAB矩阵及其运算.ppt_第2页
MATLAB矩阵及其运算.ppt_第3页
MATLAB矩阵及其运算.ppt_第4页
MATLAB矩阵及其运算.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章 数值计算功能,2.1 Matlab的数据类型 2.2 向量及其运算 2.3 矩阵及其运算 2.4 数组及其运算 2.5 多项式运算,2.1 Matlab的数据类型,1、变量 在MATLAB中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。在MATLAB中,变量名区分字母的大小写。 2、常量 MATLAB有一些预定义的常量:,请练习在命令窗口打入 Pi 、1/0 0/0,在Matlab中,定义变量时应避免与常量名相同,以免改变这些常量的值。如果已改变了某个常量的值,可以通过“Clear+常量名”命令恢复该变量的初始设定值。,例如:pi100 pi = 100 clear pi pi ans =3.14159265358979,3、数字变量,在MATLAB下进行基本数学运算,只需将运算式直接打入提示号()之后,并按入Enter键即可。MATLAB会将运算结果直接存入一个变量ans,代表MATLAB运算后的答案(Answer),并显示其数值于屏幕上。 258*369 ans = 95202 也可输入 x=258*369 x = 95202 计算值赋给了变量x,1、MATLAB语句的一般形式: 变量=表达式 例如: x=100; y=10*x; z=x2; w=sqrt(z) 计算优先级,和sqrt的优先级最高,*、/次之,+、-的优先级最低。 如 1+2*34 ans = 163 2、数字的输入输出格式 在MATLAB中数值有多种显示形式,在默认情况下,若数据为整数,则以整型表示;若为实数,则保留小数点后4位的浮点型表示。,输入输出格式format命令来控制: FORMAT SHORT 5位 FORMAT LONG 15位 FORMAT RAT 有理数表达 具体可用 help format 查看 MATLAB将所有变量均存成double的形式,不需要进行说明。 以sqrt(2)为例来具体展示各种不同各式对显示的影响。 format short, sqrt(2) ans = 1.4142 format rational, sqrt(2) ans = 1393/985,MATLAB基本数学函数(ELFUN),三角函数 sin 正弦函数 sinh 双曲正弦函数 asin 反正弦函数 asinh 反双曲正弦函数 cos 余弦函数 cosh 双曲余弦函数 acos 反余弦函数 acosh 反双曲余弦函数 tan 正切函数 tanh 双曲正切函数 atan 反正切函数 atan2 四像限反正切函数 atanh 反双曲正切函数 sec 正割函数 sech 双曲正割函数 asec 反正割函数 asech 反双曲正割函数 csc 余割函数 csch 双曲余割函数 acsc 反余割函数 acsch 反双曲余割函数 cot 余切函数 coth 双曲余切函数 acot 反余切函数 acoth 反双曲余切函数,2、指数函数 exp 指数函数 log 自然对数函数 logl0 常用(以10为底)对数函数 log2 以2为底对数函数 sqrt 平方根函数 3、复数函数 abs 模函数 angle 相角函数 conj 复共轭函数 imag 复矩阵虚部 real 复矩阵实部 4、舍入函数和剩余函数 fix 朝零方向舍入 floor 朝负方向舍入 ceil 朝正方向舍入 round 四舍五入函数 mod (带符号)求余函数 sign 符号函数,函数使用说明: (1) 三角函数以弧度为单位计算。 (2) abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。 (3) 用于取整的函数有fix、floor、ceil、round,要注意它们的区别。 输入命令: x=1+2i; y=3-sqrt(17); z=(cos(abs(x+y)-sin(78*pi/180)/(x+abs(y),三、字符串 1、关于字符串的约定 在matlab中所有的字符串都用单引号设定后输入或赋值 例如. S= very good Size 命令用来查看字符数组s的维数 s=matlab; size (s) ans = 1 6 s=matlab; a=size(s); a(2) ans = 6,2.字符数组的生成 函数char可以用来生成字符数组 例如. S3char(v,e,r,y); 显示行向量,若s3,显示列向量; 3、字符串和数组之间的转换 (1)字符串转换为数值代码,用double 例如:double (s3) (2)字符数组转换为字符串,用cellstr s3=char(v,e,r,y); cellstr(s3) ans = very 字符串和数字间的转换 num2str 数字转换为字符串 int2str 整数转换为字符串 mat2str 矩阵转换为字符串 str2num 转换字符串为数字 a=1:5; b=num2str(a),练习 1. 计算:当x分别等于x=5,y=6 时, (提示:在matlab中用表示次方运算是23,还要注意小括号的运用) 2. 计算: (提示:在matlab中三角函数都是弧度制,) 3.用char法创建字符数组,并把该数组进行字符串和数字间的转换操作。 4应用基本数学函数构造一些函数,并求一些函数值。,四、向量及其运算,1、向量的生成 (1)直接输入向量 向量元素需要用“ ”括起来,元素之间可以用空格、逗号分隔生成行向量或分号分隔,生成列向量。 (2)利用冒号表达式生成向量 基本形式为:x=x0:step:xn 可以省略 Xn是尾元素数值限,而非尾元素值,当xn-x0恰为step值的整数倍时, Xn是尾元素值。 如:a=12:3:35 a = 12 15 18 21 24 27 30 33 Step可以为负,C=12:-2:5 b = 12 10 8 6 Step=1时可省略。 c=1:6,例如:计算的正弦,余弦值 x=0:15:105 x = 0 15 30 45 60 75 90 105 y=sin(x/180*pi) y = 0 0.2588 0.5000 0.7071 0.8660 0.9659 1.0000 0.9659 z=cos(x/180*pi) z = 1.0000 0.9659 0.8660 0.7071 0.5000 0.2588 0.0000 -0.2588 (3)线性等分向量的生成 调用格式:y=linspace(x1,x2) 生成100维的行向量,使得y(1)=x1, y(100)=x2; y=linspace(x1,x2,n) 生成n维的行向量,使得y(1)=x1, y(n)=x2;, a=linspace(1,100,6); a a = 1.0000 20.8000 40.6000 60.4000 80.2000 100.0000 2、向量的基本运算:加减与数乘 a-1 ans = 0 19.8000 39.6000 59.4000 79.2000 99.0000 a*2 ans = 2.0000 41.6000 81.2000 120.8000 160.4000 200.0000 3、点积、叉积及混合积的实现 (1)点积 dot(a,b)返回向量a,b的数量积。a和b必须同维。 例:计算向量a=(1,2,3)和b=(3,4,5)的点积, a=1 2 3; b=3,4,5; dot(a,b) ans = 26 或 sum(a.*b) dot(a,b,dim)返回向量a,b在维数为dim的点积 dot(a,b,1) ans = 3 8 15 (2)叉积: C=cross(a,b) 例 计算垂直于向量a=(1,2,3)和b=(3,4,5)的向量 a=1 2 3; b=3,4,5; c=cross(a,b) c = -2 4 -2,(3)混合积 计算上面向量a,b,c的混合积 dot(a,cross(b,c) ans = 24 三、矩阵及其运算 1、矩阵的生成 (1) 用赋值语句定义:多用于小矩阵的输入,以 为标识,同行元素以“,”或空格分开,行与行之间用“;”或回车符分隔。 矩阵的元素可以是数字、字符串或表达式。表达式中不能包含没有定义的变量。 a=1,2,3,4,5;6,7,8,9,10 a = 1 2 3 4 5 6 7 8 9 10,(2)创建M文件输入大矩阵 M文件是一种可以在MATLAB环境下运行的文本文件,它可分为命令式文件和函数式文件两种。这里用到命令式文件,用它的最简单的形式来创建大型矩阵。 (1) 启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵: %example.m exm=4 5 6 7 8 9 5,6 4 3,2 4 1 3 6 8 9 5 7,8,3,5,6,5 (2) 把输入的内容以纯文本方式存盘(设文件名为example.m)。 (3) 在MATLAB命令窗口中输入example.m ,即运行该M文件,就会自动建立一个名为example的矩阵,可供以后使用。,(3) 扩充、修改矩阵 先用赋值语句定义一个数组,再用数组编辑器Array Editor进行修改: b=1; 再在Workspace 中选择b,取右键的Open Selection,可以修改维数,并输入元素的值。 b b = 1 2 3 4 5 6 7 8 练习 (1)请创建一个2*3的矩阵,然后利用编辑器将其扩充为4*5矩阵。 (2)请用赋值语句建立一个矩阵 (3)利用冒号表达式生成向量的方式计算函数 在x0 ,1 ,2 ,3, 4 ,5 ,6 ,7, 8各点的函数值。,2、矩阵的运算,例 矩阵相乘 a=2 1 -3 -1;3 1 0 7;-1 2 4 -2 a = 2 1 -3 -1 3 1 0 7 -1 2 4 -2 b=a %矩阵b是矩阵a的转置矩阵 b = 2 3 -1 1 1 2 -3 0 4 -1 7 -2 a*a ans = 14 3 -10 21 3 6 5 2 -10 5 25 -5 21 2 -5 54 a*a ans = 15 0 -10 0 59 -15 -10 -15 25,练习:1.自己随意构造符合运算要求的矩阵进行加减乘的运算;2. A=1,2,3,计算A与A的积,2.矩阵与常数的运算 矩阵与常数间的运算即为矩阵的每一个元素与常数的运算。需注意的是当做除法运算时,常数只能做除数。 例 A=2,3,4;5,6,7 A = 2 3 4 5 6 7 C1=A*2 C1 = 4 6 8 10 12 14 3.矩阵的逆运算 例: inv(A) 求矩阵A的逆矩阵。 a=2 1 -3 -1;3 1 0 7;-1 2 4 -2;1 0 -1 5; inv(a) inv(a)*a,当矩阵是长方阵时,无法求得矩阵的逆,此时可以用pinv(A)求矩阵A的伪逆,例: a=1,2;3,4;5,6 a = 1 2 3 4 5 6 b=pinv(a) b= -1.3333 -0.3333 0.6667 1.0833 0.3333 -0.4167 b*a %是2*2的单位阵 ans = 1.0000 0.0000 0 1.0000 a*b %是3*3的矩阵,非单位阵 ans = 0.8333 0.3333 -0.1667 0.3333 0.3333 0.3333 -0.1667 0.3333 0.8333,4. 矩阵的除法-左除和右除/ AB表示A左除B,相当于是inv(A)*B; A/B表示A右除B,相当于是A*inv(B) 例 a=1,2;3,4;5,6 a = 1 2 3 4 5 6 b=5,6;7,8;9,10 b = 5 6 7 8 9 10 c=ab C = -3.0000 -4.0000 4.0000 5.0000 d=a/b d = 2.0000 0 -1.0000 1.5000 0 -0.5000 1.0000 0 0, e=ba e = 5.0000 4.0000 -4.0000 -3.0000 f=b/a f = 0.0000 0 1.0000 -0.5000 0 1.5000 -1.0000 0 2.0000 说明:可以用矩阵求逆和矩阵除法求解线性方程组 对于线性方程组Ax=b,我们有两种解法: 利用逆矩阵求解:x=inv(A)*b 利用矩阵的左除求解:x=Ab,5. 矩阵的行列式运算 行列式函数det(A) 例: X=fix(rand(4)*10) X = 8 3 8 5 6 5 5 4 3 7 3 6 2 3 7 6 a=det(X) a = -246 练习 求A矩阵及其逆的行列式的积 练习:自己构造矩阵,对以上讲得运算(常数与矩阵,矩阵的逆以及左右除和行列式)进行验证。,矩阵的基本函数运算 1.特征值函数 在线性代数中,当矩阵A,常数 满足 时,称为A的特征根;而x 就称为特征向量。在MATLAB中,特征根与特征向量可由两个函数eig 和eigs 计算得出 例 A=7,3,-2;3,4,-1;-2,-1,3; x,y=eig(A) 其中y为特征根向量,x为特征根对应的特征向量矩阵 2.秩函数 矩阵的秩由函数rank 实现 例 求上例中矩阵A的秩 ,命令rank(A) 3、矩阵的幂运算 矩阵的幂运算的形式同数字的幂运算的形式相同,即用算符“”表示。,3.迹函数 矩阵上所有对角线上元素的和称为矩阵的迹,由trace 函数实现。 例 求上例中矩阵A的迹,命令trace(A) 4.伪逆函数 伪逆矩阵,也就是数学上的广义逆矩阵,一般当A不为方阵,而是一个 的矩阵时或者A奇异时,用pinv函数实现。 例 a=magic(4); inv(a); pinv(a) b=a*1,1,1,1 inv(a)*b pinv(a)*b 练习:自己随意构造矩阵,求他们的特征值函数,迹、秩和伪逆,matlab基本矩阵 1. 几种常用的工具阵 zeros 零矩阵函数 zeros(N) :生成 阶的全零阵 zeros(M,N) :生成 阶的全零阵 zeros(size(A) 生成与A同阶的全0阵 ones 全一矩阵 ones(N) :生成 阶的全1阵 ones(M,N) :生成 阶的全1阵 ones(size(A) 生成与A同阶的全1阵 eye 单位矩阵 rand 均匀分布随机数(阵),元素位于(0.0,1.0)内 randn 正态分布随机数(阵) ,元素属于N(0,1)正态分布 例 建立随机矩阵: (1) 在区间20,50内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。 命令如下: x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5),练习:1. Arand(3),Bmagic(3),Crand(3,4),计算A*B*C;A*B与B*A是否相等 2. 创建一个5*5随机矩阵,并求逆。 3. 创建一个4*3随机矩阵,并求逆。 4. 用两种方法求解线性方程组Ax=b。(A取4阶随机矩阵) 5. 利用上面的A,计算B=A5和C=(0.5)A。 6、构造5阶的全0阵;构造4阶的单位矩阵 2. 其他特殊矩阵的生成 常见的有:compan : 友矩阵函数; magic : 魔方矩阵 pascal :pascal 矩阵 hilb :Hilbert 矩阵 vander :范德蒙矩阵,魔方矩阵 魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。 例2-5 将101125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。 M=100+magic(5) (2) 范得蒙矩阵 范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个范得蒙矩阵。在MATLAB中,函数vander(V)生成以向量V为基础向量的范得蒙矩阵。例如,A=vander(1;2;3;5)即可得到上述范得蒙矩阵。 (6) 帕斯卡矩阵 我们知道,二次项(x+y)n展开后的系数随n的增大组成一个三角形表,称为杨辉三角形。由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。函数pascal(n)生成一个n阶帕斯卡矩阵。 例2-7 求(x+y)5的展开式。 在MATLAB命令窗口,输入命令: pascal(6) 矩阵次对角线上的元素1,5,10,10,5,1即为展开式的系数。,矩阵的一些特殊操作 1. 变维 实现矩阵的变维操作有两种方法,“:”和函数“reshape”, “ :”主要针对两个矩阵之间的运算,所以这两个矩阵必须预先定义维数;而“reshape” 则是针对一个矩阵的操作。 Reshape(X,M,N) :将已知矩阵X变维成 阶的矩阵。 例 变维示例 a=1:12; b=reshape(a,2,6) c=zeros(3,4); %预先定义一个的全0阵 c(:)=a(:) c,2. 矩阵的变向: 矩阵的变向操作包括矩阵的旋转、左右翻转和上下翻转,分别由函数rot90,fliplr 和flipud 来实现。函数flipdim 用来对指定维进行翻转。 rot90(A) :将A逆时针方向旋转90; rot90(A,K) :将A逆时针方向旋转(90*K),K正逆时针,K负顺时针; fliplr(X) :将X左右翻转; flipud(X) :将X上下翻转; flipdim(X,dim) :将X的第dim翻转;其中dim=1上下翻转;dim=2左右翻转;dim=3时不变。 例 矩阵变向 c=1,4,7,10;2,5,8,11;3,6,9,12 flipdim(c,1) flipdim(c,2) flipdim(c,3) 操作:上一习题中自己构造的矩阵,对它们进行各种翻转。,3. 矩阵的抽取 1). diag(X,K) : 抽取矩阵X的第K条对角线上的元素。 K=0抽取主对角线,K0为上方第K条对角线,K a=pascal(4) % 4阶pascal 矩阵 v=diag(a) v=diag(a,2) v=diag(diag(a) tril(X) : 提取矩阵X的主下三角部分; tril(X,k) :提取矩阵X的第k条对角线下面的部分; triu(X) :提取矩阵X的主上三角部分; triu(X,k ) : 提取矩阵X的第k条对角线上面的部分;,例 对上例中的a进行三角抽取。 a1=tril(a,-1) a1=tril(a,2) 操作:自己随意创立矩阵,对矩阵的元素进行抽取,2.4 数组及其运算,1 基本数组运算 (1). 数组的加减运算与矩阵相同;乘除与矩阵有相当大的差别,数组的乘除是指两同维数组间对应元素之间的乘除,运算符号“.*” 和 “./” 或“.” a.b相当于是 ; a./b相当于是 例 示例数组的运算: a1=1,2,3;2,3,4;3,4,5; b1=1 1 1;2 2 2;3 3 3 a1.b1 a1./b1,(2) 而数组的幂运算、指数运算、对数运算和开方运算则是对数组的每一个对应元素分别进行幂、指数、对数和开方的运算。 例 对上例中的a1进行幂、指数、对数和开方的运算 a1.3 注意:”.不能省,否则成为矩阵的幂的运算,那结果不同! a=1 2 3;4 5 6;7 8 9; a3 ans = 468 576 684 1062 1305 1548 1656 2034 2412 a.3 ans = 1 8 27 64 125 216 343 512 729 exp(a1) log(a1) sqrt(a1) 注意:在矩阵中对应的运算该是expm(a1) 等,数组的逻辑运算 1. 基本逻辑关系运算,例 数组逻辑关系运算演示. a=1:3;4:6;7:9; x=5; y=ones(3)*5; xa=xya=y=a enter n_b=b enter,2. 逻辑关系的函数运算 逻辑关系的函数有: any : 若向量至少有一元素不为0,则返回真; all : 若向量的所以元素不为0,则返回真; islogical :判断逻辑数组;logical :转换数值为逻辑型 xor :逻辑或非; isempty: 判断空矩阵 isequal : 判断相等数组 isnumeric : 判断数值矩阵 islogical : 判断逻辑数组 find :寻找非0元素坐标; isnan :判断不定数; isinf :判断无限大元素; isfinite :判断有限大元素,例 all 和 any 的使用。 a=magic(5); a(:,3)=zeros(5,1) enter a1=all(a(:,1)all=any(a(:,1)10) enter 例 find函数的用法 a=1:5; a=1./a enter f1=fing(a) enter f2=find(abs(a)0.4|abs(a)0.23) enter 练习:1.自己构造几组数组,反复练习数组的加减乘左除以及右除、幂、指数对数和平方根的运算; 2. 以pascal矩阵为例,检验all、any、find函数的作用,2.5 多项式,1 多项式的表示: 对于多项式: :用以下的行向量表示,1多项式的输入 (1)直接输入法 由于在matlab中的多项式是以向量的形式存储的,因此,最简单的多项式输入即为直接的向量输入,matlab自动的将向量按降幂顺序分配各系数值。 例如 输入多项式 p=1 -5 0 33 p = 1 -5 0 33 poly2sym(p) % poly2sym为符号工具箱中的函数 ans = x3-5*x2+33 :当按降幂次排列时中缺少某些幂次项时,必须用零补上。,(2)特征多项式输入法 求矩阵的特征多项式获得,由函数ploy实现 例如: a=1 2 3 ;4 5 6 ;7 8 9 p1=poly(a) p1 = 1.0000 -15.0000 -18.0000 -0.0000 poly2sym(p1) ans = x3-15*x2-18*x-5879637980086429/316912650057057350374175801344 ::特征多项式生成的多项式的首项系数为1。 (3)根创建多项式 例如:由根x=-1,x=3 x=4.5 生成的多项式 root=-1 3 4.5 p=poly(root) p = 1.0000 -6.5000 6.0000 13.5000 poly2sym(p) ans = x3-13/2*x2+6*x+27/2 练习:仿照例题分别用3种方法创建多项式,数据自己构造。,2 多项

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论