public void SymmetricMatrixNorms() { SymmetricMatrix Z = new SymmetricMatrix(3); Assert.IsTrue(Z.OneNorm() == 0.0); Assert.IsTrue(Z.InfinityNorm() == 0.0); Assert.IsTrue(Z.FrobeniusNorm() == 0.0); SymmetricMatrix A = CreateSymmetricRandomMatrix(4, 1); Assert.IsTrue(A.OneNorm() > 0.0); Assert.IsTrue(A.InfinityNorm() > 0.0); Assert.IsTrue(A.FrobeniusNorm() > 0.0); SymmetricMatrix B = CreateSymmetricRandomMatrix(4, 2); Assert.IsTrue(B.OneNorm() > 0.0); Assert.IsTrue(B.InfinityNorm() > 0.0); Assert.IsTrue(B.FrobeniusNorm() > 0.0); SymmetricMatrix S = A + B; Assert.IsTrue(S.OneNorm() <= A.OneNorm() + B.OneNorm()); Assert.IsTrue(S.InfinityNorm() <= A.InfinityNorm() + B.InfinityNorm()); Assert.IsTrue(S.FrobeniusNorm() <= A.FrobeniusNorm() + B.FrobeniusNorm()); SquareMatrix P = A * B; Assert.IsTrue(P.FrobeniusNorm() <= A.FrobeniusNorm() * B.FrobeniusNorm()); // Frobenium norm is sub-multiplicative }