simple_functional¶
-
odl.solvers.functional.functional.
simple_functional
(space, fcall=None, grad=None, prox=None, grad_lip=nan, convex_conj_fcall=None, convex_conj_grad=None, convex_conj_prox=None, convex_conj_grad_lip=nan, linear=False)[source]¶ Simplified interface to create a functional with specific properties.
Users may specify as many properties as-is needed by the application.
- Parameters
- space
LinearSpace
Space that the functional should act on.
- fcallcallable, optional
Function to evaluate when calling the functional.
- gradcallable or
Operator
, optional Gradient operator of the functional.
- prox
proximal factory
, optional Proximal factory for the functional.
- grad_lipfloat, optional
lipschitz constant of the functional.
- convex_conj_fcallcallable, optional
Function to evaluate when calling the convex conjugate functional.
- convex_conj_gradcallable or
Operator
, optional Gradient operator of the convex conjugate functional
- convex_conj_prox
proximal factory
, optional Proximal factory for the convex conjugate functional.
- convex_conj_grad_lipfloat, optional
lipschitz constant of the convex conjugate functional.
- linearbool, optional
True if the operator is linear.
- space
Examples
Create squared sum functional on rn:
>>> def f(x): ... return sum(xi**2 for xi in x) >>> def dfdx(x): ... return 2 * x >>> space = odl.rn(3) >>> func = simple_functional(space, f, grad=dfdx) >>> func.domain rn(3) >>> func.range RealNumbers() >>> func([1, 2, 3]) 14.0 >>> func.gradient([1, 2, 3]) rn(3).element([ 2., 4., 6.])