Пример #1
0
        public static void TestSVD()
        {
            int        m           = 8;
            int        n           = 5;
            JamaMatrix jamaMatrix  = JamaMatrix.random(5, 3);
            JamaMatrix jamaMatrix2 = JamaMatrix.random(m, n).times(jamaMatrix).times(jamaMatrix.transpose());

            D.Say(0, "A = \n" + jamaMatrix2.ToString());
            SingularValueDecomposition singularValueDecomposition = new SingularValueDecomposition(jamaMatrix2);
            JamaMatrix u = singularValueDecomposition.getU();

            D.Say(0, "U = \n" + u.ToString());
            JamaMatrix s = singularValueDecomposition.S;

            D.Say(0, "S = \n" + s.ToString());
            JamaMatrix v = singularValueDecomposition.getV();

            D.Say(0, "V = \n" + v.ToString());
            D.Say(0, "rank = " + singularValueDecomposition.rank());
            D.Say(0, "cond = " + singularValueDecomposition.cond());
            D.Say(0, "norm2 = " + singularValueDecomposition.norm2());
            JamaMatrix jamaMatrix3 = new JamaMatrix(singularValueDecomposition.SingularValues, 1);

            D.Say(0, "singuler values = \n" + jamaMatrix3.ToString());
            JamaMatrix jamaMatrix4 = u.times(s).times(v.transpose());

            D.Say(0, "reconA =\n" + jamaMatrix4.ToString());
            JamaMatrix jamaMatrix5 = jamaMatrix4.minus(jamaMatrix2);

            D.Say(0, "diffA =\n" + jamaMatrix5.ToString());
        }
Пример #2
0
        public static void TestFunc()
        {
            double[][] array    = new double[4][];
            double[][] arg_15_0 = array;
            int        arg_15_1 = 0;

            double[] array2 = new double[2];
            arg_15_0[arg_15_1] = array2;
            array[1]           = new double[]
            {
                1.02,
                0.93
            };
            array[2] = new double[]
            {
                0.0,
                1.0
            };
            double[][] arg_73_0 = array;
            int        arg_73_1 = 3;

            double[] array3 = new double[2];
            array3[0]          = 1.0;
            arg_73_0[arg_73_1] = array3;
            double[][] a          = array;
            JamaMatrix jamaMatrix = new JamaMatrix(a);

            PolynomialImageTransformer.RegularUnitGrid(4);
            JamaMatrix jamaMatrix2 = (JamaMatrix)jamaMatrix.Clone();

            jamaMatrix2.SetElement(1, 0, 1.0);
            jamaMatrix2.SetElement(1, 1, 1.0);
            JamaMatrix jamaMatrix3 = IPolyPointTransformer.Polynomialize(jamaMatrix, 2);
            JamaMatrix jamaMatrix4 = PolynomialImageTransformer.SVDSolveApply(jamaMatrix3, PolynomialImageTransformer.PointUnroll(jamaMatrix2));

            D.Say(0, "polyTransform:\n" + jamaMatrix4.ToString());
            JamaMatrix unrolledVector = jamaMatrix3.times(jamaMatrix4);

            D.Say(0, "testSolution:\n" + PolynomialImageTransformer.PointRoll(unrolledVector, 2).ToString());
            PolynomialImageTransformer.getPolyPointTransformer(jamaMatrix, jamaMatrix2, 2);
            LatLon p = new LatLon(0.93, 1.02);

            D.Say(0, "Invert test:\n" + PolynomialImageTransformer.getApproximateInverterPolyPointTransformer(jamaMatrix, jamaMatrix2, 2).getTransformedPoint(p).ToString());
        }