Numerical issues should not impinge on a computation this small. For reference, I replicated your computation and found reasonable eigenvalues and vectors:
> m = matrix(c(0,1,-1,1,1,0,-1,0,1), nrow=3) > m [,1] [,2] [,3] [1,] 0 1 -1 [2,] 1 1 0 [3,] -1 0 1 > eig(m) Error: could not find function "eig" > eigen(m) $values [1] 2 1 -1 $vectors [,1] [,2] [,3] [1,] 0.5773503 0.0000000 0.8164966 [2,] 0.5773503 0.7071068 -0.4082483 [3,] -0.5773503 0.7071068 0.4082483 > Your usage appears to be in accord with the suggested usage, but have you tried it with a tolerance of, say, 1e-3? On Sat, Sep 19, 2009 at 10:41 PM, Axel <axel...@gmail.com> wrote: > Hello > > I'm trying to calculate the Eigenvectors of this Wikipedia example: > http://en.wikipedia.org/wiki/Eigenvalue_algorithm#Identifying_eigenvectors > > with this JUnit method: > > public void testEigenDecomposition() { > double[][] m = { { 0.0, 1.0, -1.0 }, { 1.0, 1.0, 0.0 }, { -1.0, > 0.0, 1.0 } }; > RealMatrix rm = new Array2DRowRealMatrix(m); > assertEquals(rm.toString(), > > "Array2DRowRealMatrix{{0.0,1.0,-1.0},{1.0,1.0,0.0},{-1.0,0.0,1.0}}"); > EigenDecompositionImpl ed = new EigenDecompositionImpl(rm, > MathUtils.SAFE_MIN); > RealVector rv0 = ed.getEigenvector(0); > assertEquals(rv0.toString(), "{(NaN); (NaN); (NaN)}"); > } > > but I'm getting only {(NaN); (NaN); (NaN)} as a result vector. > > Is this intentionally (because of numerical inaccuracy?) or am I doing > something wrong in using EigenDecompositionImpl? > > -- > Axel Kramer > http://code.google.com/p/symja > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > -- Ted Dunning, CTO DeepDyve