[SciPy-dev] Why does orth use svd instead of QR ?
Charles R Harris
Fri Feb 5 02:12:06 CST 2010
On Fri, Feb 5, 2010 at 12:47 AM, Charles R Harris <firstname.lastname@example.org
> On Fri, Feb 5, 2010 at 12:18 AM, David Cournapeau <email@example.com>wrote:
>> Charles R Harris wrote:
>> > On Thu, Feb 4, 2010 at 8:45 PM, David Cournapeau <firstname.lastname@example.org
>> > <mailto:email@example.com>> wrote:
>> > Hi,
>> > I wanted to know if there was a rationale for using svd to
>> > orthonormalize the columns of a matrix (in scipy.linalg). QR-based
>> > methods are likely to be much faster, and I thought this was the
>> > standard, numerically-stable method to orthonormalize a basis ? If
>> > reason is to deal with rank-deficient matrices, maybe we could add
>> > option to choose between them ?
>> > QR with column rotation would deal with rank-deficient matrices and
>> > routines for that are available in LAPACK
>> > <http://netlib.org/lapack/lug/node42.html>. The SVD was probably used
>> > because it was available. The diagonal elements of the R matrix can
>> > somewhat take the place of the singular values when column rotation is
>> So would be it ok to use this column-rotated QR in place of svd for
>> every case in orth ? I would have to check that QR with column rotation
>> is still significantly faster than svd, but I would surprised if if were
>> not the case. QR has also the advantage of being implemented in PLASMA
>> already contrary to eigen/svd solvers,
> I don't know how the two methods compare in practice. SVD algorithms
> generally use iterated QR reductions in their implementation, so QR
> reductions can't be worse numerically. But the SVD probably provides a
> better metric for rank determination. A google search turns up some
> literature on the subject that I can't access from home.
OK, here's a good
A quick look seems to indicate that the SVD is the way to go.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the SciPy-Dev