code: def eval_objfn(self):
          r
  
          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)
docs: 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`.