コード例 #1
0
ファイル: UtilTest.py プロジェクト: charanpald/sandbox
    def testMatrixPower(self):
        A = numpy.random.rand(10, 10)

        tol = 10**-6 
        A2 = A.dot(A)

        lmbda, V = scipy.linalg.eig(A)

        A12 = Util.matrixPower(A, 0.5)

        self.assertTrue(numpy.linalg.norm(A12.dot(A12)  - A) < tol)
        self.assertTrue(numpy.linalg.norm(numpy.linalg.inv(A) - Util.matrixPower(A, -1)) < tol)
        self.assertTrue(numpy.linalg.norm(A - Util.matrixPower(A, 1)) < tol)
        self.assertTrue(numpy.linalg.norm(A2 - Util.matrixPower(A, 2)) < tol)
        self.assertTrue(numpy.linalg.norm(numpy.linalg.inv(A).dot(numpy.linalg.inv(A)) - Util.matrixPower(A, -2)) < tol)        
        
        #Now lets test on a low rank matrix
        lmbda[5:] = 0
        A = V.dot(numpy.diag(lmbda)).dot(numpy.linalg.inv(V))
        A2 = A.dot(A)
        A12 = Util.matrixPower(A, 0.5)
        Am12 = Util.matrixPower(A, -0.5)
        
        
        self.assertTrue(numpy.linalg.norm(numpy.linalg.pinv(A) - Util.matrixPower(A, -1)) < tol)
        self.assertTrue(numpy.linalg.norm(numpy.linalg.pinv(A) - Am12.dot(Am12)) < tol)
        self.assertTrue(numpy.linalg.norm(A12.dot(A12)  - A) < tol)
        self.assertTrue(numpy.linalg.norm(A - Util.matrixPower(A, 1)) < tol)
        self.assertTrue(numpy.linalg.norm(A2 - Util.matrixPower(A, 2)) < tol)
コード例 #2
0
    def testMatrixPower(self):
        A = numpy.random.rand(10, 10)

        tol = 10**-6
        A2 = A.dot(A)

        lmbda, V = scipy.linalg.eig(A)

        A12 = Util.matrixPower(A, 0.5)

        self.assertTrue(numpy.linalg.norm(A12.dot(A12) - A) < tol)
        self.assertTrue(
            numpy.linalg.norm(numpy.linalg.inv(A) -
                              Util.matrixPower(A, -1)) < tol)
        self.assertTrue(numpy.linalg.norm(A - Util.matrixPower(A, 1)) < tol)
        self.assertTrue(numpy.linalg.norm(A2 - Util.matrixPower(A, 2)) < tol)
        self.assertTrue(
            numpy.linalg.norm(
                numpy.linalg.inv(A).dot(numpy.linalg.inv(A)) -
                Util.matrixPower(A, -2)) < tol)

        #Now lets test on a low rank matrix
        lmbda[5:] = 0
        A = V.dot(numpy.diag(lmbda)).dot(numpy.linalg.inv(V))
        A2 = A.dot(A)
        A12 = Util.matrixPower(A, 0.5)
        Am12 = Util.matrixPower(A, -0.5)

        self.assertTrue(
            numpy.linalg.norm(numpy.linalg.pinv(A) -
                              Util.matrixPower(A, -1)) < tol)
        self.assertTrue(
            numpy.linalg.norm(numpy.linalg.pinv(A) - Am12.dot(Am12)) < tol)
        self.assertTrue(numpy.linalg.norm(A12.dot(A12) - A) < tol)
        self.assertTrue(numpy.linalg.norm(A - Util.matrixPower(A, 1)) < tol)
        self.assertTrue(numpy.linalg.norm(A2 - Util.matrixPower(A, 2)) < tol)