关于Eigen库的矩阵分解方法选取与范数 |
您所在的位置:网站首页 › 计算矩阵的范数怎么算的 › 关于Eigen库的矩阵分解方法选取与范数 |
在非线性优化中,大多数要构建最小二乘方程组,求解需要进行矩阵分解,判断算法收敛性的时候,需要矩阵(向量)的范数,最常用的库之一当然有Eigen。Eigen提供了多种分解方法,以至于在实际选用的时候不知道用哪种方法好(我也是遇到这种尬的问题,要是只提供一种方法,我想都不想,直接***)。 一、Eigen矩阵分解 Eigen库只有头文件,cmake再使用的时候只需要包含头文件就行了,不需要进行链接。 Eigen主要提供了以下几种分解方法:Cholesky分解(包括LLT、LDLT),QR分解,SVD分解,LU分解(包括ParttialPivLU、FullPivLU)这四种分解法,对应Eigen库的头文件包括: #include #include #include #include 下图表示了对于这几种方法分解,对矩阵的最基本要求:比如ParttialPivLU要求矩阵可逆,LLT要求矩阵正定,LDLT要求矩阵可以半正定; 方法的选择主要跟系数矩阵相关: 1、如果系数矩阵是对于非对称、可逆的:则最适合的分解求解方法是partialPivLu; 2、如果系数矩阵是对称、正定的(正定方程组):则最适合的分解方法是 llt 或ldlt; 3、求解通用的欠定或超定线性方程组的最小二乘解:svd,可以认为BDC是Jacobi的扩展版本,是兼容它的,对于小矩阵 ( 于是有: 0-范数,向量中非零元的个数; 1-范数,向量中各个元素绝对值之和; 2-范数,向量中各元素的平方之和再开方;==(向量的模) (正/负)无穷范数,所有向量元素绝对值最大(小)值; 2、矩阵A的范数 Frobenius范数,矩阵中所有元素平方和再开根; 0范数,矩阵中非0元素的个数;(矩阵稀疏度); 1范数(列范数),矩阵中每列元素的绝对值之和的最大值; 2范数(谱范数),矩阵的最大奇异值(奇异值大于0的)。也等于最大特征值的平方根; 无穷范数(行范数),矩阵中每行元素的绝对值之和的最大值; 3、Eigen计算: 对矩阵、向量计算都适用: squaredNorm(): 各元素平方之和;等价于向量; norm(): 向量2范数,模长; 模板函数:lpNorm() lpNorm(): 向量1范数; lpNorm(): 向量无穷范数; |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |