summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorepapoutsellis <epapoutsellis@gmail.com>2019-04-14 20:06:03 +0100
committerepapoutsellis <epapoutsellis@gmail.com>2019-04-14 20:06:03 +0100
commita48f4a3e132f18e34cd47988e2e117090f734999 (patch)
tree8d2e3cf51304615b7ee7e9c6c6da678e95ec5a4f
parent47424426aa54ac629c1cb70efcfe9ef3c23f9ddf (diff)
downloadframework-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.py19
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'''