C++ Boost:复矩阵的行列式和求逆
C++ Boost: determinant and inversion of complex matrix
你知道boost有没有计算复矩阵行列式和求逆的函数?矩阵维度不大(小于50)。
反转:
输入:矩阵 M = A +i*B 其中 A、B 是维度为 (n x n) 且 n <50 的两个实数矩阵。
输出:
- 反转:
矩阵 N = C + iD 和 C,D 两个维度为 (n x n) 的实数矩阵使得:(A +iB)^T (C+ i*D) = I (I : 单位矩阵)
- 行列式:
det(A+iB)
我用谷歌搜索但没有成功。
提前致谢。
终于知道为什么这些矩阵的求逆和行列式运算符没有实现了。这是因为我们从实数矩阵的经典算子中得到了这两个算子的闭式解。
对于矩阵求逆:我们有这个封闭形式的解决方案https://fr.mathworks.com/matlabcentral/fileexchange/49373-complex-matrix-inversion-by-real-matrix-inversion
对于矩阵行列式,我们有:
det((A+iB))= det (A * (I + i A1.B)) (其中A1是A的逆矩阵)
= det(A) * det (I + i A1.B))
= det(A) * det (U1 (I + iD) U2) (其中U1 = A1.B, U2是U1的逆矩阵, D是U1的对角矩阵) = det( A) *det(I +iD)。 I +iD 的行列式很容易计算出来,它是一个对角矩阵。
所以,det(A+iB) = det(A) * det(I +iD) 其中D:(A^(-1) * B)的特征值矩阵
你知道boost有没有计算复矩阵行列式和求逆的函数?矩阵维度不大(小于50)。
反转: 输入:矩阵 M = A +i*B 其中 A、B 是维度为 (n x n) 且 n <50 的两个实数矩阵。
输出:
- 反转: 矩阵 N = C + iD 和 C,D 两个维度为 (n x n) 的实数矩阵使得:(A +iB)^T (C+ i*D) = I (I : 单位矩阵)
- 行列式: det(A+iB)
我用谷歌搜索但没有成功。
提前致谢。
终于知道为什么这些矩阵的求逆和行列式运算符没有实现了。这是因为我们从实数矩阵的经典算子中得到了这两个算子的闭式解。
对于矩阵求逆:我们有这个封闭形式的解决方案https://fr.mathworks.com/matlabcentral/fileexchange/49373-complex-matrix-inversion-by-real-matrix-inversion
对于矩阵行列式,我们有:
det((A+iB))= det (A * (I + i A1.B)) (其中A1是A的逆矩阵)
= det(A) * det (I + i A1.B))
= det(A) * det (U1 (I + iD) U2) (其中U1 = A1.B, U2是U1的逆矩阵, D是U1的对角矩阵) = det( A) *det(I +iD)。 I +iD 的行列式很容易计算出来,它是一个对角矩阵。
所以,det(A+iB) = det(A) * det(I +iD) 其中D:(A^(-1) * B)的特征值矩阵