Armadillo之计算矩阵的行列式(determinant)
2014-08-02 00:00
316 查看
摘要: 介绍Armadillo库中计算矩阵行列式(determinant)的方法
计算矩阵的行列式很简单,用det方法或是log_det方法
1 det(A)
如果A不是方阵的(square),将抛出std::logic_error异常
例:
运行结果是-3
2 log_det(value, sign,A)
文档里推荐当矩阵A比较大时,使用本函数来代替det函数(估计会加快计算速度)
det(A)=exp(value)*sign
如果A不是方阵的(square),将抛出std::logic_error异常
例:
运行结果是-3
我们知道判断一个方阵(square matrix)是否是奇异(singular)的可以看此方阵的行列式(determinant)是否为0,这对于精确的数值计算而言是没有问题的,但我们的计算机使用的是有限数字系统,总是存在误差的,所以一个矩阵即使是奇异,它的行列式用计算机计算出来的结果也有可能不为0,但总是比较接近0。但一般而言,det(A)的值并不是判断A是否接近奇异的好的判断标准。
计算矩阵的行列式很简单,用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是否接近奇异的好的判断标准。
相关文章推荐
- 使用vector实现矩阵,并计算N阶矩阵的行列式
- 矩阵的行列式的余子式计算
- GSL矩阵计算之行列式
- 【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式
- MIT18.06线性代数课程笔记20:矩阵逆元计算、克里默法则 以及 行列式与volume、外积的关系
- GSL矩阵计算之行列式2
- 开源Math.NET基础数学类库使用(15)C#计算矩阵行列式
- 【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式
- 数值计算与方法 && 实验6||7 && LU分解求行列式的值和矩阵的逆
- 朴素的矩阵行列式计算之C++实现
- 大数据矩阵计算基础(一):矩阵运算,转置,矩阵的逆,行列式
- 矩阵求逆及行列式求值 - 未来再来添点更多矩阵计算功能
- 安装Armadillo 进行矩阵计算(Install Armadillo on Windows for Visual Studio)
- 安装Armadillo 进行矩阵计算(Install Armadillo on Windows for Visual Studio)
- 矩阵的行列式的计算-余子式
- c++实现4阶矩阵或行列式的计算
- 使用vector实现矩阵,并计算N阶矩阵的行列式
- 矩阵和向量计算VB.Net类模块
- numpy.linalg.eig() 计算矩阵特征向量
- 密码学中矩阵相关计算