Matlab在线性代数中的应用Matlab在线性代数中的应用•Matlab的最初设计目的就是为程序员或科研人员编写专业化的数值线性代数程序提供一个简单实用的接口。•线性代数只涉及到一维和二维数组,就是向量和矩阵。•Matlab的运算是基于矩阵的。矩阵转置、共轭转置运算对称矩阵:一个矩阵与其转置矩阵相等isequal(A,A.’)==1反对称矩阵:一个矩阵与其转置矩阵的和为零矩阵isequal(-A,A.’)==1A’矩阵共轭转置A.’矩阵转置转置的运算级别比加、减、乘、除等运算高矩阵的加、减运算Matlab中,矩阵的加、减就是A+B,A-B数与矩阵的乘法Matlab中,数与矩阵的乘法为:c*A或c.*A,这里*和.*的结果是一样的。矩阵与矩阵的乘法Matlab中,矩阵与矩阵的乘法就是C=A*B方阵的幂Matlab中,方阵的幂就是C=A^k方阵的多项式Matlab中,方阵的多项式B=polyvalm(p,A)计算下列乘积计算矩阵乘法的应用:求解递归问题•对于递归问题,可以构造线性递归方程组,进而构造两个向量之间的递归关系,并利用Matlab的矩阵计算功能来求解。1212321111,1*,1000101001001*1*210kmmuiauiauiauimAUkUiAUiaaaauiuiAUkAUkAUkUiuUimA例如,对于递归问题:可以构造一个矩阵及向量序列使得:其中:,于是:例:Fibonacci序列•1202年,Fibonacci(斐波纳契)在一本书中提出了一个问题:如果一对兔子出生一个月后开始繁殖,每个月产生一对后代,现在有一对新生的兔子,如果兔子没有死亡,那么第20个月月初会有多少兔子。这就是著名的Fibonacci序列。•1,1,2,3,5,8,13,21,34,55,89……•Fibonacci规则:2112,1,2,,1kkkaaakaa且。方阵的行列式d=det(A)返回方阵A的多项式的值10251213?21011242编写一个M函数求下面的行列式,n为函数的输入参数122222222232222n用克拉默法则解方程组矩阵的逆矩阵B=inv(A)求方阵A的逆矩阵。若A为奇异阵或近似奇异阵,将给出警告信息。利用逆矩阵求解方程组对于方程AX=B,如果A为方阵,称为恰定方程X=inv(A)*B/右除\左除若A可逆方阵,则A\B==A的逆左乘B==inv(A)*BA/B==A的逆右乘B==B*inv(A)X=A\B==A*X=BX=B/A==X*A=B通常,矩阵除法可以理解为A和B行数相等时才可进行左除A和B列数相等时才可进行右除矩阵的除法数学中没有定义矩阵的除法,这是matlab的定义用矩阵除法求解求解线性方程组对于方程AX=B,X=A\B利用除法求解时,不用先对矩阵A求逆,而是直接进行计算,即保证计算的精度,又节省大量的计算时间。矩阵的迹:trace()•b=trace(A):返回矩阵A的迹,即A的对角线元素之和,它等于矩阵的特征值之和。特征值与特征向量:eig()•矩阵A与特征值k、特征向量x之间的关系满足Ax=kx。•eig()函数用来求解矩阵的特征值与特征向量。•d=eig(A):返回又矩阵A的特征值组成的列向量•[V,D]=eig(A):返回特征值矩阵D和特征向量矩阵V。特征值矩阵D是以A的特征值为对角线的元素生成的对角阵,矩阵A的第k个特征值的特征向量是矩阵D的第k列列向量,即满足AV=VD。矩阵和向量的范数•线性代数中,在对线性方程组进行直接求解时,由于实际的观测和测量误差以及计算过程中的舍入误差等的影响,所求得的数值解与精确解之间存在着一定的差异,为了了解所得解的精确程度,必须对解的误差进行估计,这就要用到范数的概念。•矩阵范数是矩阵元素得数量级大小的一种度量。向量的范数:norm()•n=norm(X):X为向量,求欧几里德范数,即•n=norm(X,inf):求-范数,•n=norm(X,1):求1-范数,即•n=norm(X,-inf):求向量X的元素的绝对值的最小值,即•n=norm(X,p):求p-范数,即所以norm(X,2)=norm(X)。2k2|x|||X||||||max(())XabsXkk1|x|||X||||||min(())XabsXpkpkp|x|||X||矩阵的范数:norm()•n=norm(A):A为矩阵,求欧几里德范数,等于A的最大奇异值•n=norm(A,1):求A的列范数,等于A的列向量的1-范数的最大值•n=norm(A,2):求A的欧几里德范数,和norm(A)相同•n=norm(A,inf):求行范数,等于A的行向量的1-范数的最大值,即:max(sum(abs(A‘)))•n=norm(A,‘fro’):求矩阵A的Frobenius范数,即sqrt(sum(diag(A'*A))),不能用矩阵p-范数的定义来求范数的估计值:normest()•nrm=normest(A):矩阵A的2-范数(欧几里德范数)的估计值,相对误差小于106。•nrm=normest(A,tol):tol为指定相对误差•[nrm,count]=normest(…):count给出计算估计值的迭代次数矩阵的条件数•矩阵的条件数也是刻画线性方程组得解得精确性得一个非常重要的参数,它反映了线性方程组的解随数据中的误差变换的敏感程度,是反映矩阵的逆以及所组成的线性方程组的解的精度的指标•矩阵得条件数越接近1,表明计算结果越精确。•在求解方程AX=b中,矩阵A的条件数越大,所求得的解受A和b的数据的误差影响越大。cond()•c=cond(X):求X的2-范数的条件数,即X的最大奇异值和最小奇异值的商•c=cond(X,1):返回矩阵得1-范数的条件数•c=cond(X,2):等同于cond(x)•c=cond(X,’fro’):返回矩阵的F-范数的条件数•c=cond(X,inf):返回矩阵的∞-范数的条件数超定方程组•对于方程组Ax=y中,如果rank(A)=min(r,c),其中r和c分别时矩阵A的行数和列数,并且等式的数量多于未知数的数量(即rc)时,该方程组称为超定方程组。•超定方程组没有精确解。•在matlab中,超定方程组的解时使用矩阵左除或矩阵右除得到的平均误差e=A*x-y最小的解,该解被称为最小二乘解。例题:5148523518780465436632zyxyxzyxzyx欠定方程组•在方程组A*x=y中,如果rank(A)=min(r,c),其中r和c分别时矩阵A的行数和列数,并且等式的数量少于未知数的数量(即rc)时,该方程组称为欠定方程组。•欠定方程组存在无穷多个解,利用matlab可以求出其中的两个解。•一个解利用除法得到,该解在所有的解中0元素最多;•另一个解通过计算x=pinv(A)*y得到,该解的长度(也叫范数)小于所有其他的解,因此又叫最小范数解。