Accord.Tests.Math.GeneralizedEigenvalueDecompositionTest.GeneralizedEigenvalueDecompositionConstructorTest4 C# (CSharp) Method

GeneralizedEigenvalueDecompositionConstructorTest4() private method

        public void GeneralizedEigenvalueDecompositionConstructorTest4()
        {
            var A = new double[3, 3];
            A[0, 0] = 2.6969840958234776;
            A[0, 1] = 3.0761868753825254;
            A[0, 2] = -1.9236284084262458;
            A[1, 0] = -0.09975623250927601;
            A[1, 1] = 3.1520214626342158;
            A[1, 2] = 2.3928828222643972;
            A[2, 0] = 5.2090689722490815;
            A[2, 1] = 2.32098631016956;
            A[2, 2] = 5.522974475996091;


            var B = new double[3, 3];
            B[0, 0] = -16.753710484948808;
            B[0, 1] = -14.715495544818925;
            B[0, 2] = -41.589502695291074;
            B[1, 0] = -31.78618974973736;
            B[1, 1] = -14.30788463834109;
            B[1, 2] = -18.388254830328865;
            B[2, 0] = -3.2512542741611838;
            B[2, 1] = -18.774698582838617;
            B[2, 2] = -1.5640121915210088;


            var gevd = new GeneralizedEigenvalueDecomposition(A, B);

            var V = gevd.Eigenvectors;
            var D = gevd.DiagonalMatrix;

            // A*V = B*V*D
            var AV = Matrix.Multiply(A, V);
            var BVD = Matrix.Multiply(Matrix.Multiply(B, V), D);
            Assert.IsTrue(Matrix.IsEqual(AV, BVD, 0.000001));

            double[,] expectedVectors =
            {
                {1,	-0.120763598920560,	-0.636412048994645},
            {-0.942794724207834,	-1,	-0.363587951005355},
                {   -0.0572052757921662,	-0.0606762790704327,	1},
            };

            double[,] expectedValues = 
            {
                {0.186046511627907,	0,	0},
                {0,	-0.170549605858232,	0},
                {   0,	0,	0.186046511627907}
            };

            //Assert.IsTrue(Matrix.IsEqual(V, expectedVectors,0.001));
            Assert.IsTrue(Matrix.IsEqual(D, expectedValues, 0.00001));

        }