【问题标题】:C++ Boost: determinant and inversion of complex matrixC++ Boost:复矩阵的行列式和求逆
【发布时间】:2021-01-29 15:39:50
【问题描述】:

你知道boost 是否有可以计算复矩阵的行列式和求逆的函数吗?矩阵维度不大(小于 50)。

反转: 输入:矩阵 M = A +i*B 和 A,B 两个维度为 (n x n) 且 n

输出:

  • 反转: 矩阵 N = C + iD 与 C,​​D 两个维度为 (n x n) 的实矩阵,使得: (A +iB)^T (C+ i*D) = I (I: 恒等式矩阵)
  • 行列式: det(A+iB)

我用谷歌搜索但没有成功。

提前谢谢你。

【问题讨论】:

  • Boost 有uBLAS。然而,正如那里提到的,uBLAS 的最后一次重大改进是在 2008 年,自 2009 年以来没有做出重大改变
  • 感谢您的回答。我已经测试了 ublas 并没有成功地逆复杂矩阵,但我不确定所以我问了这个问题。碰巧,您知道我在哪里可以获得(免费)C++ 代码来求逆复杂矩阵吗?
  • 我有时会使用 eigen 库。过去,在 C 中,我使用过 Recipies in C 库。而且我还使用了一些我自己编写的代码......
  • 不清楚你想要实现什么,建议你添加预期的输出
  • 是的,我刚刚添加了输入和预期的输出。

标签: c++ matrix inversion


【解决方案1】:

我终于知道为什么这些矩阵求逆和行列式的运算符没有实现。这是因为我们从实矩阵上的经典算子中得到了这两个算子的闭式解。

对于矩阵求逆:我们有这个封闭形式的解决方案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 (我+iD)。对角矩阵I+iD的行列式很容易计算。

所以,det(A+iB) = det(A) * det(I +iD) 与 D:(A^(-1) * B) 的特征值矩阵

【讨论】:

    猜你喜欢
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2011-08-30
    • 1970-01-01
    相关资源
    最近更新 更多