Ejemplo n.º 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());
		}