def remove(self, n, update=True): assert n >= 0 if n > 0: self.x = np.delete(self.x, np.s_[-n:], 0) self.y = np.delete(self.y, np.s_[-n:], 0) if update: self._update()
def GS_basis(Kc, verbose=False): (n, n_) = Kc.shape assert n == n_ if verbose: print "Beginning GS process. n = {}".format(n) G = mat.eye(n,n) deleted = 0 for ell in xrange(n): if verbose: if ell%10 == 0: print "ell = {}".format(ell) ell -= deleted for i in xrange(ell): G[:,ell] -= (G.T * Kc * G)[ell,i] * G[:,i] cf = (G.T*Kc*G)[ell,ell] if cf < (10**-8): if verbose: print "Deleting column " + str(ell) G = mat.delete(G, ell, 1) deleted += 1 else: G[:,ell] /= cf ** .5 GKG = G.T*Kc*G (dummy, g_dim) = G.shape assert not mat.isnan(G).any() if verbose: print "GKG Divergence: {:e}".format(sum(abs(GKG - mat.eye(g_dim,g_dim)))) return G
def GS_basis(Kc, verbose=False): (n, n_) = Kc.shape assert n == n_ if verbose: print "Beginning GS process. n = {}".format(n) G = mat.eye(n, n) deleted = 0 for ell in xrange(n): if verbose: if ell % 10 == 0: print "ell = {}".format(ell) ell -= deleted for i in xrange(ell): G[:, ell] -= (G.T * Kc * G)[ell, i] * G[:, i] cf = (G.T * Kc * G)[ell, ell] if cf < (10**-8): if verbose: print "Deleting column " + str(ell) G = mat.delete(G, ell, 1) deleted += 1 else: G[:, ell] /= cf**.5 GKG = G.T * Kc * G (dummy, g_dim) = G.shape assert not mat.isnan(G).any() if verbose: print "GKG Divergence: {:e}".format( sum(abs(GKG - mat.eye(g_dim, g_dim)))) return G