[SciPy-User] qr decompostion gives negative q, r ?

Virgil Stokes vs@it.uu...
Tue Nov 20 16:59:00 CST 2012


On 2012-11-20 23:43, Charles R Harris wrote:
>
>
> On Tue, Nov 20, 2012 at 3:03 PM, Virgil Stokes <vs@it.uu.se 
> <mailto:vs@it.uu.se>> wrote:
>
>     On 2012-11-20 22:33, Da?id wrote:
>     > The QR descomposition is finding two matrices with certain
>     properties such that:
>     >
>     > A = Q·R
>     >
>     > But, if both Q and R are multiplied by -1, (-Q)·(-R) = Q·R = A,
>     still
>     > the same matrix. If Q is orthogonal, -Q is also. The sign is,
>     > therefore, arbitrary.
>     >
>     > On Tue, Nov 20, 2012 at 12:01 AM, Virgil Stokes <vs@it.uu.se
>     <mailto:vs@it.uu.se>> wrote:
>     >> I am using the latest versions of numpy (from
>     >> numpy-1.7.0b2-win32-superpack-python2.7.exe) and scipy (from
>     >> scipy-0.11.0-win32-superpack-python2.7.exe ) on a windows 7
>     (32-bit)
>     >> platform.
>     >>
>     >> I have used
>     >>
>     >> import numpy as np
>     >> q,r = np.linalg.qr(A)
>     >>
>     >> and compared the results to what I get from MATLAB (R2010B)
>     >>
>     >> [q,r] = qr(A)
>     >>
>     >> The q,r returned from numpy are both the negative of the q,r
>     returned
>     >> from MATLAB for the same matrix A. I believe that theq,r
>     returned from
>     >> MATLAB are correct. Why am I getting their negative from numpy?
>     >>
>     >> Note, I have tried this on several different matrices ---
>      numpy always
>     >> gives the negative of MATLAB's.
>     >>
>     >> _______________________________________________
>     >> SciPy-User mailing list
>     >> SciPy-User@scipy.org <mailto:SciPy-User@scipy.org>
>     >> http://mail.scipy.org/mailman/listinfo/scipy-user
>     > _______________________________________________
>     > SciPy-User mailing list
>     > SciPy-User@scipy.org <mailto:SciPy-User@scipy.org>
>     > http://mail.scipy.org/mailman/listinfo/scipy-user
>     Thanks David,
>     I am well aware of this; but, I am using the QR decomposition for a
>     convariance (PD matrix) and the negative R is not very useful in this
>     case and the numpy result, IMHO should not be the default.
>
>
> What is your application?
My application is the propagation of the factorized R matrix in the 
Kalman filter, where the QR factorization is for the covariance matrix 
in the KF recursions.
> I don't see that it should matter for most things, you
> are just using a slightly different set of basis vectors in the q. Is 
> orientation something you
> are concerned about?
And it does make a lot of difference!

I now have found that sometimes the "sign" of the factorization switches 
(wrt to the MATLAB version). The MATLAB QR factorization (however it may 
differ from that of numpy) is consistent in the sense there is no sign 
switching and the results obtained from the KF are correct (this I have 
verified). On the other hand, it is very unlikely that one can obtain 
the correct results with the current implementation of the QR 
factorization in Python.
>
> <snip>
>
> Chuck
>
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20121120/aef60348/attachment.html 


More information about the SciPy-User mailing list