package ch.akuhn.matrix.eigenvalues; import static org.junit.Assert.assertEquals; import org.junit.Test; import ch.akuhn.matrix.Matrix; public class AllEigenvaluesTest { private static final double epsilon = 1e-9; @Test public void shouldFindEigenvalues() { Matrix A = Matrix.from(3, 3, 0, 1, -1, 1, 1, 0, -1, 0, 1); Eigenvalues eigen = new AllEigenvalues(A).run(); assertEquals(-1, eigen.value[0], epsilon); assertEquals(1, eigen.value[1], epsilon); assertEquals(2, eigen.value[2], epsilon); assert A.mult(eigen.vector[0]).equals(eigen.vector[0].times(eigen.value[0]), epsilon); assert A.mult(eigen.vector[1]).equals(eigen.vector[1].times(eigen.value[1]), epsilon); assert A.mult(eigen.vector[2]).equals(eigen.vector[2].times(eigen.value[2]), epsilon); } @Test public void shouldReturnLargest() { Matrix A = Matrix.dense(10, 10); for (int n = 0; n < 10; n++) A.put(n, n, n); Eigenvalues eigen = new AllEigenvalues(A).largest(3).run(); assertEquals(3, eigen.value.length); assertEquals(7, eigen.value[0], epsilon); assertEquals(8, eigen.value[1], epsilon); assertEquals(9, eigen.value[2], epsilon); } }