Re: [eigen] SVD Bug |

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] SVD Bug*From*: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>*Date*: Thu, 23 Sep 2010 09:58:36 -0400*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=RMSvPuvbwFoO+6322iKCLK6mwiacfd+dLOuba3LccF0=; b=N+8OgoyyPUEHpNANneT3OE3lai14UdBp3OnTehaN3RF+Xi4FRevnsBVtAS+XvuG9wS 8SMNomMYyFZTy1bDROUpUhERplgXFUz4lF3B7ISY/fqo4BIofoFz3uiFIkr0A8U3Lcr7 2iZr9hy73ohfZLMxEAlcFllWYTtW5uIfiyfwI=*Domainkey-signature*: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=OMdgs/lGCR+6+cbGBpDEC9PRzy0ObBpk51uC84aKtEJx3wbAEHtWb5UWWI+PhPJswf jTff4hkF52Ms+II4P1rHqSSo19ahlVRN3/4oPqz5keaSQd+od1NS84uqVi6klFFQhMWr Qcm5JYsOf12yq1eZj//k4I3NQSf8jgazX24dE=

It turns out that the unit test was failing because it was trying to solve a system that didn't have solution. It took a random rectangular matrix and a random rhs and tried to solve. That was working well on square matrices, but broke on rectangular matrices with rows >= cols. I pushed your patch plus one more changeset fixing the unit test, and fixing the SVD to actually enforce rows >= cols since our code is still relying on that. Also I kept the existing U unchanged in all its stupidity (mxm filled with zeros in the useless area) because it's not worth breaking existing behavior at this point; once SVD is reimplemented the matrixU() method will be deprecated anyway and replaced by something that evaluates only what's needed. In conclusion, problem solved, thanks for your memory error fix. Benoit 2010/9/23 Benoit Jacob <jacob.benoit.1@xxxxxxxxx>: > OK so what happens is that this SVD implementation computes a compact U: > > m_matU.setZero(); > if (m>=n) > m_matU.block(0,0,m,n) = A; > else > m_matU = A.block(0,0,m,m); > > it doesn't bother extending the remaining rows by orthonormalization. > That actually isn't a bad thing. So the decomposition itself is fine. > We need to: > - document that aspect of U when taking the SVD of a rectangular matrix > - fix the solve method. > > Benoit > > 2010/9/23 Benoit Jacob <jacob.benoit.1@xxxxxxxxx>: >> 2010/9/23 Hauke Heibel <hauke.heibel@xxxxxxxxxxxxxx>: >>> I tried to look into it but failed. I can only say that already the >>> matrix U is strange since its last row is zero and this should not be >>> the case. >> >> Yes, indeed, that's very interesting: >> >> a >> -0.08936 0.971 >> -0.5195 -0.1061 >> 0.3311 -0.4731 >> >> matrixU >> -0.8752 -0.2161 0 >> -0.009971 0.9026 0 >> 0.4837 -0.3723 0 >> >> sigma >> 1.105 0 >> 0 0.5873 >> 0 0 >> >> matrixV.transpose() >> 0.2205 -0.9754 >> -0.9754 -0.2205 >> This unit test is really very insufficient. It should at least have >> checked that U is unitary. >> >> Benoit >> >> >>> >>> I know that Benoit is still working on rewriting the SVD but at least >>> the bad memory access should be fixed. >>> >>> Cheers, >>> Hauke >>> >> >

**Follow-Ups**:**Re: [eigen] SVD Bug***From:*Hauke Heibel

**References**:**[eigen] SVD Bug***From:*Hauke Heibel

**Re: [eigen] SVD Bug***From:*Benoit Jacob

**Re: [eigen] SVD Bug***From:*Benoit Jacob

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] SVD Bug** - Next by Date:
**[eigen] random thoughts -- we need more Gaels** - Previous by thread:
**Re: [eigen] SVD Bug** - Next by thread:
**Re: [eigen] SVD Bug**

Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |