【问题标题】:numpy: inverting an upper triangular matrixnumpy:反转上三角矩阵
【发布时间】:2011-08-27 21:22:59
【问题描述】:

numpy/scipy 中,计算上三角矩阵逆矩阵的规范方法是什么?

矩阵存储为具有零次对角元素的二维numpy数组,结果也应存储为二维数组。

编辑到目前为止我发现的最好的是scipy.linalg.solve_triangular(A, np.identity(n))。是这样吗?

【问题讨论】:

  • 三角矩阵有多大?在我的机器上,直截了当的numpy.linalg.invsolve_triangular 更快,适用于大约 40x40 的矩阵。
  • @NPE 对此有何更新?您还注意到调用上述 (*TRTRS) 的任何问题吗?我的矩阵足够小,我可以只写一个反向替换,但如果可能的话想避免。

标签: python matrix numpy scipy matrix-inverse


【解决方案1】:

确实没有倒置程序,本身scipy.linalg.solve 是求解矩阵-向量或矩阵-矩阵方程的规范方法,它可以得到关于矩阵结构的明确信息,用于选择正确的例程(可能相当于 BLAS3 dtrsm 在此案例)。

LAPACK 确实包含 doptri 用于此目的,scipy.linalg 确实公开了原始 C lapack 接口。如果逆矩阵真的是你想要的,那么你可以尝试使用它。

【讨论】:

  • 你真的需要倒置矩阵吗?如果您真的需要倒过来,LAPACK 路线是最好的路线。否则 linalg.solve 使用 LAPACK 求解线性系统做得相当不错。
  • doptri 会是正确的例行程序吗?如果我理解正确,op 表示正交矩阵。既然海报有三角矩阵,不应该是tp还是tr?我不是 LAPACK 专家——我的信息来自:en.wikipedia.org/wiki/LAPACK
  • 很棒的指针,但 dtrtri 可能是正确的指针,就像在 scipy.linalg.lapack.clapack.dtrtri 中一样
  • @dashesy DTRTRI 确实是这个问题的正确答案,应该更明显。
猜你喜欢
  • 2022-11-29
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 2011-06-16
  • 1970-01-01
相关资源
最近更新 更多