[ 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 07:59:34 -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=oVG0BN8wKuj8mvU8zJXRaaO+n9eZR8tjV1IyeqtsPF4=; b=H0s46JftAZB/2QAGcnzBTJZoVT9pOqlpcY1cW5EwI2+Dp/Z5cB7yubW5BVcgKzxj/a jlGkjnYWX48U5ONT43kMO3/pUxCdlbpRFAhtPnCayYimGC3h/ZaknM0/jggdF/OM+lX5 PDmrf5K9Dc9vdsrJjZ5ubpIvV7KHUWBmV3ZeQ=
- 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=aSlatT1XjkbrdnsgAy5mj8I5w7JX/rh6A9L+tMvEtsTcU8mzeYEbS+bNhFviJhe+ja cOJ88qzaVqLyID4Tasde2lPo/iiFEh9bd6AFimMobOLWt2DjtbTsfZLpfR75kGOfsjXk 71zHDnfgY7Wj4SFuHH4p1ErPz6L6HkMwiybFw=
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
>>
>