diff options
author | epapoutsellis <epapoutsellis@gmail.com> | 2019-04-14 20:06:03 +0100 |
---|---|---|
committer | epapoutsellis <epapoutsellis@gmail.com> | 2019-04-14 20:06:03 +0100 |
commit | a48f4a3e132f18e34cd47988e2e117090f734999 (patch) | |
tree | 8d2e3cf51304615b7ee7e9c6c6da678e95ec5a4f | |
parent | 47424426aa54ac629c1cb70efcfe9ef3c23f9ddf (diff) | |
download | framework-a48f4a3e132f18e34cd47988e2e117090f734999.tar.gz framework-a48f4a3e132f18e34cd47988e2e117090f734999.tar.bz2 framework-a48f4a3e132f18e34cd47988e2e117090f734999.tar.xz framework-a48f4a3e132f18e34cd47988e2e117090f734999.zip |
check algebra FunctionComposition
-rw-r--r-- | Wrappers/Python/ccpi/optimisation/functions/FunctionOperatorComposition.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/Wrappers/Python/ccpi/optimisation/functions/FunctionOperatorComposition.py b/Wrappers/Python/ccpi/optimisation/functions/FunctionOperatorComposition.py index 34b7e35..38bc458 100644 --- a/Wrappers/Python/ccpi/optimisation/functions/FunctionOperatorComposition.py +++ b/Wrappers/Python/ccpi/optimisation/functions/FunctionOperatorComposition.py @@ -6,32 +6,47 @@ Created on Fri Mar 8 09:55:36 2019 @author: evangelos """ -import numpy as np -#from ccpi.optimisation.funcs import Function from ccpi.optimisation.functions import Function from ccpi.optimisation.functions import ScaledFunction class FunctionOperatorComposition(Function): + ''' Function composition with Operator, i.e., f(Ax) + + A: operator + f: function + + ''' + def __init__(self, operator, function): + super(FunctionOperatorComposition, self).__init__() self.function = function self.operator = operator alpha = 1 + if isinstance (function, ScaledFunction): alpha = function.scalar self.L = 2 * alpha * operator.norm()**2 def __call__(self, x): + + ''' Evaluate FunctionOperatorComposition at x + + returns f(Ax) + + ''' return self.function(self.operator.direct(x)) + #TODO do not know if we need it def call_adjoint(self, x): return self.function(self.operator.adjoint(x)) + def convex_conjugate(self, x): ''' convex_conjugate does not take into account the Operator''' |