コード例 #1
0
        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));
        }