def init_condition(self, r, x0): if x0 is None: x0 = ManifoldElement.rand(self.target_matrix.shape, r, norm=self.norm_bound) self.x = ManifoldElement(x0, r) self.grad = -TangentVector( self.x, riemannian_grad_partial(self.x, self.target_matrix, self.sigma_set, manifold_elems=True) ) return None
def init_condition(self, r, x0): if x0 is None: x0 = ManifoldElement.rand(self.target_matrix.shape, r, norm=self.norm_bound) self.x_prev, self.x = ManifoldElement(x0, r), ManifoldElement(x0, r) self.delta = delta_on_sigma_set(self.x, self.target_matrix, self.sigma_set) self.grad_partial = riemannian_grad_partial(self.x, self.target_matrix, self.sigma_set, grad=self.delta, manifold_elems=True) self.grad = -TangentVector(self.x, self.grad_partial) self.grad_prev = self.grad self.conj_prev, self.conj = TangentVector.zero(self.x), TangentVector.zero(self.x) return None