Forum Numerical Method Linear Algebra
SVD
-
osigrtoeltParticipant 2010-12-16 at 10:22 am
Can anyone please show me some examples of SVD/SVDDecomposition? Thanks.
-
Haksun LiModerator 2010-12-16 at 1:52 pm
Here we go.
<br /> Matrix A = new DenseMatrix(new double[][]{<br /> {1.5, 2, 4.96, 6.37, 36.01},<br /> {3, 4, 99, 12.24, 369.6},<br /> {73, 63.4, 0.19, 24, 99.39},<br /> {25.36, 9.31, 66.78, 88.12, 36.03},<br /> {15.51, 63.25, 36.1, 45.68, 111},<br /> {55, 66, 12.3, 79, 121},<br /> {55.5, 66.9, 12, 79.98, 97.001},<br /> {55, 66, 12, 79, 97}<br /> });<br /> <br /> SVD instance = new SVD(A, true, SVD.Method.GLOUB_KAHAN, 1e-15);<br /> <br /> DiagonalMatrix D = instance.D();<br /> assertTrue(AreMatrices.equal(D,<br /> new DiagonalMatrix(new double[]{<br /> 479.1298232378101, 193.0232889504696, 91.2574218051938, 34.9528538829285, 26.0366391601524//from R<br /> }), 1e-12));<br /> <br /> Matrix Ut = instance.Ut();<br /> Matrix U = instance.U();<br /> Matrix V = instance.V();<br /> <br /> Matrix Aexpected = U.multiply(D).multiply(V.t());<br /> assertTrue(AreMatrices.equal(Aexpected, A, 1e-12));<br /> <br /> Matrix Dexpected = Ut.multiply(A).multiply(V);<br /> assertTrue(AreMatrices.equal(Dexpected, D, 1e-12));<br />