首页 > 解决方案 > 带有向量枢轴的LU分解python

问题描述

scipy提供的LU分解函数返回一个置换矩阵P

P,L,U = scipy.linalg.lu(A)

其中A是一个矩形矩阵。然而,由于 P 的大小,我的问题的大小不允许存储P(即使是临时的),我真的需要一个计算置换向量的函数(如[L,U,P] = lu(A,'vector')在 Matlab 中)。我找到了一个 lapack 函数

LU,p,info = scipy.linalg.lapack.dgetrf(A)

这似乎返回了一个向量p但我了解到后者不是一个实际的置换向量,因为它包含两倍的相同值(https://software.intel.com/en-us/forums/intel-math-kernel-library/主题/780655)。因此,我正在寻找另一个函数(可能来自另一个库)来执行这个带有旋转的 LU 分解。由于计算时间也很重要,我不认为自己实现分解会很有效。

标签: pythonscipylapack

解决方案


是的,它是一个枢轴向量,它是一个标准的 LAPACK 返回。因此,您需要将其转换为您自己想要的任何其他形式(这比重新实现分解要容易得多)。


推荐阅读