Sci.linalg.lu permuation error

bernhard.voigt at gmail.com bernhard.voigt at gmail.com
Tue May 29 05:02:46 EDT 2007


Hi Luke,

you should send this to the scipy user list: scipy-user at scipy.org

Bernhard


On May 28, 10:44 am, Luke <hazelnu... at gmail.com> wrote:
> I'm trying to use Scipy's LU factorization.  Here is what I've got:
>
> from numpy import *
> import scipy as Sci
> import scipy.linalg
>
> A=array([[3., -2., 1., 0., 0.],[-1., 1., 0., 1., 0.],[4., 1., 0., 0.,
> 1.]])
> p,l,u=Sci.linalg.lu(A,permute_l = 0)
>
> now, according to the documentation:
> **************************************************
> Definition:     Sci.linalg.lu(a, permute_l=0, overwrite_a=0)
> Docstring:
>     Return LU decompostion of a matrix.
>
> Inputs:
>
>   a     -- An M x N matrix.
>   permute_l  -- Perform matrix multiplication p * l [disabled].
>
> Outputs:
>
>   p,l,u  -- LU decomposition matrices of a [permute_l=0]
>   pl,u   -- LU decomposition matrices of a [permute_l=1]
>
> Definitions:
>
>   a = p * l * u    [permute_l=0]
>   a = pl * u       [permute_l=1]
>
>   p   -  An M x M permutation matrix
>   l   -  An M x K lower triangular or trapezoidal matrix
>          with unit-diagonal
>   u   -  An K x N upper triangular or trapezoidal matrix
>          K = min(M,N)
> *********************************************
>
> So it would seem that from my above commands, I should have:
> A == dot(p,dot(l,u))
>
> but instead, this results in:
> In [21]: dot(p,dot(l,u))
> Out[21]:
> array([[-1.,  1.,  0.,  1.,  0.],
>        [ 4.,  1.,  0.,  0.,  1.],
>        [ 3., -2.,  1.,  0.,  0.]])
>
> Which isn't equal to A!!!
> In [23]: A
> Out[23]:
> array([[ 3., -2.,  1.,  0.,  0.],
>        [-1.,  1.,  0.,  1.,  0.],
>        [ 4.,  1.,  0.,  0.,  1.]])
>
> However, if I do use p.T instead of p:
> In [22]: dot(p.T,dot(l,u))
> Out[22]:
> array([[ 3., -2.,  1.,  0.,  0.],
>        [-1.,  1.,  0.,  1.,  0.],
>        [ 4.,  1.,  0.,  0.,  1.]])
>
> I get the correct answer.
>
> Either the documentation is wrong, or somehow Scipy is returning the
> wrong permutation matrix... anybody have any experience with this or
> tell me how to submit a bug report?
>
> Thanks.
> ~Luke





More information about the Python-list mailing list