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

Reply via email to