Exemple #1
0
 def dist(self, x, y):
     # Adapted from equation 6.13 of "Positive definite matrices". Chol
     # decomp gives the same result as matrix sqrt. There may be a more
     # efficient way to compute this!
     c = np.linalg.cholesky(x)
     c_inv = np.linalg.inv(c)
     l = multilog(multiprod(multiprod(c_inv, y), multitransp(c_inv)),
                  pos_def=True)
     return la.norm(multiprod(multiprod(c, l), c_inv))
Exemple #2
0
 def dist(self, x, y):
     # Adapted from equation 6.13 of "Positive definite matrices". The
     # Cholesky decomposition gives the same result as matrix sqrt. There
     # may be more efficient ways to compute this.
     c = la.cholesky(x)
     c_inv = la.inv(c)
     logm = multilog(multiprod(multiprod(c_inv, y), multitransp(c_inv)),
                     pos_def=True)
     return la.norm(logm)
Exemple #3
0
 def dist(self, x, y):
     # Adapted from equation 6.13 of "Positive definite matrices". Chol
     # decomp gives the same result as matrix sqrt. There may be a more
     # efficient way to compute this!
     c = np.linalg.cholesky(x)
     c_inv = np.linalg.inv(c)
     l = multilog(multiprod(multiprod(c_inv, y), multitransp(c_inv)),
                  pos_def=True)
     return la.norm(multiprod(multiprod(c, l), c_inv))
Exemple #4
0
 def test_multilog(self):
     A = np.zeros((self.k, self.m, self.m))
     L = np.zeros((self.k, self.m, self.m))
     for i in range(self.k):
         a = np.diag(rnd.rand(self.m))
         q, r = la.qr(rnd.randn(self.m, self.m))
         A[i] = q.dot(a.dot(q.T))
         L[i] = logm(A[i])
     np_testing.assert_allclose(multilog(A, pos_def=True), L)
Exemple #5
0
 def test_multilog(self):
     A = np.zeros((self.k, self.m, self.m))
     l = np.zeros((self.k, self.m, self.m))
     for i in range(self.k):
         a = np.diag(rnd.rand(self.m))
         q, r = la.qr(rnd.randn(self.m, self.m))
         A[i] = q.dot(a.dot(q.T))
         l[i] = logm(A[i])
     np_testing.assert_allclose(multilog(A, pos_def=True), l)
Exemple #6
0
 def dist(self, x, y):
     c = la.cholesky(x)
     c_inv = la.inv(c)
     logm = multilog(multiprod(multiprod(c_inv, y), multihconj(c_inv)),
                     pos_def=True)
     return np.real(la.norm(logm))
Exemple #7
0
 def log(self, x, y):
     c = la.cholesky(x)
     c_inv = la.inv(c)
     logm = multilog(multiprod(multiprod(c_inv, y), multitransp(c_inv)),
                     pos_def=True)
     return multiprod(multiprod(c, logm), multitransp(c))
Exemple #8
0
 def log(self, x, y):
     c = la.cholesky(x)
     c_inv = la.inv(c)
     l = multilog(multiprod(multiprod(c_inv, y), multitransp(c_inv)),
                  pos_def=True)
     return multiprod(multiprod(c, l), multitransp(c))
Exemple #9
0
 def test_multilog_singlemat(self):
     a = np.diag(rnd.rand(self.m))
     q, r = la.qr(rnd.randn(self.m, self.m))
     # A is a positive definite matrix
     A = q.dot(a.dot(q.T))
     np_testing.assert_allclose(multilog(A, pos_def=True), logm(A))
Exemple #10
0
 def test_multilog_singlemat(self):
     a = np.diag(rnd.rand(self.m))
     q, r = la.qr(rnd.randn(self.m, self.m))
     # A is a positive definite matrix
     A = q.dot(a.dot(q.T))
     np_testing.assert_allclose(multilog(A, pos_def=True), logm(A))