|Re: [eigen] JacobiSVD with nearly rank-deficient matrix|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] JacobiSVD with nearly rank-deficient matrix
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Sat, 12 Feb 2011 14:28:51 -0500
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type:content-transfer-encoding; bh=jWutlhFr8M33oSS/H74Z/Ta92aK4gOVnqGpaF6rBF/8=; b=nCYow7SNNF0WC+zQn4vEexykTm9tdM4P1hWMieYspps7XmUU0ON5FxdrmhjOAf0jcY EV4XD1klUTJDqOjU7LYLMk5HizXd5ThYZ3YmghmskyukxDRun/0EtsaiArO3JE5GjuNS 3EsmRHEICWYzALX7BWfb0xYRTu/0vvXoGtXKY=
- 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=iH37c0QssFqbAqgwguiKkEcgNLHTH3XH1+INIdXxlE0d8PCv2mkbtDYkMVgyPAVStr yhJhUedzK4OxshRpU8Z+D3mAcXsT0FNGMzIN8rlnhiR7djA+LpZiQQaBvuVLxx2+tAI7 TiOPePIebqJOn6tgdr0gQubHyaa7cXDnFgEQw=
2011/2/12 Jim Bosch <talljimbo@xxxxxxxxx>:
> On 02/12/2011 10:32 AM, Benoit Jacob wrote:
>> I understand that LAPACK cuts off very small singular values, but I
>> don't think that we should do the same in Eigen. The algorithm that
>> LAPACK uses makes these small singular values very unreliable, but the
>> same is not true with our algorithm.
>> There are many different notions of "goodness/badness" tests of
>> solutions, depending on your use cases, and the path we've chosen in
>> Eigen is to let the user perform his own tests, like in the example
>> program above where I compute the relative error on the right-hand
> There are times when one doesn't trust the values one has fed into the SVD
> algorithm well enough to trust such small eigenvalues either, regardless of
> the reliability of the algorithm. I have to admit I also never use Eigen's
> SVD::solve routines, because I always wrap the SVD in something that imposes
> a cutoff on small singular values as well, so I'd love to see an option to
> supply such a cutoff to solve, even if it defaults to zero.
> That said, if Eigen's philosophy is that such tests should take place
> outside Eigen, I can certainly accept that.
OK, my earlier email was a bit rushed.
Tests of the form "is this solution good" should take place outside of
Eigen because only the user knows what criteria he wants to use there;
but if one wants to cut off small eigenvalues, then indeed this needs
to be done inside Eigen.
Looking at the singular values in this case:
I admit that in this case there is at least one cut-off that we should
probably perform: the small singular value here is indeed smaller than
epsilon*biggest, so indeed it is just noise. Indeed, a relative error
of epsilon in the source matrix could cause a bigger difference here.
I admit that in this case we should cut it off to zero.
So indeed, we should introduce a cut-off for small singular values,
and let it default to at most machine epsilon times the biggest