收藏 分销(赏)

Matlab矩阵运算基础数值运算.ppt

上传人:精*** 文档编号:8058794 上传时间:2025-02-02 格式:PPT 页数:101 大小:1.24MB 下载积分:18 金币
下载 相关 举报
Matlab矩阵运算基础数值运算.ppt_第1页
第1页 / 共101页
Matlab矩阵运算基础数值运算.ppt_第2页
第2页 / 共101页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,第二章 矩阵运算基础,2,MATLAB,的所有数值功能都是以(复)矩阵为基本单元进行的,向量和标量都作为特殊的矩阵来处理,向量看作是仅有一行或一列的矩阵,标量看作是,11,的矩阵。,第三章 矩阵运算基础,3,第三章 矩阵运算基础,MATLAB,中数组和矩阵是两个不同的概念,确切的说矩阵是数组的一个特例,是二维的数值型数组,表示了一种线性变换的关系。,在,MATLAB,中从运算的角度看,矩阵运算从矩阵的整体出发,采用线性代数的运算规则,数组运算从数据的元素出发,针对每个元素进行运算。,4,MATLAB,中创建矩阵应遵循的原则:,矩阵的元素必须在方括号,“,”,中;,矩阵的同行元素之间用空格或逗号,“,,,”,分隔:,矩阵的行与行之间用分号,“,;,”,或回车符分隔;,矩阵的尺寸不必预先定义;,矩阵元素可以是数值、变量、表达式或函数;,无任何元素的空矩阵也是合法的。,3.1,矩阵的创建,5,注意:,matlab,严格区分大小写字母,,因此,a,与,A,是两个不同的变量。,matlab,函数名必须小写,。,逗号和分号的作用,逗号和分号可作为指令间的分隔符,,matlab,允许多条语句在同一行出现。,分号如果出现在指令后,屏幕上将不显示结果。,3.1,矩阵的创建,6,注意:只要是赋过值的变量,不管是否在屏幕上显示过,都存储在工作空间中,以后可随时显示或调用。,变量名尽可能不要重复,否则会覆盖。,当一个指令或矩阵太长时,可用“,”,续行,3.1,矩阵的创建,7,2,、矩阵的创建方法:,(,1,)命令窗口直接输入元素序列创建矩阵。,(,2,)在,M,文件中用,MATLAB,语句创建矩阵。,(,3,)通过,MATLAB,内部函数创建矩阵。,(,4,)通过外部数据文件导入创建矩阵。,(,5,)冒号法。,3.1,矩阵的创建,8,1.1,命令窗口直接输入,:,具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,矩阵的同行元素之间用空格或逗号“,”,分隔,矩阵的行与行之间元素用分号“,;”,或回车符分隔;,X=1 2 3;4 5 6;7 8 9,Y=1,2,3;4,5,6;7,8,9,有运算表达式的矩阵,Z=sin(pi/2),8*4;log(10),exp(2),3.1.1,命令窗口直接输入,9,3.1.2,通过,M,文件创建矩阵,当矩阵的规模较大时,直接输入法就力不从心,出现差错也不容易修改。因此可以使用,M,文件生成矩阵。,方法是:建立一个,M,文件,其内容是生成矩阵的命令,在,MATLAB,的命令窗口中输入此文件名,即将矩阵调入工作空间(写入内存)。,10,3.1.2,通过,M,文件创建矩阵,例,3-2,用建立,M,文件的方式生成矩阵,(1),建立,M,文件,mydata.m,内容如下,%,生成矩阵,A=1,,,2,,,3,;,4,,,5,,,6,;,7,,,8,,,9,(2),运行,M,文件,mydata.m,mydata,则生成矩阵,A,。,11,3.1.3,通过函数创建矩阵,MATLAB,中提供了一些内部函数来生成特殊矩阵如,eye,生成单位阵,,zeros(3),,,rand(2,3),,,magic(3),等。,常用的生成特殊矩阵的函数将在,3.3.1,节介绍。,12,3.1.4,通过数据文件创建矩阵,在,MATLAB,中,还可以通过读入外部数据文件来生成矩阵。外部数据文件包括:以前,MATLAB,生成矩阵存储成的二进制文件、包含数值数据的文本文件、,Excel,数据表、图像文件、声音文件等。,在文本文件中,数据必须排列成矩阵形式,数据之间用空格分隔,文件的每行仅包含据矩阵的一行,并且每行的元素个数必须相等。,13,3.1.4,通过数据文件创建矩阵,例,3-3,有文本文件,data.txt,内容如下,通过此文,件创建矩阵。,1.1 3 4,2.3 2 1,用下述命令将,data.txt,中的内容导入工作空间并生,成变量,data,load data.txt%,将,data.txt,的内同导入工作空间,data%,查看变量,data,data=,1.1000 3.0000 4.0000,2.3000 2.0000 1.0000,14,3.2,矩阵运算,主要介绍矩阵的算术运算、关系运算、逻辑运算和常用的有关矩阵的其他运算(矩阵的逆,矩阵的秩、矩阵的分解等)。,15,3.2.1,矩阵的算术运算,1,、矩阵的加(,+,)减(,-,)运算:,AB,矩阵,A,和矩阵,B,的和与差,即矩阵相应位置的元素相加、减。,进行加减运算的矩阵,要求维数相同,即行数和列数分别相等,如果,A,与,B,大小不同,,MATLAB,将自动给出错误信息。,A,和,B,其中之一可以是标量,表示矩阵中的每个元素分别与标量相加减,结果为矩阵。,16,3.2.1,矩阵的算术运算,例,3-4,求,A+B,,,A-2,例,3-5,两个矩阵如下所示,维数不同,求两者相,减的差。,17,3.2.1,矩阵的算术运算,2,、矩阵的乘法(*)和点乘(,.*,),A*B,矩阵,A,和,B,的乘法。,A,和,B,其中之一可以是标,量,表示该标量与矩阵每个元素相乘。,A.*B,矩阵,A,和,B,的对应位置元素相乘,要求,A,和,B,维,数相同。,A,和,B,其中之一可以为标量,表示该,标量与矩阵每个元素相乘。,18,3.2.1,矩阵的算术运算,例,3-6,求,A*5,A.*5,,,A*B,,,A.*B,。,19,3.2.1,矩阵的算术运算,3,、矩阵的左除(,)、右除(,/,)和矩阵的点除法(,.,./,),AB,相当,inv(A)*B,(,A,的逆阵左乘,B,),可以利用矩阵左除求解,线性方程组,AX=b,X=Ab,。如果,A,奇异阵或接近奇异,,MATLAB,将会给出警告信息。,A/B,大体相当于,A*inv(B),,但在计算方法上存在差异,更精确,地,。,A./B,矩阵,A,的元素除以矩阵,B,的对应元素,即等于,A(i,j)/B(i,j),要求,A,和,B,为同维矩阵,或其中之一为标量。,A.B,矩阵,B,的元素除以矩阵,A,的对应元素,即等于,B(i,j)/A(i,j),要求,A,和,B,为同维矩阵,或其中之一为标量。,同阶对应元素进行相除,A./B=B.A,20,3.2.1,矩阵的算术运算,例,3-7,,,求,AB,B/A,A./C,A.C,A.C,ans=,1.0000 1.0000 1.0000,Inf 5.0000 Inf,2.3333 4.0000 9.0000,注意:,在,A.B,的结果中,,“,Inf,”,表示无穷大,在,MATLAB,中,被零除或浮点溢出都不按错误处理,只是给出警告信息,同时用,“,Inf,”,标记。,21,3.2.1,矩阵的算术运算,4,、矩阵的幂运算:,AB A,的,B,次方。,(,1,),A,和,B,都是标量时,表示标量,A,的,B,次幂。,(,2,),A,为矩阵,,B,为标量时要求,A,必须是方阵。,(,a,),B,为正整数时,幂运算即为矩阵,A,的自乘运,算,,B,为自乘次数。,(,b,),B,为负整数时,幂运算为,A-1,的自乘运算,,-B,为矩阵自乘的次数,22,3.2.1,矩阵的算术运算,(,c,)当,B,为非整数的标量时,,其中,V,为方阵,A,的特征向量矩阵,,为方阵,A,的特征值对角矩阵。,23,3.2.1,矩阵的算术运算,(,3,)当,A,为标量,,B,为矩阵时,要求,B,为方阵。,其中,V,为方阵,A,的特征向量矩阵,为方阵,A,的特征值对角矩阵。,(,4,),A,和,B,都是矩阵时,无定义。,24,3.2.1,矩阵的算术运算,5,、矩阵的点幂运算:,.,A.B,等于,A(i,j)B(i,j),A,和,B,维数相同或其,中一个为标量。,例,3-8,,,求:,A3,,,A1.5,,,V,D=eig(A),,,C=V*(D.1.5)*V(-1),,,A.3,,,3.A,25,3.2.1,矩阵的算术运算,6,、矩阵的转置:,A,矩阵的转置是把矩阵的行换成同序数的,列,得到新矩阵。如果,A,是复矩阵,则运,算结果是共轭转置。,A.,也表示矩阵,A,的转置,当,A,为复矩阵时,不,求共轭。,26,3.2.1,矩阵的算术运算,例,3-9,求:,A,A.,B,B.,27,3.2.2,矩阵的关系运算,MATLAB,提供了,6,种关系运算符,如下所示,用于比较两个同维矩阵的对应位置元素,结果为同维的,0-1,矩阵,,1,表示比较结果为真,,0,表示比较结果为假。其中一个操作为标量时,表示该标量与矩阵的每个元素进行关系运算,结果为与操作数矩阵同维的,0-1,矩阵。,小于,大于,=,大于等于,=,等于,=,不等于,例,3-10 a=-1,3,0,,,b=5,3,-6,,求,a=b,a=b,a=b,a A=magic(3),A=,8 1 6,3 5 7,4 9 2,B=inv(A),B=,0.1472 -0.1444 0.0639,-0.0611 0.0222 0.1056,-0.0194 0.1889 -0.1028,A*B,ans=,1.0000 0 -0.0000,-0.0000 1.0000 0,0.0000 0 1.0000,C=rand(2,3),C=,0.8147 0.1270 0.6324,0.9058 0.9134 0.0975,D=pinv(C),D=,0.5492 0.2421,-0.6520 0.9075,1.0047 -0.4941,C*D,ans=,1.0000 0.0000,0.0000 1.0000,D*C,ans=,0.6668 0.2909 0.3709,0.2909 0.7461 -0.3238,0.3709 -0.3238 0.5871,34,3.2.4,矩阵函数,4,、矩阵的分解,(,1,)特征值分解,MATLAB,中,求方阵的特征值和特征向量的函数为,eig,,调用格式如下:,e=eig(A),求方阵,A,的特征值组成的列向量,e,。,V,D=eig(A),求得方阵,A,的特征值组成的对角阵,D,和特征向量,矩阵,V,,方阵,A,的第,k,个特征值对应的特征向量为,矩阵,V,的第,k,列向量,满足,A*V=V*D,35,3.3,矩阵的特殊操作,3.3.1,常用的特殊矩阵,1,、空矩阵,空矩阵由下列命令创建:,A=,空阵中不包括任何元素,是,00,阶的矩阵;空阵可以在,MATLAB,的运算中传递。,MATLAB,中还定义了空向量。当,nA=1,2,3,4,5,;,6,7,8,9,10,;,11,12,13,14,15,;,16,17,18,19,20;,A(2:3,4:5),ans=,9 10,14 15,A(1,2,2,4),ans=,2 4,7 9,41,3.3.2,矩阵的修改,还可以利用一般向量和,end,运算符来表示矩阵下标,,end,表示矩阵某维的末尾元素下标。例如:,A(end,:)%,取,A,最后一行,ans=,16 17 18 19 20,A(1,4,3:end)%,取,A,第,1,,,4,行中第,3,列到最后一列的元素,ans=,3 4 5,18 19 20,42,3.3.2,矩阵的修改,还有一种经常用到的命令是,A(:),,,A(:),在赋值语句的右端表示由矩阵,A,的元素按列的顺序排成的列向量。例如:,A=1,2;3,4,b=A(:),b=,1,3,2,4,43,3.3.2,矩阵的修改,如果,A(:),出现在赋值语句的左端,表示用一个向量对矩阵,A,进行赋值,此时矩阵,A,必须事先存在。如,,A,是上述矩阵,那么,A(:)=5:8,,表示行向量(,5,,,6,,,7,,,8,)的,4,个元素依次按照列顺序给,A,的元素赋值,保持,A,的维数不变。,A=,5 7,6 8,44,3.3.2,矩阵的修改,2,、部分扩充,(,1,)单个矩阵的扩充,对一个矩阵的单个元素进行赋值和操作,如:,A(3,2)=200%,表示将矩阵,A,的第,3,行第,2,列元素赋值为,200,如果给出的行值和列值大于原矩阵的行数和列数,,MATLAB,自动扩展原矩阵,扩展后未赋值的元素置为,0,。,45,3.3.2,矩阵的修改,例,3-17,单个矩阵扩充,A=1,2,3;4,5,6,;,A(2,3)=10,A=,1 2 3,4 5 10,A(4,5)=10,A=,1 2 3 0 0,4 5 6 0 0,0 0 0 0 0,0 0 0 0 10,46,3.3.2,矩阵的修改,(,2,)多个矩阵组成大矩阵,大矩阵可以由多个小矩阵按行列排列在方括号中建立。如:,C=A,eye(size(A);ones(size(A),A,,,则,即,47,3.3.2,矩阵的修改,3,、部分删除,利用空矩阵的特性,可以从一个矩阵中删除部分行和部分列元素。如:,A,是一个,45,的矩阵,,A(:,3,4)=,表示删除,A,的第,3,列和第,4,列元素。,A(m,,,n)=,,,A(m,,,:)=,,,A(:,,,n)=,。,例,3-18,矩阵的部分删除,A=1,2,3;4,5,6;7,8,9,A=,1 2 3,4 5 6,7 8 9,A(1,3,:)=,A=,4 5 6,48,3.3.2,矩阵的修改,4,、部分修改,当矩阵的角标出现在等号左端时,表示对原矩阵中的部分或全部元素重新赋值。,如:,A(1,3,:)=B(1,2,:),表示将矩阵,A,的第,1,、,3,行用矩阵,B,的,1,,,2,行代替。,例,3-19,矩阵的部分修改,A=1,2,3;4,5,6;7,8,9,;,B=zeros(4,3),;,A(1,3,:)=B(1,2,:),A=,0 0 0,4 5 6,0 0 0,49,3.3.2,矩阵的修改,5,、矩阵的变维,MATLA,可以实现矩阵元素的重新排列,以实现矩阵尺寸或维数的变化。根据,MARLAB,矩阵元素的排列顺序规则,重新排列的元素按照先排列,再排行,然后排列第三维,第四维的顺序排列。,命令:,C=reshape(A,m,n,p,)A,为原始矩阵,,C,为变维后的矩阵,,m,n,p,等分别为新矩阵各维的阶数,(,行、列等)。新矩阵的各维阶数的乘积必须与原矩阵的各维阶数的乘积相同。,50,3.3.2,矩阵的修改,例,3-20,矩阵的变维,A=1:12;,reshape(A,3,4),ans=,1 4 7 10,2 5 8 11,3 6 9 12,reshape(A,2,3,2),ans(:,:,1)=,1 3 5,2 4 6,ans(:,:,2)=,7 9 11,8 10 12,51,3.3.2,矩阵的修改,6,、矩阵的翻转和旋转,对矩阵进行翻转和旋转的函数如下:,B=fliplr(A),对矩阵,A,进行左右翻转生成矩阵,B,,如果,A,是行向量,则返回一个大小和,A,相同,元素的排列顺序和,A,相反的行向量;如果,A,是列向量,返回,A,本身。,B=flipud(A),对矩阵,A,进行上下翻转生成矩阵,B,,如果,A,是行向量,返回,A,本身;如果,A,是列向量,则返回一个大小和,A,相同,元素的排列顺序和,A,相反的列向量。,B=flipdim(A,dim),矩阵,A,的第,n,维翻转生成矩阵,B,,,dim=1,时,行翻转,相当于,flipud;,dim=2,时,列翻转,相当于,fliplr,。,52,3.3.2,矩阵的修改,B=rot90(A),将矩阵,A,逆时针旋转,90,。生成矩阵,B,。,B=rot90(A,k),将矩阵,A,逆时针旋转,k*90,。生成矩阵,B,,,k,是整数。,53,3.3.2,矩阵的修改,例,3-21,对矩阵进行翻转和旋转,A=1,2,3;4,5,6,;,flipud(A),ans=,4 5 6,1 2 3,flipdim(A,1),ans=,4 5 6,1 2 3,fliplr(A),ans=,3 2 1,6 5 4,flipdim(A,2),ans=,3 2 1,6 5 4,rot90(A),ans=,3 6,2 5,1 4,rot90(A,2),ans=,6 5 4,3 2 1,rot90(A,-1),ans=,4 1,5 2,6 3,54,3.3.2,矩阵的修改,7,、矩阵的抽取,矩阵的抽取包括:抽取对角线元素,(diag),,抽取矩阵的上三角,(triu),和下三角,(tril),部分。函数的调用格式如下:,b=diag(A,n),抽取矩阵,A,的第,n,条对角线生成列向量,b,,,n0,时,抽取,A,主对角线上方第,n,条对角线;,n A=1,2,3;4,5,6;,B=diag(A,1),B=,2,6,C=diag(b,1),C=,0 2 0,0 0 6,0 0 0,D=diag(A,-1),D=,4,E=tril(A,1),E=,1 2 0,4 5 6,F=triu(A),F=,1 2 3,0 5 6,57,4.1,多项式,Matlab,用行向量表示多项式,行向量由多项式系数按降幂排列组成。例如,多项式,可以用它的长度为,n+1,的系数行向量表示:,注意:,系数行向量中元素的排列顺序必须是从高次幂系数到低次幂系数,多项式中缺少的幂次要用,0,补齐。,58,1,、系数矢量的直接输入法,:,由于在,MATLAB,中的多项式是以向量形式储存的,因此,创建多项式的最简单的方法即为直接输入多项式的系数行向量,,MATLAB,自动将向量元素按降幂顺序分配给各系数值。为了查看方便,可利用转换函数,poly2sym,,将多项式由系数行向量形式,转换为符号形式。,4.1.1,多项式的创建,59,4.1.1,多项式的创建,例,4-1,输入系数矢量,创建多项式,poly2sym(1,-5,6,-33),ans=,x3-5*x2+6*x-33,60,4.1.1,多项式的创建,2,、通过矩阵的特征多项式来创建多项式,可以通过求矩阵的特征多项式,来创建多项式,由函数,poly,实现。调用格式为:,p=poly(A),:,A,为二维或以上的矩阵,表示由,A,的特征根确定的多项式。,61,4.1.1,多项式的创建,例,4-2,求矩阵的特征多项式。,A=1 2 3;4,5,6;7,8,0;,p=poly(A),p=,1.0000 -6.0000 -72.0000 -27.0000,poly2sym(p),ans=,x3-6*x2-72*x-27,62,4.1.1,多项式的创建,3,、,p=poly(A),:,A,为一维矩阵,表示由,A,的元素为多项式的根所确定的多项式。,63,4.1.1,多项式的创建,例,4-3,由根矢量,-5-3 4,创建多项式。,A=-5-3 4,p=poly(A),p=,1 4 -17 -60,poly2sym(p),ans=,x3+4*x2-17*x-60,64,4.1.2,多项式运算,1,、求多项式的值,求多项式的值可以有两种形式,对应两种算法:,(,1,)在输入变量值代入多项式计算时,以数量或矩阵中每个元素为计算单元的,对应函数为,polyval;,(,2,)以矩阵为计算单元的,进行矩阵式运算来求得多项式的值,对应函数为,polyvalm,。,65,4.1.2,多项式运算,调用格式为:,polyval(p,x),:求多项式,p,在,x,点的值,,x,可以是数量或矩阵,,x,是矩阵时,表示求多项式,p,在,x,中各元素的值。,polyvalm(p,x),:求多项式,p,对于矩阵,x,的值,,x,可以是数量或矩阵。,x,如果是数量,求得的值与函数,polyval,相同,如果,x,是矩阵则必须是方阵。,66,4.1.2,多项式运算,例,4-5,求多项式,在,2,,,4,,,6,,,8,处的值,对于矩阵,的值,及在矩阵中各元素处的值。,67,4.1.2,多项式运算,通过上例可以得出:设,A,为方阵,,P,代表多项式,则,,polyval(P,A):A.3-5*A.2+8*ones(size(A),polyvalm(P,A):A3-5*A2+8*eye(size(A),68,4.1.2,多项式运算,2,、求多项式的根,可以直接调用,MATLAB,的函数,roots,,求解多项式的所有根。,调用形式为:,R=roots(C),其中输入参数,C,是多项式系数行向量,输出参数,R,是多项式的根,一般用列向量表示。,69,4.1.2,多项式运算,例,4-6,求出多项式 的根,a=1 2-5-6;,r=roots(a),r=,2.0000,-3.0000,-1.0000,poly(r),ans=,1.0000 2.0000 -5.0000 -6.0000,70,4.1.2,多项式运算,3,、多项式的乘除法运算,多项式的乘法和除法实质就是多项式系数向量的卷积和解卷运算。,乘法:,c=conv(a,b),求多项式,a,和,b,的乘法,如果向量,a,的长度为,m,,,b,的长度为,n,,则,c,的长度为,m+n-1,。,多项式的除法用函数,deconv,实现,此函数也是向量的卷积函数的逆函数。,b,r=deconv(c,a),向量,a,对向量,c,进行解卷,得到商向量,b,和余量,r,。,71,4.1.2,多项式运算,例,4-7,(,1,)求两多项式的乘积,(,2,)求上述结果被 除所得的结果。,a=3-3 4-1 2;,b=2-1 1 2;,c=conv(a,b),c=,6 -9 14 -3 3 5 0 4,d,r=deconv(c,b),d=,3 -3 4 -1 2,r=,0 0 0 0 0 0 0 0,72,4.1.2,多项式运算,4,、多项式的微积分,Matlab,中多项式的微分函数为,polyder,,多项式的积分函数为,polyint,。两个函数的调用格式为:,polyder(a),求系数行向量为,a,的多项式的微分。,polyint(a),求系数行向量为,a,的多项式的积分。,73,4.1.2,多项式运算,例,4-8,(,1,)求多项式 的微分。,(,2,)将上述结果求积分。,a=1-5 3-6 4-10;,d=polyder(a),d=,5 -20 9 -12 4,poly2sym(d),ans=,5*x4-20*x3+9*x2-12*x+4,polyint(d),ans=,1 -5 3 -6 4 0,74,4.1.2,多项式运算,5,、多项式拟合,matlab,中多项式拟合的函数为,polyfit,,其采用最小二乘法对给定的数据进行多项式拟合,给出拟合的多项式系数。函数的调用方式为:,p=polyfit(x,y,n),应用最小二乘法求出,n,阶拟合多项式,p(x),。即用,p(x),拟合,y(x),。,x,、,y,为数据的横纵坐标向量,,n,为拟合多项式的阶数,输出参数,p,为多项式,p(x),的系数向量。,75,4.1.2,多项式运算,例,4-10 x=1:10,求,y,(,x,)的,5,阶拟合多项式。,x=1:10;,y=sqrt(x)+3*cos(x);,p=polyfit(x,y,5),p=,0.0074 -0.1737 1.3312 -3.3680 0.3459 4.5606,%,把原始数据点和拟合曲线绘制在同一个坐标系中,原始数,%,据用,“,。,”,表,%,示,(,如图,4-1),。,plot(x,y,o,x,polyval(p,x),-),%,绘图函数用法在第,6,章介绍,76,4.2,求解线性方程组,4.2.1,齐次线性方程组的解法,对于齐次线性方程组,AX=0,而言,可以通过求系数矩阵,A,的秩来判断解的情况:,1,、如果系数矩阵的秩,=n,(方程组中未知数的个数),则方程组只有零解。,2,、如果系数矩阵的秩,n,,则方程组有无穷多解。,可以利用,MATLAB,函数,null(A),,求它的一个基本解。,77,4.2.1,齐次线性方程组的解法,例,4-11,用,matlab,求解方程组,A=1 1 1 1-3-1 1;1 0 0 0 1 1 0;-2 0 0-1 0-1-2;r=rank(A);%,求矩阵,A,的秩,x=null(A,r),得到解为,:x=,-0.2555 0.0565 -0.3961 -0.3138,-0.0215 0.7040 0.5428 0.0967,0.2218 -0.1603 -0.2941 0.7991,0.8915 0.0717 -0.0151 -0.2386,0.1752 0.4429 -0.2353 0.2039,0.0803 -0.4994 0.6314 0.1099,-0.2304 0.1573 0.0879 0.3781,x,的列向量为,Ax=0,的一个基本解。,78,4.2.2,非齐次线性方程组的解法,对于非齐次线性方程组,AX=b,而言,则要根据系数矩阵,A,的秩和增广矩阵,B=A b,的秩和未知数个数,n,的关系,才能判断方程组,AX=b,的解的情况。,(,1,)如果系数矩阵的秩,=,增广矩阵的秩,=n,,则方程组有唯一解。,(,2,)如果系数矩阵的秩,=,增广矩阵的秩,n,,则方程组有无穷多解。,(,3,)如果系数矩阵的秩,n,),欠定方程组(,mn,超定方程组,可以尝试计算最小二乘解;,(,3,),mn,时。,方程解,(A A)x=A b,x=(A,A),-1,A b,求逆法,x=Ab,matlab,用最小二乘法找一,个准确地基本解。,4.2.2,非齐次线性方程组的解法,84,超定方程组的求特解,例,:x,1,+2x,2,=1,2x,1,+3x,2,=2,3x,1,+4x,2,=3,解,1,x=ab,解,2,x=inv(a,a),a,b,x=x=,1.00 1.00,0 0.00,a*x =b,=,4.2.2,非齐次线性方程组的解法,85,3,、欠定方程组的求特解,当方程数少于未知量个数时(,mn,),有无穷多个解存在。,matlab,可求出两个解:,用除法求的解,x,是具有最多零元素的解,基于伪逆,pinv,求得的是具有最小长度或范数的解。,4.2.2,非齐次线性方程组的解法,86,欠定方程组的求特解,x,1,+2x,2,+3x,3,=1,2x,1,+3x,2,+4x,3,=2,x=ab x=pinv(a),b,x=x=,1.00 0.83,0 0.33,0 -0.17,4.2.2,非齐次线性方程组的解法,87,例,4-12,求方程组的解。,在,Matlab,中建立,M,文件如下,clear all,A=1 1 1 1-3-1 1;1 0 0 0 1 1 0;-2 0 0-1 0-1-2;,b=1,0,1;,%,输入矩阵,A,b,m,n=size(A);,R=rank(A);,B=A b;,Rr=rank(B);,%format rat,if R=Rr&R=n,%n,为未知数的个数,判断是否有唯一解,x=Ab;,elseif R=Rr&R Fx,Fy=gradient(A),Fx=,7.0000 1.5000 -1.5000 1.0000,2.0000 1.0000 -0.5000 -1.0000,2.0000 2.0000 0.5000 -1.0000,Fy=,5.0000 0 4.0000 2.0000,1.0000 -1.5000 1.5000 0.5000,-3.0000 -3.0000 -1.0000 -1.0000,90,4.4,插值和拟合,4.4.1,插值,1,、一维插值,一维插值就是对一维函数,y=f(x),的数据进行插值,是最常用的插值运算,一维插值函数是,interp1,。,yi=interp1(x,y,xi,method),输入参数,x,为原始数据点的横坐标向量,,y,为纵坐标向量或矩阵,,method,为插值方法选项。如果,y,是矩阵,那么插值按照,y,的列向量进行,返回值,yi,和矩阵,y,的列数相等,,xi,为插值点的横坐标,,yi,时在,xi,指定位置计算出的插值结果。,91,4.4.1,插值,一维插值有四种方法,分别是:,(,1,)邻近点插值,(method=,nearest,),将插值结果的值设置为最近数据点的值,(,2,)线性插值,(method=,linear,),在两个数据点之间连接直线,根据给定的插值点计算出它们在直线上的值,作为插值结果。缺省形式。,(,3,)三次样条插值,(method=,spline,),通过数据点拟合出三次样条曲线,根据给定的插值点计算出它们在曲线上的值,作为插值结果。,(,4,)立方插值,(method=,pchip,/,cubic,),通过三次多项式计算插值结果。,92,4.4.1,插值,由于在很多情况下,三次样条插值效果最好,,matlab,还专门提供了三次样条插值函数,yi=spline(x,y,xi),,其中输入、输出参数含义同上。,93,4.4.1,插值,例,4-13,一维插值函数插值方法的比较,clear,x=0:2*pi;y=cos(x);xi=0:0.1:2*pi;,%,将插值方法定义成 单元数组,method=,nearest,linear,spline,cubic,lable=(a)method=nearest,(b)method=linear,(c)method=spline,(b)method=cubic;,for i=1:4,yi=interp1(x,y,xi,methodi);,%,在一个图形窗口绘制,4,幅图形,subplot(2,2,i),plot(x,y,ro,xi,yi,b),xlabel(lablei),end,94,4.4.1,插值,2,、二维插值,二维插值与一维插值的基本思想相同,它是对两个自变量的函数,z=f(x,y),进行插值。,matlab,中二维插值函数为,interp2,,该函数的调用格式为:,zi=interp1(x,y,z,xi,yi,method),输入参数,x,,,y,为两个向量,,z,是矩阵,是由,x,和,y,确定的点的值,z(i,:)=f(x,y(i),和,z(:,j)=f(x(j),y),,,method,为插值方法选项。,95,4.4.1,插值,二维插值有四种插值方法:,(,1,)邻近点插值,(method=,nearest,),(,2,)双线性插值,(method=,linear,),该方法是,interp2,的缺省插值形式。,(,3,)三次样条插值,(method=,spline,),(,4,)二重立方插值,(method=,cubic,),96,4.4.1,插值,例,4-14,二维插值方法比较,%,二维插值方法比较,clear,x,y,z=peaks(6);,%,生成双峰函数值,surf(x,y,z),%,画出表面图,xi,yi=meshgrid(-3:0.2:3,-3:0.2:3);,%,生成供插值的数据,z1=interp2(x,y,z,xi,yi,nearest);,z2=interp2(x,y,z,xi,yi,linear);,z3=interp2(x,y,z,xi,yi,spline);,z4=interp2(x,y,z,xi,yi,cubic);,figure,surf(xi,yi,z1),title(nearest),%,绘制邻近点插值的表面图,figure,surf(xi,yi,z2),title(linear),%,绘制双线性插值的表面图,figure,surf(xi,yi,z3),title(spline),%,绘制三次样条插值的表面图,figure,surf(xi,yi,z4),title(cubic),%,绘制二重立方插值的表面图,97,4.4.2,拟合,多项式拟合是多项式运算的一个重要组成部分。实现方法有两种:,(,1,)用最小二乘法进行拟合的函数,polyfit,(见,4.1.2,节)。,(,2,)通过求解超定方程组得到拟合曲线。,98,例,4-15,有一组测量数据如下表所示,假设已知该数据具有 的变化趋势,试求出满足此数据的最小二乘解。,x=1,,,1.5,,,2,,,2.5,,,3,,,3.5,,,4,,,4.5,,,5,y=-1.4,,,2.7,,,3,,,5.9,,,8.4,,,12.2,,,16.6,,,18.8,,,26.2,e=ones(size(x),x.2,c=ey,%,解超定方程组求,c=c1,c2,x2=0:0.1:5;,y2=ones(size(x2),x2.2*c;,figure,plot(x2,y2,k,x,y,r*,),%,用红色*表示原始数据点,黑色实线为,%,拟合曲线,x,1,1.5,2,2.5,3,3.5,4,4.5,5,y,-1.4,2.7,3,5.9,8.4,12.2,16.6,18.8,26.2,99,4.5,基本数学函数,我们以正弦函数,sin,与双曲正弦函数,sinh,为例说明常用三角函数用法。调用格式如下:,Y=sin(X),计算参量,X,(可以是向量、矩阵,元素可以是复数)中每一个角度分量的正弦值,Y,,所有分量的角度单位为弧度。,Y=sinh(X),计算参量,X,的双曲正弦值,Y,注意:,sin(pi),并不是零,而是与浮点精度有关的无穷小量,eps,,因为,pi,仅仅是精确值,浮点近似的表示值而已,同理,sec(pi/2),并不是无穷大,而是与浮点精度有关的无穷小量,eps,的倒数(其它三角函数类似);对于复数,Z=x+iy,,函数的定义为:,sin(x+iy)=sin(x)*cos(y)+i*cos(x)*sin(y),,,100,4.5,基本数学函数,常用数学函数表见教材。,课件部分内容来源于网络,如对内容有异议或侵权的请及时联系删除!,此课件可编辑版,请放心使用,!,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服