[SciPy-User] Permutation convention for LU decomposition

Jason Grout jason-sage at creativetrax.com
Mon Nov 1 13:56:59 EDT 2010


On 10/31/2010 06:46 AM, Pauli Virtanen wrote:
> Sat, 30 Oct 2010 20:42:49 -0500, Jason Grout wrote:
>
>> I notice that in Lapack, Matlab, and Mathematica, the LU decomposition
>> routine for a matrix A returns a P, L, and U matrices so that:
>>
>> PA=LU
> LAPACK returns the P L U decomposition. Quote from the relevant manual
> page:
>
> """
> DGETRF computes an LU factorization of a general M-by-N matrix A using
> partial pivoting with row interchanges.  The factorization has the form
>
>            A = P * L * U
>
> where  P  is  a  permutation matrix, L is lower triangular with unit
> diagonal elements (lower trapezoidal if m>  n), and U is upper triangular
> (upper trapezoidal if m<  n). This is the right-looking Level 3 BLAS
> version of the algorithm.
> """
>

I can't find the documentation I was looking at to come to the erroneous 
conclusion that LAPACK gave back (the equivalent of) PA=LU; clearly the 
official LAPACK docs (quoted above) contradicts what I originally said.  
So now it makes perfect sense why scipy gives back A=PLU.

(and yes, I realize that LAPACK doesn't really return P as a matrix, and 
that P is trivial to invert; I was trying to simplify the question to 
one about convention of where the P was.)

Thanks, and sorry for the noise,

Jason




More information about the SciPy-User mailing list