Re: [eigen] 3x3 symmetric eigenvalues Problem |

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

*To*: eigen@xxxxxxxxxxxxxxxxxxx
*Subject*: Re: [eigen] 3x3 symmetric eigenvalues Problem
*From*: Manuel Yguel <manuel.yguel@xxxxxxxxx>
*Date*: Wed, 2 Nov 2011 13:17:32 +0100
*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=fFQqJ7/kvFn4ys4XPMuNXCTxS5jWESUPXJNLCiDq7r8=; b=wq1GGmxjf9xwcrd/8C+lRf7NzaWYlRjZWAxuE7V41mMUw64z/xE7XU3LnB38YgyxDG v4OpCWeFnB7UNhp6GwRboqp+sK+5ypPLHxyhJ18vlhXUkcsI5aglhkbzqUzDytd8p5a8 h5TG2d+jrn2DoG0YgeBcH0fPmju9jfvXFVjcA=

I got it: it is the default value for significantSquaredNorm2 that is
too high for that case.
The matrix is normalized therefore, the matrix that is actually investigated is:
diag( 1, 5e-4, 0 )
Now the squared norm of the cross product between col(0) and col(1) is
lower than Eigen::NumTraits<typename
Matrix::Scalar>::dummy_precision() hence the matrix is considered as
equivalent to diag(1,0,0) and the result is correct from that point of
view.
If you change the default value for significantNorm2 to
Eigen::NumTraits<typename
Matrix::Scalar>::dummy_precision()*Eigen::NumTraits<typename
Matrix::Scalar>::dummy_precision()
it is ok.
There is another problem now for almost isotropic matrices:
the precision_for_isotropic_case set to dummy_precision is too large
for those matrices (I did not realize that before, hmppffff)
If I change the line
if( Q < Scalar(0) ) to if( Q <= Scalar(0) )
in the code computing the roots of the polynomial
everything is ok for those matrices
however I think a better criterion is needed here but I have to make
some calculations and tests which will wait until this week-end.
- best regards,
Manuel