예제 #1
0
    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
예제 #2
0
파일: spline.py 프로젝트: bwohlberg/sporco
    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
예제 #3
0
    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)
예제 #4
0
파일: spline.py 프로젝트: bwohlberg/sporco
    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)