pyproximal.Orthogonal¶
- class pyproximal.Orthogonal(f: ProxOperator, Q: LinearOperator, partial: bool = False, b: ndarray[tuple[Any, ...], dtype[_ScalarT]] | None = None, alpha: float = 1.0)[source]¶
Proximal operator of any function of the product between an orthogonal matrix and a vector (plus summation of a vector).
Proximal operator of any quadratic function \(g(\mathbf{x})=f(\mathbf{Qx} + \mathbf{b})\) where \(\mathbf{Q}\) is an orthogonal operator and \(\mathbf{b}\) is a vector in the data space of \(\mathbf{Q}\).
- Parameters:
- f
pyproximal.ProxOperator Proximal operator
- Q
pylops.LinearOperator Orthogonal operator
- partial
bool, optional Partial (
True) of full (False) orthogonality- b
numpy.ndarray, optional Vector
- alpha
float, optional Positive coefficient for partial orthogonality. It will be ignored if
partial=False
- f
Notes
The Proximal operator of any function of the form \(g(\mathbf{x}) = f(\mathbf{Qx} + \mathbf{b})\) with the operator \(\mathbf{Q}\) satisfying the following condition \(\mathbf{Q}\mathbf{Q}^T = \alpha \mathbf{I}\) (partial orthogonality) is [1]:
\[\prox_{\tau g}(x) = \frac{1}{\alpha} ((\alpha \mathbf{I} - \mathbf{Q}^H \mathbf{Q}) \mathbf{x} + \mathbf{Q}^H (\prox_{\alpha \tau f}(\mathbf{Qx} + \mathbf{b}) - \mathbf{b}))\]A special case arises when \(\mathbf{Q}\mathbf{Q}^T = \mathbf{Q}^T\mathbf{Q} = \mathbf{I}\) (full orthogonality), and the proximal operator reduces to:
\[\prox_{\tau g}(x) = \mathbf{Q}^H (\prox_{\tau f}(\mathbf{Qx} + \mathbf{b}) - \mathbf{b}))\][1]Daniel O’Connor, D., and Vandenberghe, L., “Primal-Dual Decomposition by Operator Splitting and Applications to Image Deblurring”, SIAM J. Imaging Sciences, vol. 7, pp. 1724–1754. 2014.
Methods
__init__(f, Q[, partial, b, alpha])affine_addition(v)Affine addition
chain(g)Chain
grad(x)Gradient of the Moreau envelope of the function.
postcomposition(sigma)Postcomposition
precomposition(a, b)Precomposition
prox(**kwargs)proxdual(**kwargs)