[Numpy-discussion] qr decomposition with column pivoting/qr decomposition with householder reflections

Charles R Harris charlesr.harris at gmail.com
Sun Jun 24 19:27:48 EDT 2007


On 6/21/07, traveller3141 <traveller3141 at gmail.com> wrote:
>
> I'm in the process of trying to convert some Matlab code into Python.
> There's a statement of the form:
>
> [q,r,e] = qr(A)
>
> which performs a qr-decomposition of A, but then also returns a
> 'permutation' matrix. The purpose of this is to ensure that the values along
> r's diagonal are decreasing. I believe this technique is called "qr
> decomposition with column pivoting" or (equivalently) "qr decomposition with
> householder reflections".


There is a qr version in numpy, numpy.linalg.qr, but it only returns the
factors q and r. The underlying lapack routines are {dz}geqrf and {dz}orgqr,
the latter converting the product of Householder reflections into the
orthogonal matrix q. Column pivoting is not used in {dz}geqrf, but it *is*
used in {dz}geqpf.  The versions with column pivoting are probably more
accurate and also allow fixing certain columns to the front of the array, a
useful thing in some cases, so I don't know why we chose the first rather
than the second. I suspect the decision was made in Numeric long ago and the
simplest function was chosen. The column pivoting version isn't in scipy
either and it probably should be. If you need it, it shouldn't be hard to
add.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20070624/1a43a02a/attachment.html>


More information about the NumPy-Discussion mailing list