2011-05-18 184 views
9

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

该矩阵存储为具有零子对角线元素的2D numpy数组,并且结果还应该存储为二维数组。

编辑迄今为止找到的最好的是scipy.linalg.solve_triangular(A, np.identity(n))。是吗?

+0

三角矩阵有多大?在我的机器上,对于矩阵高达40x40,简单的'numpy.linalg.inv'比'solve_triangular'快。 – amcnabb 2013-06-14 18:19:32

+0

@NPE对此有何更新?你有没有注意到调用上述(* TRTRS)的问题?我的矩阵足够小,我可以写一个反向替换出来,但是如果可能的话,我想避免。 – Daniel 2016-07-05 14:59:13

回答

6

确实没有反转程序,本身scipy.linalg.solve是求解矩阵向量或矩阵矩阵方程的标准方法,它可以给出有关矩阵结构的明确信息,它将用来选择正确的例程(在这种情况下可能等价于BLAS3 dtrsm) 。

LAPACK确实包含doptri用于此目的,并且scipy.linalg确实暴露了原始C lapack界面。如果逆矩阵是真的你想要什么,那么你可以尝试使用它。

+1

你真的需要倒置矩阵吗?如果您真的需要翻转,LAPACK路线是最好的路线。否则,linalg.solve在使用LAPACK解决线性系统方面做了相当不错的工作。用于指出原始C接口的 – Ivan 2011-05-18 13:43:37

+0

(+1)。 – NPE 2011-05-18 19:05:18

+2

'doptri'会是正确的例程吗?如果我理解正确,“op”表示一个正交矩阵。由于海报有三角形矩阵,不应该是'tp'或'tr'吗?我不是LAPACK专家 - 我的信息来自:http://en.wikipedia.org/wiki/LAPACK – amcnabb 2013-06-14 18:08:32