def xstep(self): r"""Minimise Augmented Lagrangian with respect to :math:`\mathbf{x}`.""" self.X = sl.idctii(self.Gamma*sl.dctii(self.Y + self.S - self.U, axes=self.axes), axes=self.axes) if self.opt['LinSolveCheck']: self.xrrs = sl.rrs(self.X + (self.lmbda/self.rho) * sl.idctii((self.Alpha**2)*sl.dctii(self.X, axes=self.axes), axes=self.axes), self.Y + self.S - self.U) else: self.xrrs = None
def xstep(self): r"""Minimise Augmented Lagrangian with respect to :math:`\mathbf{x}`.""" self.X = sl.idctii(self.Gamma*sl.dctii(self.Y + self.S - self.U, axes=self.axes), axes=self.axes) if self.opt['LinSolveCheck']: self.xrrs = sl.rrs( self.X + (self.lmbda/self.rho) * sl.idctii((self.Alpha**2) * sl.dctii(self.X, axes=self.axes), axes=self.axes), self.Y + self.S - self.U) else: self.xrrs = None
def eval_objfn(self): r"""Compute components of objective function as well as total contribution to objective function. Data fidelity term is :math:`(1/2) \| \mathbf{x} - \mathbf{s} \|_2^2` and regularisation term is :math:`\| D \mathbf{x} \|_2^2`. """ gvr = self.obfn_gvar() dfd = np.sum(np.abs(self.Wdf * gvr)) reg = 0.5*linalg.norm(sl.idctii(self.Alpha*sl.dctii(self.X, axes=self.axes), axes=self.axes))**2 obj = dfd + self.lmbda*reg return (obj, dfd, reg)
def eval_objfn(self): r"""Compute components of objective function as well as total contribution to objective function. Data fidelity term is :math:`(1/2) \| \mathbf{x} - \mathbf{s} \|_2^2` and regularisation term is :math:`\| D \mathbf{x} \|_2^2`. """ gvr = self.obfn_gvar() dfd = np.sum(np.abs(self.Wdf * gvr)) reg = 0.5*np.linalg.norm( sl.idctii(self.Alpha*sl.dctii(self.X, axes=self.axes), axes=self.axes))**2 obj = dfd + self.lmbda*reg return (obj, dfd, reg)