Accord.Tests.Math.SingularValueDecompositionTest.SingularValueDecompositionConstructorTest7 C# (CSharp) Method

SingularValueDecompositionConstructorTest7() private method

private SingularValueDecompositionConstructorTest7 ( ) : void
return void
        public void SingularValueDecompositionConstructorTest7()
        {
            int count = 100;
            double[,] value = new double[count, 3];
            double[] output = new double[count];

            for (int i = 0; i < count; i++)
            {
                double x = i + 1;
                double y = 2 * (i + 1) - 1;
                value[i, 0] = x;
                value[i, 1] = y;
                value[i, 2] = 1;
                output[i] = 4 * x - y + 3;
            }



            SingularValueDecomposition target = new SingularValueDecomposition(value,
                computeLeftSingularVectors: true,
                computeRightSingularVectors: true);

            {
                double[,] expected = value;
                double[,] actual = Matrix.Multiply(Matrix.Multiply(target.LeftSingularVectors, 
                    Matrix.Diagonal(target.Diagonal)), target.RightSingularVectors.Transpose());

                // Checking the decomposition
                Assert.IsTrue(Matrix.IsEqual(actual, expected, 1e-8));
                Assert.IsTrue(Matrix.IsEqual(target.Reverse(), expected, 1e-8));
            }

            {
                double[] solution = target.Solve(output);

                double[] expected= output;
                double[] actual = value.Multiply(solution);

                Assert.IsTrue(Matrix.IsEqual(actual, expected, 1e-8));
            }
        }
    }