数值代数方向相关函数.ppt
计算数学专业数值代数方向的计算数学专业数值代数方向的Matlab相关函数相关函数一、创建稀疏矩阵一、创建稀疏矩阵二、矩阵特征、范数以及条件数二、矩阵特征、范数以及条件数三、矩阵的分解三、矩阵的分解四、特殊矩阵的生成四、特殊矩阵的生成五、最小二乘拟合直线五、最小二乘拟合直线一、创建稀疏矩阵一、创建稀疏矩阵 在在MATLAB中,通过函数中,通过函数sparse()把普通矩阵转换把普通矩阵转换为稀疏矩阵,该函数的调用格式如下。为稀疏矩阵,该函数的调用格式如下。1.S=sparse(A):该函数将矩阵该函数将矩阵A转换为稀疏矩阵转换为稀疏矩阵S。当。当矩阵矩阵A是系数存储时,则函数调用相当于是系数存储时,则函数调用相当于S=A。2.S=sparse(m,n):该函数产生一个该函数产生一个mxn的所有元素都的所有元素都是是0的稀疏矩阵。的稀疏矩阵。3.S=sparse(u,v,S):该函数的输入参数该函数的输入参数u,v和和S是是3个等个等长的向量。长的向量。S是要建立的稀疏矩阵的非是要建立的稀疏矩阵的非0元素,元素,u(i),v(i)分别是分别是s(i)的行和列下标,该函数建立一个的行和列下标,该函数建立一个max(u)行、行、max(v)列,并以列,并以s为非零元素的稀疏矩为非零元素的稀疏矩阵。阵。4.S=sparse(i,j,s,m,n):该函数中该函数中i和和j分别是稀疏矩阵分别是稀疏矩阵中非零元素的行和列,中非零元素的行和列,s为相应的元素值,为相应的元素值,m和和n分分别是矩阵的行和列。别是矩阵的行和列。例:将普通矩阵转换为稀疏矩阵,代码如下:例:将普通矩阵转换为稀疏矩阵,代码如下:clear all;A=rand(15,10)0.98S=sparse(A)%产生稀疏矩阵产生稀疏矩阵whos例:将稀疏矩阵转换为普通矩阵,代码如下:例:将稀疏矩阵转换为普通矩阵,代码如下:clear all;A=0 0 0 2;0 0 3 0;0 0 0 0;4 0 0 0S1=sparse(A)%产生稀疏矩阵产生稀疏矩阵S2=sparse(4,2,1,1,3,4,4 3 2,4,4)%产生稀疏矩阵产生稀疏矩阵B=full(S1)%转换为普通矩阵转换为普通矩阵计算数学专业数值代数方向的计算数学专业数值代数方向的Matlab相关函数相关函数一、创建稀疏矩阵一、创建稀疏矩阵二、矩阵特征、范数以及条件数二、矩阵特征、范数以及条件数三、矩阵的分解三、矩阵的分解四、特殊矩阵的生成四、特殊矩阵的生成五、最小二乘拟合直线五、最小二乘拟合直线二、矩阵特征、范数以及条件数二、矩阵特征、范数以及条件数(一)矩阵特征(一)矩阵特征y1=det(A)求矩阵求矩阵A的行列式的行列式V,D=eig(A)求矩阵求矩阵A的特征向量、特征值构成的对角的特征向量、特征值构成的对角阵阵b1=diag(A)获取获取A的主对角元素的主对角元素B2=diag(A,i)获取第获取第i条对角元素(对角线以上)条对角元素(对角线以上)triu(A)返回矩阵返回矩阵A的上三角矩阵的上三角矩阵Tril(A)返回矩阵返回矩阵A的下三角矩阵的下三角矩阵triu(A,k)返回矩阵返回矩阵A的第的第k条对角线以上的元素条对角线以上的元素C=inv(A)求逆(求逆(A为可逆方阵)为可逆方阵)D=pinv(A)求求A的广义逆的广义逆d=rank(A)求矩阵求矩阵A的秩的秩(二)(二)矩阵范数矩阵范数n1=norm(A,1)计算矩阵的计算矩阵的1-范数范数n2=norm(A)计算矩阵的计算矩阵的2-范数范数n3=norm(A,inf)计算矩阵的无穷范数计算矩阵的无穷范数n3=norm(A,fro)计算矩阵的计算矩阵的Frobenius范数范数n5=normest(A)计算矩阵计算矩阵2-范数的估计值范数的估计值(三)条件数及其他(三)条件数及其他c1=cond(A,1)矩阵的矩阵的1-范数下的条件数范数下的条件数c2=cond(A,2)矩阵的矩阵的2-范数下的条件数范数下的条件数c3=cond(A,inf)矩阵无穷范数下的条件数矩阵无穷范数下的条件数x1=expm(A)计算矩阵的指数计算矩阵的指数X2=logm(A)计算矩阵计算矩阵A的对数的对数X1=funm(A,sin)计算矩阵的正弦计算矩阵的正弦计算数学专业数值代数方向的计算数学专业数值代数方向的Matlab相关函数相关函数一、创建稀疏矩阵一、创建稀疏矩阵二、矩阵特征、范数以及条件数二、矩阵特征、范数以及条件数三、矩阵的分解三、矩阵的分解四、特殊矩阵的生成四、特殊矩阵的生成五、最小二乘拟合直线五、最小二乘拟合直线三、矩阵的分解三、矩阵的分解(一)(一)Cholesky分解分解1.R=chol(A):该函数对正定矩阵该函数对正定矩阵A进行进行Cholesky分解,分解,返回值返回值R为上三角矩阵,满足为上三角矩阵,满足A=R*R。如果矩阵。如果矩阵A不是不是正定矩阵,则返回出错信息。正定矩阵,则返回出错信息。2.R,p=chol(A):当矩阵当矩阵A是正定矩阵时,进行是正定矩阵时,进行Cholesky分解,返回值分解,返回值R为上三角矩阵,满足为上三角矩阵,满足A=R*R,p=0。如。如果矩阵果矩阵A不是正定矩阵,则返回值不是正定矩阵,则返回值p是一个正整数,是一个正整数,R为为上三角矩阵,其阶数为上三角矩阵,其阶数为p-1,且满足,且满足A(1:p-1,1:p-1)=R*R例:利用函数进行矩阵的例:利用函数进行矩阵的Cholesky分解分解clear all;A=pascal(4)%产生产生4阶的帕斯卡矩阵阶的帕斯卡矩阵eig(A)R=chol(A)%矩阵的矩阵的Cholesky分解分解R*R(二)(二)LU分解分解 高斯消去法又称为高斯消去法又称为LU分解,将方阵分解,将方阵A分解为下三角分解为下三角矩阵的置换矩阵矩阵的置换矩阵L和上三角矩阵和上三角矩阵U的乘积。即满足的乘积。即满足A=L*UL1,U1=lu(A):该函数将矩阵该函数将矩阵A分解为下三角矩阵的置分解为下三角矩阵的置换矩阵换矩阵L1和上三角矩阵和上三角矩阵U1,它们满足,它们满足A=L1*U1。L2,U2,P=lu(A):该函数将矩阵该函数将矩阵A分解为下三角矩阵分解为下三角矩阵L2和上三角矩阵和上三角矩阵U2,以及置换矩阵,以及置换矩阵P,它们满足,它们满足L2*U2=P*AY=lu(A):该函数将下三角矩阵和上三角矩阵合并在矩阵该函数将下三角矩阵和上三角矩阵合并在矩阵Y中,矩阵中,矩阵Y的对角元素为上三角矩阵的对角元素,并的对角元素为上三角矩阵的对角元素,并且满足且满足Y=L2+U2-eye(size(A)例:利用函数例:利用函数lu()进行矩阵的进行矩阵的LU分解,代码如下分解,代码如下clear all;A=2 3 4;8 4 9;5 3 1L1,U1=lu(A)%矩阵的矩阵的LU分解分解L2,U2,P=lu(A)Y1=lu(A)%矩阵的矩阵的LU分解分解L1*U1%验证验证Y2=L2+U2-eye(size(A)%验证验证(三)(三)QR分解分解 矩阵的正交分解,又称为矩阵的正交分解,又称为QR分解。分解。QR分解将一个分解将一个mxn的矩阵的矩阵A分解为一个正交矩阵分解为一个正交矩阵Q(大小为(大小为mxn)和)和一个上三角矩阵一个上三角矩阵R(大小为(大小为mxn)的乘积,即)的乘积,即A=Q*R。在在MATLAB中通过函数中通过函数qr()进行矩阵的进行矩阵的QR分解。该函数分解。该函数的调用格式为的调用格式为Q,R=qr(A),其中,其中Q味正交矩阵,味正交矩阵,R为上为上三角矩阵。三角矩阵。(四)(四)SVD分解分解1.s=svd(A):该函数对矩阵该函数对矩阵A进行奇异值分解,返回由奇进行奇异值分解,返回由奇异值组成的列向量,奇异值按照从大到小的顺序进行排异值组成的列向量,奇异值按照从大到小的顺序进行排列。列。2.U,S,V=svd(A):该函数对矩阵该函数对矩阵A进行奇异值分解,其中进行奇异值分解,其中U和和V为酉矩阵,为酉矩阵,S为一个对角矩阵,对角线元素为矩阵为一个对角矩阵,对角线元素为矩阵奇异值的降序排列。奇异值的降序排列。例:利用函数例:利用函数svd()进行矩阵的奇异值分解,代码如下:进行矩阵的奇异值分解,代码如下:clear all;A=2 3 4;8 4 9;5 3 1s=svd(A)%矩阵的矩阵的SVD分解分解U,S,V=svd(A)%矩阵的矩阵的SVD分解分解U*S*V%验证验证norm(A)(五)(五)Schur分解分解 矩阵矩阵A的的Schur分解公式为分解公式为A=U*S*U,矩阵矩阵A必须是必须是方阵,方阵,U为酉矩阵,为酉矩阵,S为块对角矩阵,由对角线上的为块对角矩阵,由对角线上的1x1和和2x2等小块组成。等小块组成。1.U,S=schur(A):该函数将矩阵该函数将矩阵A进行进行Schur 分解,返分解,返回酉矩阵回酉矩阵U和块对角矩阵和块对角矩阵S。2.S=schur(A):该函数仅返回块对角矩阵该函数仅返回块对角矩阵S。例:利用函数例:利用函数schur()进行矩阵的进行矩阵的Schur分解,代码如下:分解,代码如下:clear all;A=pascal(4)%产生产生4阶帕斯卡矩阵阶帕斯卡矩阵U,S=schur(A)%矩阵的矩阵的Schur分解分解U*S*U%验证验证(六)(六)Hessenberg分解分解1.H=hess(A):该函数对方阵该函数对方阵A进行进行Hessenberg分解,返分解,返回回Hessenberg矩阵矩阵H。2.P,H=hess(A):该函数对方阵该函数对方阵A进行进行Hessenberg分解,分解,返回值为返回值为P和和H,满足,满足A=P*H*P,并且并且P*P=eye(size(P).例:利用函数例:利用函数hess()进行矩阵的进行矩阵的Hessenberg分解,代码分解,代码如下:如下:clear all;A=1 3 5 3;2 6 9 1;7 4 1 10;2 5 9 3;H1=hess(A)%矩阵的矩阵的Hessenberg分解分解P2,H2=hess(A)%矩阵的矩阵的Hessenberg分解分解B=P2*H2*P2%验证验证C=P2*P2计算数学专业数值代数方向的计算数学专业数值代数方向的Matlab相关函数相关函数一、创建稀疏矩阵一、创建稀疏矩阵二、矩阵特征、范数以及条件数二、矩阵特征、范数以及条件数三、矩阵的分解三、矩阵的分解四、特殊矩阵的生成四、特殊矩阵的生成五、最小二乘拟合直线五、最小二乘拟合直线四、特殊矩阵的生成四、特殊矩阵的生成(一)全零矩阵(一)全零矩阵1.A=zero(N):该函数产生该函数产生NxN的全零矩阵的全零矩阵2.A=zero(M,N):该函数产生该函数产生MxN的全零矩阵的全零矩阵3.A=zero(M,N,P):该函数产生该函数产生NxNxPx的全零矩阵的全零矩阵4.A=zero(size(B):该函数产生和矩阵该函数产生和矩阵B维数相同的全零维数相同的全零矩阵矩阵(二)全(二)全1矩阵和单位矩阵矩阵和单位矩阵 在在Matlab中,采用函数中,采用函数one()产生产生1矩阵,该函数的矩阵,该函数的调用格式和函数调用格式和函数zeros()基本一致。基本一致。采用函数采用函数eye()产生单位矩阵,该函数的调用格式如产生单位矩阵,该函数的调用格式如下。下。A=eye(N):该函数产生该函数产生NxN单位矩阵。单位矩阵。A=zeros(M,N):该函数产生该函数产生MxN的矩阵,对角线元素为的矩阵,对角线元素为1,其余元素均为其余元素均为0。A=zeros(size(B):该函数产生和矩阵该函数产生和矩阵B维数相同的单位矩维数相同的单位矩阵阵(三)范得蒙矩阵(三)范得蒙矩阵 范得蒙(范得蒙(Vandermonde)矩阵最后一列全为)矩阵最后一列全为1,倒,倒数第二列为一个指定的向量,其他各列是其后列与倒数数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个范得蒙第二列的点乘积。可以用一个指定向量生成一个范得蒙矩阵。矩阵。在在Matlab中,通过函数中,通过函数vander(V)生成以向量生成以向量V为为基础向量的范得蒙矩阵。基础向量的范得蒙矩阵。(四)希尔伯特矩阵(四)希尔伯特矩阵在在MATLAB中,通过函数中,通过函数hilb()生成希尔伯特生成希尔伯特(Hilbert)矩阵,该函数的调用格式为)矩阵,该函数的调用格式为hilb(n),产生,产生n阶的希尔伯特矩阵。希尔伯特矩阵是一种病态矩阵,矩阶的希尔伯特矩阵。希尔伯特矩阵是一种病态矩阵,矩阵中任何一个元素发生微小得变化,整个矩阵的值和逆阵中任何一个元素发生微小得变化,整个矩阵的值和逆矩阵都发生巨大的变化。矩阵都发生巨大的变化。在在MATLAB中,通过函数中,通过函数invhilb()求希尔伯特矩阵求希尔伯特矩阵的逆矩阵,该函数的调用格式为的逆矩阵,该函数的调用格式为invhilb(n),该函数产,该函数产生生n阶的希尔伯特矩阵的逆矩阵。阶的希尔伯特矩阵的逆矩阵。例:希尔伯特矩阵和其逆矩阵,代码如下例:希尔伯特矩阵和其逆矩阵,代码如下clear all;A=hilb(3)%产生希尔伯特矩阵产生希尔伯特矩阵B=hilb(4)%产生希尔伯特矩阵产生希尔伯特矩阵C=invhilb(3)%产生希尔伯特逆矩阵产生希尔伯特逆矩阵D=invhilb(4)%产生希尔伯特矩阵产生希尔伯特矩阵A*C%验证验证(五)托普利兹矩阵(五)托普利兹矩阵托普利兹(托普利兹(Toeplitz)矩阵除第一行和第一列外,)矩阵除第一行和第一列外,其他每个元素都与左上角的元素相同,在其他每个元素都与左上角的元素相同,在MATLAB中,中,通过函数通过函数toeplitz()生成托普利兹矩阵。该函数的调用格生成托普利兹矩阵。该函数的调用格式如下。式如下。1.toeplitz(x):该函数用向量该函数用向量x生成一个对称的托普利兹矩生成一个对称的托普利兹矩阵阵2.toeplitz(x,y):该函数产生一个以该函数产生一个以x为第一列,为第一列,y为第一为第一行的托普利兹矩阵。行的托普利兹矩阵。X和和y均为向量,两者不必等长。均为向量,两者不必等长。需要注意的是,向量需要注意的是,向量x和和y的第一个元素必须相等。的第一个元素必须相等。例:利用函数例:利用函数toeplitz()生成托普利兹矩阵,代码如下生成托普利兹矩阵,代码如下clear all;A=toeplitz(3:6)%产生托普利兹矩阵产生托普利兹矩阵x=3:8y=3:7B=toeplitz(x,y)%产生托普利兹矩阵产生托普利兹矩阵在在MATLAB中,通过函数中,通过函数compan()产生伴随矩阵,产生伴随矩阵,该函数的调用格式为该函数的调用格式为compan(p),其中,其中p味多项式的系味多项式的系数向量,高次幂系数排在前,低次幂排在后。数向量,高次幂系数排在前,低次幂排在后。(六)帕斯卡矩阵(六)帕斯卡矩阵二次项(二次项(x+y)n展开后的系数随展开后的系数随n的增大组成一的增大组成一个三角形表,称为杨辉三角形。由杨辉三角形表组成的个三角形表,称为杨辉三角形。由杨辉三角形表组成的矩阵称为帕斯卡(矩阵称为帕斯卡(Pascal)矩阵。该函数的调用格式为)矩阵。该函数的调用格式为Pascal(n),产生一个,产生一个n阶的帕斯卡矩阵。阶的帕斯卡矩阵。例:利用函数例:利用函数 pascal()生成帕斯卡矩阵,代码如下生成帕斯卡矩阵,代码如下clear all;A=pascal(4)%产生产生4阶帕斯卡矩阵阶帕斯卡矩阵B=pascal(5)%产生产生5阶帕斯卡矩阵阶帕斯卡矩阵计算数学专业数值代数方向的计算数学专业数值代数方向的Matlab相关函数相关函数一、创建稀疏矩阵一、创建稀疏矩阵二、矩阵特征、范数以及条件数二、矩阵特征、范数以及条件数三、矩阵的分解三、矩阵的分解四、特殊矩阵的生成四、特殊矩阵的生成五、最小二乘拟合直线五、最小二乘拟合直线五、最小二乘拟合直线五、最小二乘拟合直线在在MATLAB中,使用函数中,使用函数Isline()绘制最小二乘拟合绘制最小二乘拟合直线,该函数的调用格式如下:直线,该函数的调用格式如下:1.Isline:返回已知样本数据的最小二乘拟合直线,可以使返回已知样本数据的最小二乘拟合直线,可以使用除用除“-”、“”和和“.-”之外的其他线条样式绘制图之外的其他线条样式绘制图形。形。2.h=Isline:该函数返回函数句柄。该函数返回函数句柄。例:利用函数例:利用函数 Isline()绘制最小二乘拟合直线,其实现的绘制最小二乘拟合直线,其实现的MATLAB程序如下:程序如下:clear all;x=1.2 3.4 4.5 6.3 7.1 8.2 9.5 10.3 13.6;figure;plot(x,b*);%绘制样本点绘制样本点h=Isline%绘制最小二乘拟合直线绘制最小二乘拟合直线The End计算数学计算数学 李苏丹李苏丹 2014310005