public void MatrixComputationsEigenvaluesTest() { // first matrix Matrix matrix = new Matrix(new[, ] { { 5, 4, 1.3 }, { 4, 8.7, 2 }, { 1.3, 2, 0 } }); Double[] expected = new Double[3] { 11.7417, 2.44301, -0.484678 }; Double[] result = MatrixComputations.Eigenvalues(matrix); Array.Sort(expected); Array.Sort(result); result.Length.ShouldBe(expected.Length); for (Int32 index = 0; index < result.Length; index++) { result[index].ShouldBe(expected[index], 0.001); } // second matrix matrix = new Matrix(new[, ] { { 5, 8, 7.6, 2 }, { 8, 42, 0, 1 }, { 7.6, 0, 3, 5 }, { 2, 1, 5, 22.4 } }); expected = new Double[4] { 43.8386, 24.094, 8.97766, -4.51021 }; result = MatrixComputations.Eigenvalues(matrix); Array.Sort(expected); Array.Sort(result); result.Length.ShouldBe(expected.Length); for (Int32 index = 0; index < result.Length; index++) { result[index].ShouldBe(expected[index], 0.001); } // identity matrix matrix = MatrixFactory.CreateIdentity(4); expected = new Double[4] { 1, 1, 1, 1 }; result = MatrixComputations.Eigenvalues(matrix); Array.Sort(expected); Array.Sort(result); result.Length.ShouldBe(expected.Length); for (Int32 index = 0; index < result.Length; index++) { result[index].ShouldBe(expected[index], 0.001); } // exceptions Should.Throw <ArgumentNullException>(() => MatrixComputations.Eigenvalues(null)); }