第2章-数值计算功能课件.ppt
《第2章-数值计算功能课件.ppt》由会员分享,可在线阅读,更多相关《第2章-数值计算功能课件.ppt(65页珍藏版)》请在三一办公上搜索。
1、MATLAB应用相当广泛的一个领域是解决数值计算问题。这是由于MATLAB 对处理数组具有非凡的能力,使其成为许多科学与工程应用中的一个有力的工具。本章主要介绍矩阵的创建、运算以及如何运用MATLAB解决线性代数中的相关问题。【学习目标】能够创建矩阵,并熟练掌握矩阵的各种运算法则掌握稀疏矩阵的基本操作。学会运用MATLAB解决线性代数的相关问题。掌握如何运用MATLAB实现数据的插值、曲线的拟合和零极点的求解。,2.1 矩阵及其运算,MATLAB最基本、最重要的功能就是进行矩阵运算。所有的数值功能都是以矩阵为基本单位实现的。,2.1.1 矩阵生成,1.直接生成矩阵的生成可以通过在方括号中输入元
2、素实现,不同行之间要用分号隔开,不同列用空格分开。【例2-1】生成一个23矩阵。a=1 2 3;4 5 6 a=1 2 3 4 5 6可以用冒号快速建立矩阵,步长在默认的情况下为1,也可以自定义步长。a=1:3;4:6a=1 2 3 4 5 6,2.函数生成MATLAB中提供了特殊函数可以生成特殊矩阵。【例2-2】生成一个23全零矩阵,一个33单位矩阵。a=zeros(2,3)%生成23全零阵a=0 0 0 0 0 0 a=eye(3,3)%生成33单位阵a=1 0 0 0 1 0 0 0 1,常用的特殊矩阵列在表2.1当中。表2.1常用的特殊矩阵,2.1.2 矩阵连接,矩阵连接,是联合一个或
3、多个矩阵形成一个新矩阵。方括号就可以作为矩阵连接操作符。表达式A=B C就是水平连接矩阵B和C;A=B;C就是垂直连接矩阵B和C连接矩阵也可以用函数形成一个新矩阵,如cat函数。cat函数调用格式:1)C=cat(dim,A,B)Dim指链接方向。Dim的可选值:1,垂直方向;2,水平方向;3,生成三维数组。2)C=cat(dim,A1,A2,)可以实现连接多个矩阵。,【例2-3】把矩阵A,B分别在垂直方向,水平方向连接,A=1 2 3,B=4 5 6。C1=cat(1,A,B)%垂直方向连接C1=1 2 3 4 5 6 C2=cat(2,A,B)%水平方向连接C2=1 2 3 4 5 6,表
4、2.2列出了常用的连接矩阵函数。表2.2 连接矩阵函数,2.1.3 矩阵元素的下标引用及操作,1.矩阵下标 在MATLAB中,矩阵元素的引用可以通过下标表示,通常有如下规则:1)用两个下标来表示:在矩阵A中,第i行j列的元素用A(i,j)来表示。2)用一个下标来表示:对于矩阵,由于MATLAB的基本运算都是对列操作的,矩阵认为是按列优先排列的一个长的列向量,从而可用单下标引用。,【例2-4】提取矩阵的元素。A=1 2 3;4 5 6;7 8 9A=1 2 34 5 67 8 9可以用A(m,n)选出第m行n列的元素。A(2,3)ans=6也可以用一个下标选出元素。A(8)ans=6,2.矩阵的
5、抽取用下标可以从大矩阵里面抽取某些元素组成小的矩阵,并使用()运算符。【例2-5】提取矩阵A的前2行为一个新矩阵B。B=A(1:2,:)%B=A(1 2,:)B=1 2 3 4 5 6,3.删除矩阵的行和列 我们把空的中括号称为空矩阵,即矩阵大小为00。可以通过把矩阵的行或列赋值为空矩阵来删除某行或某列。【例2-6】删除上例中A的第1,2列。A(:,1 2)=A=3 6 9 在MATLAB里不能用双下标来删除矩阵的某个元素,例如X(1,2)=将给出错误信息。但可以用单下标来删除矩阵的某个或某些元素,MATLAB删除这些元素后,将剩下的元素按列编成一个长的行向量。,4.reshape函数实现改变
6、矩阵大小reshape函数可以实现矩阵行列大小的变化,但变化前矩阵行列值的乘积和变化后的行列值的乘积不变。reshape(A,M,N)命令将矩阵A的所有元素分配到一个MN的新的矩阵,当矩阵A的元素个数不是MN时,将返回一个错误。reshape(A,M,N,P,)命令返回由矩阵A的元素组成的MNP.多维的矩阵,如果MNP.与A的元素个数不一样时将返回错误。reshape(A,M,N,P,)命令与reshape(A,M,N,P,)命令的作用一样。,【例2-7】把2行3列矩阵A变成变成1行6列的矩阵B。B=reshape(A,1,6)B=1 4 2 5 3 6,2.1.4 矩阵运算,1.矩阵的加、减
7、 矩阵的加减运算使用、运算符,能够相加减的矩阵需满足以下两个条件之一:1)类型相同,即行数相等,且列数相等。2)其中一个为标量,此时的加减运算结果等于矩阵中每一个元素都和标量做加减运算。【例2-8】求矩阵A与B的和,A=1 2 3,B=2 3 6。A+Bans=3 5 9,2.矩阵的乘积 矩阵的乘积运算使用*运算符,而且相乘的矩阵必须满足维数条件。如果A是一个mp矩阵,而B是pn 矩阵,它们可以相乘产生mn 矩阵。【例2-9】求例2-8中矩阵A与B的转置矩阵的乘积。A*Bans=26在MATLAB里,单引号表示复共轭转置,一个点加单引号“.”表示普通转置,即沿主对角线左上与右下相对元素对调。B
8、ans=2 3 6,3、矩阵的除法MATLAB定义了矩阵的左除及右除。“”运算符号表示两个矩阵的左除,“/”表示两个矩阵的右除。AB即由Gauss消去法来获得线性方程AXB的解X,即XA-1B。矩阵的右除:MATLAB用“/”表示两个矩阵的右除。X*A=B的解是X=B/A,对于非奇异方阵A,B/A等效为BA-1。,【例2-10】求矩阵a与b的左除和右除。c=ab%矩阵左除,相当于inv(a)*bc=0.3333 0.6000-0.2000-0.6667-0.4000 0.8000 1.0000 0.4000 0.2000 d=a/b%矩阵右除,相当于a*inv(b)d=1.3333 1.333
9、3-1.0000 0-0.5000 1.5000 1.6667 0.1667-0.5000,表2.3给出了可以获得有关矩阵的形状与大小信息的函数。表2.3 取得矩阵相关信息的函数,4.矩阵的乘方运算和开方运算MATLAB中矩阵的乘方可以由符号“”实现,而矩阵的开方则由sqrtm函数实现。【例2-11】求如下矩阵A的3次方。A3ans=468 576 684 1062 1305 1548 1656 2034 2412,如果想实现矩阵中每个元素都进行3次方,则可用“.”实现,在运算符前面加“.”后就表示是对矩阵的元素操作。A.3ans=1 8 27 64 125 216 343 512 729【例
10、2-12】求例2-11中矩阵A的开方。sqrtm(A)%sqrtm(A)相当于A0.5ans=0.4498+0.7623i 0.5526+0.2068i 0.6555-0.3487i 1.0185+0.0842i 1.2515+0.0228i 1.4844-0.0385i 1.5873-0.5940i 1.9503-0.1611i 2.3134+0.2717i其实矩阵的开方运算和乘方运算互为逆运算。,5.矩阵的指数和对数运算指数函数和对数函数是非常重要的两个函数,所以MATLAB提供了两个专门的函数expm和logm来实现矩阵的指数运算和对数运算。【例2-13】求矩阵的指数运算和对数运算 A=
11、rand(3)A=0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214,expm(A)%对A矩阵的每个元素求以e为底的指数ans=3.1250 1.7453 1.1993 0.6360 2.6358 0.1796 1.8010 2.2981 2.6663 logm(A)%对A矩阵的每个元素求以e为底的对数ans=-0.2977 0.3399 0.6044 0.2874-0.1588-0.0604 0.6696 0.8173-0.3901,6.矩阵的数组运算 运算中,往往需要在矩阵之间进行对应元素的运算,这就是矩阵的数组运算
12、。矩阵的数组运算与前面运算区别主要放映在乘和除两种运算中。1.乘法 矩阵的数组运算A.*B(称为数乘)2.除法 矩阵的数组运算A./B(称为数除)练习已知A=1 3 5;2 4 6;7 8 9;B=1 2 1;2 3 2;3 4 3 比较A*B和A.*B以及A/B和A./B的区别,2.2 稀疏型矩阵,如果在矩阵中,多数的元素并没有值,称此矩阵为稀疏矩阵(Sparse Matrix),由于矩阵在方程中常使用二维阵列表示,二维阵列的大小与使用的内存空间成正比,如果多数的元素没有值,则会造成内存空间的浪费,为此,必须设计稀疏矩阵的阵列储存方式,利用较少的内存空间储存完整的矩阵信息。,2.2.1 稀疏
13、型矩阵生成,在MATLAB中,用sparse函数来创建一个稀疏矩阵。sparse(A)由非零元素和下标建立稀疏矩阵A。如果A已是一个稀疏矩阵,则返回A本身。sparse(m,n)生成一个mn的所有元素都是0的稀疏矩阵。【例2-14】把3阶的单位矩阵转换成稀疏矩阵。as=sparse(eye(3)%生成主对角线为1的稀疏矩阵。as=(1,1)1%第1行第1列的元素为1(2,2)1%第2行第2列的元素为1(3,3)1%第3行第3列的元素为1,2.2.2 转换成满矩阵full(S)函数可以将稀疏矩阵S转换成一个满矩阵。【例2-15】将例2-14中的结果再转换成满矩阵。full(as)ans=1 0
14、0 0 1 0 0 0 1,2.2.3 对非零元素进行操作,nnz(A)函数可以求矩阵A中非零元素的个数,它既可求满矩阵也可求稀疏矩阵。spy(A)函数可以画出稀疏矩阵A中非零元素的分布。也可用在满矩阵中,在这种情况下,只给出非零元素的分布。spy(A,cstr,size)函数可以用指定的颜色cstr在size规定的范围内画出稀疏矩阵A中非零元素的分布。nonzeros(A)函数可以按照列的顺序找出矩阵A中非零的元素。,spones(A)函数可以把矩阵A中的非零元素全换为1。nzmax(A)函数可以给出为矩阵A中非零元素分配的内存数.不一定和nnz(A)得到的数相同。issparse(A)函数
15、在矩阵A是稀疏矩阵的情况下返回1;否则返回0。spfun(fcn,A)函数可以用A中所有非零元素对函数fcn求值,如果函数不是对稀疏矩阵定义的,同样也可以求值。sprank(A)函数可以求稀疏矩阵A的结构秩。对于所有的矩阵来说,都有sprank(A)rank(A)。,【例2-16】求3阶单位矩阵的非零元素的个数,并画出非零元素的分布。nnz(eye(3)ans=3 spy(eye(3)结果如图2.1所示。图2.1 矩阵A 的稀疏表示,2.2.4 稀疏矩阵的特例,MATLAB中有四个基本稀疏矩阵,它们是单位矩阵,随机矩阵,对称随机矩阵和对角矩阵。下面介绍各自的生成函数。speye(n)函数可以生
16、成nn的单位稀疏矩阵。speye(m,n)函数可以生成mn的单位稀疏矩阵。sprand(A)函数可以生成与A有相同结构的随机稀疏矩阵,且元素服从均匀分布。sprand(m,n,dens)函数可以 生成一个mn的服从均匀分布的随机稀疏矩阵,有densmn个非零元素,0dens1.参数dens是非零元素的分布密度。sprandn(A)函数可以生成与A有相同结构的随机稀疏矩阵,且元素服从正态分布。,sprandsym(S)函数可以生成一个随机对称稀疏矩阵。它的下三角及主对角线部分与S的结构相同,矩阵元素服从正态分布。sprandsym(n,dens)函数可以生成一个nn的随机对称稀疏矩阵.矩阵元素服
17、从正态分布,分布密度为dens。B,d=spdiags(A)函数可以求出A中所有的对角元,对角元保存在矩阵B中,它们的下标保存在向量d中。spdiags(A,d)函数可以生成一个矩阵,这个矩阵包含有矩阵A中向量d规定的对角元。spdiags(B,d,A)函数可以生成矩阵A,用矩阵B中的列替换d定义的对角元。A=spdiags(B,d,m,n)用保存在由d定义的B中的对角元创建稀疏矩阵A。,2.3 MATLAB与线性代数,2.3.1 矩阵的特征参数1.求矩阵的行列式 行列式对于查明一个方程组是否有解很有用。行列式是一个特殊的方形阵列,并且还可以简化为一个数。用户使用竖条来表示一个行列式,而使用方
18、括号来代表矩阵。将一个22的行列式简化为一个数的规则如下所示:数学上通过人笔算来得出行列式的值,现在可以通过MATLAB利用det函数轻松算出行列式的值。,【例2-17】计算如下的行列式:D=3 4 5;1 2 3;3 6 9;det(D)ans=0,2.矩阵的秩矩阵的秩是矩阵行或列的数值线性独立的度量。如果一个向量线性独立于另外一些向量组,那意味着这一个向量不能写成它们的线性组合。rank函数可以实现求矩阵的秩。对于带有n个未知量的m个线性系统方程:Ax=b把b连结A上构成了增广矩阵:A b当且仅当rank(A)=rank(A b)时系统有解。如果秩等于n,那么系统有唯一解,但如果秩小于n,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 计算 功能 课件

链接地址:https://www.31ppt.com/p-3730511.html