关于Eigen库的矩阵分解方法选取与范数

您所在的位置:网站首页 计算矩阵的范数怎么算的 关于Eigen库的矩阵分解方法选取与范数

关于Eigen库的矩阵分解方法选取与范数

2024-07-04 09:24| 来源: 网络整理| 查看: 265

        在非线性优化中,大多数要构建最小二乘方程组,求解需要进行矩阵分解,判断算法收敛性的时候,需要矩阵(向量)的范数,最常用的库之一当然有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的)。也等于A^{T}A最大特征值的平方根;

无穷范数(行范数),矩阵中每行元素的绝对值之和的最大值;

3、Eigen计算:

        对矩阵、向量计算都适用:

squaredNorm(): 各元素平方之和;等价于向量v^{T}v

norm(): 向量2范数,模长;

模板函数:lpNorm()

lpNorm(): 向量1范数;

lpNorm(): 向量无穷范数;



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3