《MATLAB中的矩阵与向量运算.doc》由会员分享,可在线阅读,更多相关《MATLAB中的矩阵与向量运算.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、4、1 数组运算与矩阵运算从外观形状与数据结构来瞧,二维数组与数学中得矩阵没有区别、但就是,矩阵作为一种变换或映射算符得体现,矩阵运算有着明确而严格得数学规则、而数组运算就是MATLAB软件所定义得规则,其目得就是为了数据管理方面,操作简单,指令形式自然与执行计算有效、所以,在使用MATLAB时,特别要明确搞清数组运算与矩阵运算得区别、表4、1、1列出了两种运算指令形式得实质内涵得异同、4、1、1 数组运算与矩阵运算指令形式与实质内涵数组运算 矩阵运算指令 含义 指令 含义A、非共轭转置 A共轭转置A=s把标量s赋给数组A得每个元素s+B把标量s分别与数组B得每个元素相加 sB, Bs标量s分
2、别与数组B得元素之差s、*A标量s分别与数组A得元素之积 s*A标量s分别与矩阵A得元素之积s、/B, B、s标量s分别被数组B得元素除 s*inv(B)矩阵B得逆乘标量sA、n数组A得每个元素得n次方 An A为方阵时,矩阵A得n次方A+B数组对应元素得相加 A+B矩阵相加AB数组对应元素得相减 AB矩阵相减A、*B数组对应元素得相乘 A*B内维相同矩阵得乘积A、/B A得元素被B得对应元素除 A/B A右除BB、A一定与上相同 BA A左除B(一般与右除不同)exp(A)以e为底,分别以A得元素为指数,求幂 expm(A) A得矩阵指数函数log(A) 对A得各元素求对数 logm(A)
3、A得矩阵对数函数sqrt(A) 对A得积各元素求平方根 sqrtm(A) A得矩阵平方函数从上面可以瞧到,数组运算得运算如:乘,除,乘方,转置,要加点、所以,我们要特别注意在求乘,除,乘方,三角与指数函数时,两种运算有着根本得区别、另外,在执行数组与数组运算时,参与运算得数组必须同维,运算所得得结果数组也就是总与原数组同维、4、2 数组得基本运算在MATLAB中,数组运算就是针对多个数执行同样得计算而运用得、MATLAB以一种非常直观得方式来处理数组、4、2、1 点转置与共轭转置、 点转置、非共轭转置,相当于conj(A)、 a=1:5; b=a、 b =12345 c=b、 c =1 2 3
4、 4 5这表明对行向量得两次转置运算便得到原来得行向量、 共轭转置、对向量进行转置运算并对每个元素取其共轭、如: d=a+i*ad =Columns 1 through 31、0000 + 1、0000i 2、0000 + 2、0000i 3、0000 + 3、0000iColumns 4 through 54、0000 + 4、0000i 5、0000 + 5、0000i e=de =1、0000 1、0000i2、0000 2、0000i3、0000 3、0000i4、0000 4、0000i5、0000 5、0000i4、2、2 纯量 (标量) 与数组得四则运算纯量与数组之间可以进行简单
5、数学运算、如:加,减,乘,除及其混合运行、 g=1 2 3 45 6 7 89 10 11 12 g=g2g =1 0 1 23 4 5 67 8 9 10 2*g1ans =3 1 1 35 7 9 1113 15 17 194、2、3 数组间得四则运算在MATLAB中,数组间进行四则运算时,参与运算得数组必须具有相同得维数,加,减,乘,除运算就是按元素与元素得方式进行得、其中,数组间得加,减运算与矩阵得加,减运算要同,运算符为:+,、但就是,数组间得乘,除运算与矩阵间得乘,除运算完全不同,运算符号也有差别,数组间得乘,除运算符为:、*,、/或、1、 数组按元素相加,减 g=1 2 3 45
6、 6 7 89 10 11 12 h=1 1 1 1; 2 2 2 2; 3 3 3 3 g+h % 按元素相加ans =2 3 4 57 8 9 1012 13 14 15 ansh % 按元素相减ans =1 2 3 45 6 7 89 10 11 12 2*gh % 混合运算ans =1 3 5 78 10 12 1415 17 19 212、 按元素乘 g、*hans =1 2 3 410 12 14 1627 30 33 363、 按元素除数组间得除法运算符有两个,即左除:、/与右除:、,它们之间得关系就是:a、/b=b、a g、/hans =1、0000 2、0000 3、0000
7、 4、00002、5000 3、0000 4、1000 4、00003、0000 3、3333 3、6667 4、0000 h、gans =1、0000 2、0000 3、0000 4、00002、5000 3、0000 4、1000 4、00003、0000 3、3333 3、6667 4、00004、2、4 幂运算在MATLAB中,数组得幂运算得运算为:、,表示每一个元素进行幂运算、 g、2 % 数组g每个元素得平方ans =1 4 9 1625 36 49 6481 100 121 144 g、(1) % 数组g得每个元素得倒数ans =1、0000 0、5000 0、3333 0、25
8、000、2000 0、1667 0、1429 0、12500、1111 0、1000 0、0909 0、0833 2、g % 以g得每个元素为指数对2进行乘方运算ans =2 4 8 1632 64 128 256512 1024 2048 4096 g、h % 以h得每个元素为指数对g中相应元素进行乘方运算ans =1 2 3 425 36 49 64729 1000 1331 1728 g、(h1)ans =1 1 1 15 6 7 881 100 121 1444、2、5 数组得指数,对数与开方运算在MATLAB中,所谓数组得运算实质就是就是数组内部每个元素得运算,因此,数组得指数,对数
9、与开方运算与标量得运算规则完全就是一样得,运算符函数分别为:exp( ),log( ),sqrt( )等、 a=1 3 4;2 6 5;3 2 4; c=exp(a)c =2、7183 20、0855 54、59827、3891 403、4288 148、413220、0855 7、3891 54、5982数组得对数,开方运算与数组得指数运算,其方式完全一样,这里不详述、4、3 向量运算对于一行或一列得矩阵,为向量,MATLAB有专门得函数来进行向量点积,叉积与混合积得运算、4、3、1 向量得点积运算在高等数学中,我们知道,两向量得点积指两个向量在其中一个向量方向上得投影得乘积,通常用来定义向
10、量得长度、在MATLAB中,向量得点积用函数dot来实现,其调用格式如下:C=dot(A,B) 返回向量A与B得点积,结果存放于C中、C=dot(A,B, DIM) 返回向量A与B在维数为DIM得点积,结果存放于C中、 A=2 4 5 3 1; B=3 8 10 12 13; C=dot(A,B)C =137 C=dot(A,B,4)C =6 32 50 36 134、3、2 向量得叉积运算在高等数学中,我们知道,两向量得叉积返回得就是与两个向量组成得平面垂直得向量、在MATLAB中,向量得点积用函数cross来实现,其调用格式如下:C=cross(A,B) 返回向量A与B得叉积,即:,结果存
11、放于C中、C=cross(A,B, DIM) 返回向量A与B在维数为DIM得叉积,结果存放于C中、 A=2 4 5; B=3 8 10; C=cross(A,B)C =0 5 44、3、3 向量得混合运算 D=dot(A, cross(B,C)D =41上例表明,首先进行得就是向量B与C得叉积运算,然后再把叉积运算得结果与向量A进行点积运算、4、4 矩阵得基本运算如果说MATLAB得最大特点就是强大得矩阵运算功能,此话毫不为过、事实上,MATLAB中所有得计算都就是以矩阵为基本单元进行得、MATLAB对矩阵得运算功能最全面,也就是最为强大得、矩阵在形式上与构造方面就是等同于前面所述得数组得,当
12、其数学意义却就是完全不同得、矩阵得基本运算包括矩阵得四则运算,矩阵与标时得运算,矩阵得幂运算,指数运算,对数运算,开方运算及以矩阵得逆运算,行列式运算等、4、4、1 矩阵得四则运算矩阵得四则运算与前面介绍得数组得四则运算基本相同、但也有一些差别、1、 矩阵得加减矩阵得加,减与数组得加,减就是完全相同得,运算时要求两矩阵得大小完全相同、 a=1 2; 3 5; 2 6; b=2 4; 1 8; 9 0; c=a+bc =3 64 1311 62、 矩阵得相乘对于矩阵得乘法,从线性代数中,我们知道,要求进行相乘得两矩阵有相同得公共维、如: a=1 2; 3 5; 2 6; b=2 4 1; 8 9
13、 0; c=a*bc =18 22 146 57 352 62 2设A矩阵为一个阶得矩阵,则要求与之相乘得B矩阵必须就是一个阶,得到矩阵就是阶得、即,只有当第一个矩阵 (左矩阵) 得列数等于第二个矩阵 (右矩阵) 得行数时,两个矩阵得乘积才有意义、3、 矩阵得除法对于矩阵得除法有两个运算符号,分别为左除符号与右除符号/、矩阵得右除运算速度要慢一点,而左除运算可以避免奇异矩阵得影响、对于方程,若此方程为超定得方程,则使用除法可以自动找到使得平方最小化得解、若此方程为不定方程,则使用除法运算符至少求得得解至多有rank(A) (矩阵A得秩)个非零元素,而且求得得解就是这种类型得解中范数最小得一个、
14、 a=21 34 20; 5 78 20; 21 14 17; 34 31 38; b=10 20 30 40; x=bax =0、7667 1、1867 0、8767上面方程就是超定方程、要注意得:结果矩阵x就是列向量形式、如果, a=21 34 20 5; 78 20 21 14; 17 34 31 38; b=10 20 30; x=bax =1、6286 1、2571 1、1071 1、0500上面得方程为不定方程、4、 矩阵与标量间得四则运算矩阵与标量得四则运算与数组与标量间得四则运算完全相同,即矩阵中得每个元素与标量进行加,减,乘,除四则运算、需要说明得就是,当进行除法运算时,标量
15、只能做除数、5、 矩阵得幂运算矩阵得幂运算与标量得幂运算不同、用符号,它不就是对矩阵得每个元素进行幂运算,而就是与矩阵得某种分解有关、 b=21 34 20; 78 20 21; 17 34 31; c=b2c =3433 2074 17543555 3766 26313536 2312 20156、 矩阵得指数,对数运算与开方运算矩阵得指数运算,对数运算与开方运算与数组相应得运算就是不同得、它并不就是对矩阵中得单个元素得运算,而就是对整个矩阵得运算、这些运算函数如下:expm, expm1, expm2, expm3 指数运算函数;logm 对数运算函数;sqrtm 开方运算函数、 a=1
16、3 4; 2 6 5; 3 2 4; c=expm(a)c =1、0e+004 *0、4668 0、7694 0、92000、7919 1、3065 1、56130、4807 0、7919 0、9475 c=logm(a)c =0、5002 + 2、4406i 0、5960 0、6800i 0、7881 1、2493i0、4148 + 0、4498i 1、4660 0、1253i 1、0108 0、2302i0、5780 1、6143i 0、4148 + 0、4498i 1、0783 + 0、8263i c=sqrtm(a)c =0、6190 + 0、8121i 0、8128 0、2263i
17、1、1623 0、4157i0、3347 + 0、1497i 2、3022 0、0417i 1、1475 0、0766i1、0271 0、5372i 0、3347 + 0、1497i 1、6461 + 0、2750i7、 矩阵得转置,逆运算与行列式运算矩阵得转置得运算符为、求逆用运算函数:inv( )、而用函数:det( )则可求得矩阵行列式得大小、 a=1 2 0; 2 5 1; 4 10 1; c=ac =1 2 42 5 100 1 1 b=inv(a)b =5 2 22 1 10 2 1 d=det(a)d =14、5 矩阵得特殊运算矩阵得特殊运算包括矩阵特征值运算,条件数运算,奇异值
18、运算,范数运算,秩运算,正交化运算,迹运算,伪逆运算等,这些运算,MATLAB都可以非常方便地给出、4、5、1 矩阵得特征值运算在线性代数中,计算矩阵得特征值过程相当复杂、而在MATLAB中,矩阵特征值运算只需用函数eig( )或eigs( )计算即可得到、其使用格式如下、E=eig(X) 生成由矩阵X得特征值所组成得一个列向量;V,D=eig(X) 生成两个矩阵V与D,其中V就是以矩阵X得特征向量作为列向量组成得矩阵,D就是由矩阵X得特征值作为主对角线元素构成得对角矩阵、eigs( )函数使用迭代法求解矩阵得特征值与特征向量、D=eigs(X) 生成由矩阵X得特征值所组成得一个列向量、X必然
19、就是方阵,最好就是大型稀疏矩阵;V,D=eigs(X) 生成两个矩阵V与D,其中V就是以矩阵X得特征向量作为列向量组成得矩阵,D就是由矩阵X得特征值作为主对角线元素构成得对角矩阵、 a=1 2 0; 2 5 1; 4 10 1;b,c=eig(a)b =0、2440 0、9107 0、44720、3333 0、3333 0、00000、9107 0、2440 0、8944c =3、7321 0 00 0、2679 00 0 1、00004、5、2 矩阵 (向量) 得范数运算为了反映了矩阵 (向量) 某些特性,线性代数中引入了范数得概念,它分为2范数,1范数,无穷范数与Frobenius范数等、
20、在MATLAB中,用函数norm( )或normest( ) 计算矩阵 (向量) 得范数、其使用格式如下、norm(X) 计算矩阵 (向量) X得2范数;norm(X,2) 同上;norm(X,1) 计算矩阵 (向量) X得1范数;norm(X,inf) 计算矩阵 (向量) X得无穷范数;norm(X,fro) 计算矩阵 (向量) X得Frobenius范数;normest(X) 只计算矩阵 (向量) X得2范数;并且就是2范数得估计值,适用于计算norm(X)比较费时得情况、 X=hilb(4)X =1、0000 0、5000 0、3333 0、25000、5000 0、3333 0、250
21、0 0、20000、3333 0、2500 0、2000 0、16670、2500 0、2000 0、1667 0、1429 norm(4)ans =4 norm(X)ans =1、5002 norm(X,2)ans =1、5002 norm(X,1)ans =2、0833 norm(X,inf)ans =2、0833 norm(X,fro)ans =1、5097 normest(X)ans =1、50024、5、3 矩阵得条件数运算矩阵得条件数就是判断矩阵病态程度得一个量值,矩阵A得条件数越大,表明A越病态,反之,表明A越良态、如Hilbert矩阵就就是一个有名得病态矩阵、cond(X) 返
22、回矩阵X得2范数得条件数;cond(X, P) 返回矩阵X得P范数得条件数,其中P为1,2,inf或fro;rcond(X) 用于计算矩阵条件数得倒数值,当矩阵X为病态时,rcond(X)就接近0,X为良态时,rcond(X)就接近1、condest(X) 计算关于矩阵X得1范数得条件数得估计值、 M=magic(3)M =8 1 63 5 74 9 2 H=hilb(4)H =1、0000 0、5000 0、3333 0、25000、5000 0、3333 0、2500 0、20000、3333 0、2500 0、2000 0、16670、2500 0、2000 0、1667 0、1429
23、c1=cond(M)c1 =4、3301 c2=cond(M)c2 =4、3301 c3=rcond(M)c3 =0、1875 c4=condest(M)c4 =5、3333 h1=cond(H)h1 =1、5514e+004 h2=cond(H,inf)h2 =2、8375e+004 h3=rcond(H)h3 =3、5242e005 h4=condest(H)h4 =2、8375e+004从上计算可以瞧出,魔方矩阵比较良态,而Hilbert矩阵就是病态得、4、5、4 矩阵得秩秩就是线性代数中得相当重要得概念之一,通常矩阵可以经过初等行列式或列变换,将其转化为行阶梯形矩阵,而行阶梯矩阵所包含
24、非零行得行数就是一个定得,这个确定得非零行得行数就就是矩阵得秩、矩阵中得秩用函数rank( )来计算、 T=rand(6)T =0、9501 0、4565 0、9218 0、4103 0、1389 0、01530、2311 0、0185 0、7382 0、8936 0、2028 0、74680、6068 0、8214 0、1763 0、0579 0、1987 0、44510、4860 0、4447 0、4057 0、3529 0、6038 0、93180、8913 0、6154 0、9355 0、8132 0、2722 0、46600、7621 0、7919 0、9169 0、0099 0、1988 0、4186 r=rank(T)r =6由上计算可知,矩阵T为满秩矩阵、 T1=1 1 1; 2 2 3T1 =1 1 12 2 3 r=rank(T1)r =2由上计算可知,矩阵T1为行满秩矩阵、参考网站: