Armadillo之计算矩阵的行列式(determinant)

计算矩阵的行列式很简单,用det方法或是log_det方法

1 det(A)

如果A不是方阵的(square),将抛出std::logic_error异常

例:

mat m = "3,2,4;1,-2,3;2,3,2;";
double d = det(m);
cout << d << endl;

运行结果是-3

2 log_det(value, sign,A)

文档里推荐当矩阵A比较大时,使用本函数来代替det函数(估计会加快计算速度)

det(A)=exp(value)*sign

如果A不是方阵的(square),将抛出std::logic_error异常

例:

mat m = "3,2,4;1,-2,3;2,3,2;";
double value, sign;
log_det(value, sign, m);
cout << exp(value)*sign << endl;

运行结果是-3

我们知道判断一个方阵(square matrix)是否是奇异(singular)的可以看此方阵的行列式(determinant)是否为0,这对于精确的数值计算而言是没有问题的,但我们的计算机使用的是有限数字系统,总是存在误差的,所以一个矩阵即使是奇异,它的行列式用计算机计算出来的结果也有可能不为0,但总是比较接近0。但一般而言,det(A)的值并不是判断A是否接近奇异的好的判断标准。

Armadillo之计算矩阵的行列式(determinant),布布扣,bubuko.com

时间: 2024-08-20 23:08:08

Armadillo之计算矩阵的行列式(determinant)的相关文章

SPOJ - Find The Determinant III 计算矩阵的行列式答案 + 辗转相除法思想

SPOJ -Find The Determinant III 参考:https://blog.csdn.net/zhoufenqin/article/details/7779707 参考中还有几个关于行列式的性质. 题意: 计算矩阵的行列式答案 思路: 计算行列式的基本方法就是把矩阵化成上三角或下三角,然后观察对角线的元素,如果其中有一个元素为0则答案为0,否则行列式的值就是对角线上各个元素的乘积. #include <algorithm> #include <iterator>

C++中计算矩阵的行列式

使用eigen库: 求行列式: #include <iostream> #include <Eigen/Dense> using namespace std; using namespace Eigen; int main() { Matrix2d c; c << 1, 2, 3, 4; //转置.伴随 std::cout<<c<<std::endl<<std::endl; std::cout<<"转置\n&qu

【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式

               本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 上个月对Math.NET的基本使用进行了介绍,主要内容有矩阵,向量的相关操作,解析数据格式,数值积分,数据统计,相关函数,求解线性方程组以及随机数发生器的相关内容.这个月接着深入发掘Math.NET的各种功能,并对

开源Math.NET基础数学类库使用(15)C#计算矩阵行列式

原文:[原创]开源Math.NET基础数学类库使用(15)C#计算矩阵行列式                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 上个月对Math.NET的基本使用进行了介绍,主要内容有矩阵,向量的相关操作,解析数据格式,数值积分,数据统计,相关函数,求解线性方程组

矩阵的行列式的余子式计算

在n阶行列式中,把元素aij所在的第i行和第j列划去,留下来的n-1阶行列式叫做元素aij的余子式,记作Mij,令Aij=(-1)i+jMij,并称之为aij的代数余子式. 例如,四阶行列式 a11 a12 a13 a14 a21 a22 a23 a24 a31a32a33 a34 a41 a42 a43 a44 中a32的余子式为M32= a11 a13 a14 a21 a23 a24 a41 a43 a44 代数余子式A32=(-1)3+2M32= -M32 N阶行列式D等于它的任意一行(列

【原创】开源Math.NET基础数学类库使用(16)C#计算矩阵秩

               本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 上个月对Math.NET的基本使用进行了介绍,主要内容有矩阵,向量的相关操作,解析数据格式,数值积分,数据统计,相关函数,求解线性方程组以及随机数发生器的相关内容.这个月接着深入发掘Math.NET的各种功能,并对

开源Math.NET基础数学类库使用(16)C#计算矩阵秩

原文:[原创]开源Math.NET基础数学类库使用(16)C#计算矩阵秩                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 上个月对Math.NET的基本使用进行了介绍,主要内容有矩阵,向量的相关操作,解析数据格式,数值积分,数据统计,相关函数,求解线性方程组以及

矩阵与行列式的几何意义

作者:童哲链接:https://www.zhihu.com/question/36966326/answer/70687817来源:知乎著作权归作者所有,转载请联系作者获得授权. 行列式这个“怪物”定义初看很奇怪,一堆逆序数什么的让人不免觉得恐惧,但其实它是有实际得不能更实际的物理意义的,理解只需要三步.这酸爽~ 1,行列式是针对一个的矩阵而言的.表示一个维空间到维空间的线性变换.那么什么是线性变换呢?无非是一个压缩或拉伸啊.假想原来空间中有一个维的立方体(随便什么形状),其中立方体内的每一个点

【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数

               本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 上个月对Math.NET的基本使用进行了介绍,主要内容有矩阵,向量的相关操作,解析数据格式,数值积分,数据统计,相关函数,求解线性方程组以及随机数发生器的相关内容.这个月接着深入发掘Math.NET的各种功能,并对