您好,欢迎访问三七文档
当前位置:首页 > 幼儿/小学教育 > 小学教育 > Matlab代数运算
第二讲线性代数中的数值计算问题【引例】求下列三阶线性代数方程组的近似解5426255452321321321xxxxxxxxxMATLAB程序为:A=[2-54;15-2;-124];b=[5;6;5];x=A\b在MATLAB命令窗口,先输入下列命令构造系数矩阵A和右端向量b:A=[2-54;15-2;-124]A=2-5415-2-124b=[5;6;5]b=565然后只需输入命令x=A\b即可求得解x:x=A\bx=2.76741.18601.3488一、特殊矩阵的实现1.零矩阵:所有元素值为零的矩阵称为零矩阵。零矩阵可以用zeros函数实现。zeros是MATLAB内部函数,使用格式如下:zeros(m):产生m×m阶零矩阵;zeros(m,n):产生m×n阶零矩阵,当m=n时等同于zeros(m);zeros(size(A)):产生与矩阵A同样大小的零矩阵。一、特殊矩阵的实现常见的特殊矩阵有零矩阵、幺矩阵、单位矩阵、三角形矩阵等,这类特殊矩阵在线性代数中具有通用性;还有一类特殊矩阵在专门学科中有用,如有名的希尔伯特(Hilbert)矩阵、范德蒙(Vandermonde)矩阵等。2.幺矩阵:所有元素值为1的矩阵称为幺矩阵。幺矩阵可以用ones函数实现。它的调用格式与zeros函数一样。【例1】试用ones分别建立3×2阶幺矩阵、和与前例矩阵A同样大小的幺矩阵。用ones(3,2)建立一个3×2阶幺阵:ones(3,2)%一个3×2阶幺阵ans=111111一、特殊矩阵的实现3.单位矩阵:主对角线的元素值为1、其余元素值为0的矩阵称为单位矩阵。它可以用MATLAB内部函数eye建立,使用格式与zeros相同。4.数量矩阵:主对角线的元素值为一常数d、其余元素值为0的矩阵称为数量矩阵。显然,当d=1时,即为单位矩阵,故数量矩阵可以用eye(m)*d或eye(m,n)*d建立。一、特殊矩阵的实现5.对角阵:对角线的元素值为常数、其余元素值为0的矩阵称为对角阵。我们可以通过MATLAB内部函数diag,利用一个向量构成对角阵;或从矩阵中提取某对角线构成一个向量。使用格式为:diag(V),diag(V,k)设V为具有m个元素的向量,diag(V)将产生一个m×m阶对角阵,其主对角线的元素值即为向量的元素值;diag(V,k)将产生一个n×n(n=m+|k|,k为一整数)阶对角阵,其第k条对角线的元素值即为向量的元素值。注意:当k>0,则该对角线位于主对角线的上方第k条;当k<0,该对角线位于主对角线的下方第|k|条;当k=0,则等同于diag(V)。用diag建立的对角阵必是方阵。一、特殊矩阵的实现【例2】已知向量v,试建立以向量v作为主对角线的对角阵A;建立分别以向量v作为主对角线两侧的对角线的对角阵B和C。MATLAB程序如下:v=[1;2;3];%建立一个已知的向量AA=diag(v)A=100020003B=diag(v,1)B=0100002000030000C=diag(v,-1)C=0000100002000030%按各种对角线情况构成相应的对角阵A、B和C一、特殊矩阵的实现6.上三角阵:使用格式为triu(A)、triu(A,k)设A为m×n阶矩阵,triu(A)将从矩阵A中提取主对角线之上的上三角部分构成一个m×n阶上三角阵;triu(A,k)将从矩阵A中提取主对角线第|k|条对角线之上的上三角部分构成一个m×n阶上三角阵。注意:这里的k与diag(A,k)的用法类似,当k>0,则该对角线位于主对角线的上方第k条;当k<0,该对角线位于主对角线的下方第|k|条;当k=0,则等同于triu(A)一、特殊矩阵的实现【例4】试分别用triu(A)、triu(A,1)和、triu(A,-1)从矩阵A提取相应的上三角部分构成上三角阵B、C和D。MATLAB程序如下:A=[123;456;789;987];%一个已知的4×3阶矩阵A%构成各种情况的上三角阵B、C和DB=triu(A)B=123056009000C=triu(A,1)D=triu(A,-1)一、特殊矩阵的实现8.下三角阵:使用格式为tril(A)、tril(A,k)tril的功能是从矩阵A中提取下三角部分构成下三角阵。用法与triu相同。8.空矩阵在MATLAB里,把行数、列数为零的矩阵定义为空矩阵。空矩阵在数学意义上讲是空的,但在MATLAB里确是很有用的。例如A=[0.10.20.3;0.40.50.6];B=find(A1.0)%返回向量A中符合条件的元素的位置B=[]这里[]是空矩阵的符号,B=find(A1.0)表示列出矩阵A中值大于1.0的元素的序号。当不能满足括号中的条件时,返回空矩阵。另外,也可以将空矩阵赋给一个变量,如:B=[]B=[]一、特殊矩阵的实现二、矩阵的特征值与特征向量对于N×N阶方阵A,所谓A的特征值问题是:求数λ和N维非零向量x(通常为复数),使之满足下式:Ax=λx则称λ为矩阵A的一个特征值(特征根),而非零向量x为矩阵A的特征值λ所对应的特征向量。对一般的N×N阶方阵A,其特征值通常为复数,若A为实对称矩阵,则A的特征值为实数。二、矩阵的特征值与特征向量MATLAB提供的内部函数eig可以用来计算特征值与特征向量.eig函数的使用格式有五种,其中常见的有E=eig(A),[V,D]=eig(A),二、矩阵的特征值与特征向量(1)E=eig(A):由eig(A)返回方阵A的N个特征值,构成向量E;(2)[V,D]=eig(A):由eig(A)返回方阵A的N个特征值,构成N×N阶对角阵D,其对角线上的N个元素即为相应的特征值,同时将返回相应的特征向量赋予N×N阶方阵V的对应列;【例5】试用格式(1)求下列对称矩阵A的特征值;用格式(2)求A的特征值和相应的特征向量,且验证之。A=[1.00001.00000.50001.00001.00000.25000.50000.25002.0000];执行eig(A)将直接获得对称矩阵A的三个实特征值:二、矩阵的特征值与特征向量eig(A)ans=-0.01661.48012.5365而下列命令则将其三个实特征值作为向量赋予变量E:E=eig(A)E=-0.01661.48012.5365二、矩阵的特征值与特征向量三、行列式的值MATLAB提供的内部函数det用来计算矩阵的行列式的值。设矩阵A为一方阵(必须是方阵),求矩阵A的行列式值的格式为:det(A)。注意:本函数同样能计算通过构造出的稀疏矩阵的行列式的值。三、行列式的值【例6】利用随机函数产生一个三阶方阵A,然后计算方阵之行列式的值。A=rand(3)A=0.95010.48600.45650.23110.89130.01850.60680.76210.8214det(A)ans=0.4289四、矩阵求逆及其线性代数方程组求解1.矩阵的基本性质①矩阵的秩:矩阵线性无关的行数与列数称为矩阵的秩。在MATLAB中,求矩阵秩的函数是rank(A)。②矩阵的迹:等于矩阵的对角线元素之和,也等于矩阵的特征值之和。在MATLAB中,求矩阵的迹的函数是trace(A)。③向量的范数:用来度量矩阵或向量在某种意义下的长度。范数有多种方法定义,其定义不同,范数值也就不同。(1)norm(V)或norm(V,2):计算向量V的2—范数。(2)norm(V,1):计算向量V的1—范数。(3)norm(V,inf):计算向量V的∞—范数。④矩阵的范数:MATLAB提供了求3种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同。⑤矩阵的条件数:在MATLAB中,计算矩阵A的3种条件数的函数是:(1)cond(A,1):计算A的1—范数下的条件数。(2)cond(A)或cond(A,2):计算A的2—范数数下的条件数。(3)cond(A,inf):计算A的∞—范数下的条件数。2.矩阵求逆若方阵A,B满足等式A*B=B*A=I(I为单位矩阵)则称A为B的逆矩阵,或称B为A的逆矩阵。这时A,B都称为可逆矩阵(或非奇异矩阵、或满秩矩阵),否则称为不可逆矩阵(或奇异矩阵、或降秩矩阵)。四、矩阵求逆及其线性代数方程组求解【例7】试用inv函数求方阵A的逆阵A-1赋值给B,且验证A与A-1是互逆的。A=[1-11;5-43;211];B=inv(A)B=-1.40000.40000.20000.2000-0.20000.40002.6000-0.60000.2000A*Bans=1.00000.00000.00000.00001.00000.00000.00000.00001.0000B*Aans=1.00000.00000.00000.00001.00000.00000.00000.00001.0000四、矩阵求逆及其线性代数方程组求解3.矩阵求逆解法利用求系数矩阵A的逆阵A-1,我们可以得到矩阵求逆解法。对于线性代数方程组Ax=b,等号两侧各左乘A-1,有:A-1Ax=A-1b由于A-1A=I,故得:x=A-1b四、矩阵求逆及其线性代数方程组求解【例8】试用矩阵求逆解法求解例6.20中矩阵A为系数矩阵的线性代数方程组Ax=b的解。A=[1-11;5-43;211];b=[2;-3;1];x=inv(A)*bx=-3.80001.40007.2000四、矩阵求逆及其线性代数方程组求解4.直接解法对于线性代数方程组Ax=b,我们可以运用左除运算符“\”象解一元一次方程那样简单地求解:x=A\b当系数矩阵A为N*N的方阵时,MATLAB会自行用高斯消去法求解线性代数方程组。若右端项b为N*1的列向量,则x=A\b可获得方程组的数值解x(N*1的列向量);若右端项b为N*M的矩阵,则x=A\b可同时获得同一系数矩阵A、M个方程组数值解x(为N*M的矩阵),即x(:,j)=A\b(:,j),j=1,2,…M。四、矩阵求逆及其线性代数方程组求解132321112345111xxx543321112345111yyy四、矩阵求逆及其线性代数方程组求解解法1:分别解方程组(1)Ax=b1;(2)Ay=b2A=[1-11;5-43;211];b1=[2;-3;1];b2=[3;4;-5];x=A\b1x=-3.80001.40007.2000y=A\b2-3.6000-2.20004.4000得两个线性代数方程组的解:(1)x1=-3.8,x2=1.4,x3=7.2;(2)y1=-3.8,y2=1.4,y3=7.2四、矩阵求逆及其线性代数方程组求解解法2:将两个方程组连在一起求解:Az=bb=[23;-34;1-5]z=A\bz=-3.8000-3.60001.4000-2.20007.20004.4000很明显,这里的解z的两个列向量便是前面分别求得的两组解x和y四、矩阵求逆及其线性代数方程组求解五、多项式运算及其求根五、多项式运算及其求根MATLAB语言把多项式表达成一个行向量。鉴于MATLAB无零下标,故把多项式的一般形式表达为:在MATLAB里,多项式由一个行向量表示,该向量中的元素是按多项式降幂排列的。P=[a1a2……anan+1]注意,必须包括具有零系数的项。1121nnnnaxaxaxa五、多项式运算及其求根1.多项式求根命令格式:x=roots(A)。这里A为多项式的系数A(1),A(2),…,A(N),A(N+1);解得的根赋值给数组X,即X(1),X(2),…,X(N)。【例9】试用ROOTS函数求多项式x4+8x3-10的根这是一个4次多项式,它的五个系数依次为:1,8,0,0,-10。下面先产生多项式系数的向量A,然后求根:A=[1800-10]A=1800-10x=roots(A)x=-8.0194-0.5075+0.9736i-0.5075-
本文标题:Matlab代数运算
链接地址:https://www.777doc.com/doc-1539170 .html