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()); }
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()); }