def transform(self, st): """ >>> from sympy import * >>> from symplus.strplus import init_mprinting >>> init_mprinting() >>> m = translation([2,3,5]) >>> m.transform((1,2,3)) (3, 5, 8) >>> s = shearing(2*j,sqrt(3)*i) >>> m.transform(s) AffineTransformation([1 0 0; 2*sqrt(3) 1 0; 0 0 1], [0 -4*sqrt(3) 0]') >>> import symplus.setplus >>> x, y, z = symbols('x,y,z') >>> m.transform(AbstractSet((x,y,z), x**2+y**2+z**2<1)) {(x + 2, y + 3, z + 5) | x**2 + y**2 + z**2 < 1} """ if is_Tuple(st) and len(st) == 3: return self(*st) elif is_Function(st): return compose(self, st, inverse(self)) elif isinstance(st, Set): return Image(self, st) else: raise ValueError
def __new__(cls, function, **kwargs): evaluate = kwargs.pop('evaluate', global_evaluate[0]) if not is_Function(function): raise TypeError('function is not a FunctionClass, Functor or Lambda: %s'%function) if evaluate: return FunctionInverse.eval(function) return Functor.__new__(cls, function)
def __new__(cls, function, argument, **kwargs): evaluate = kwargs.pop('evaluate', global_evaluate[0]) argument = repack_if_can(sympify(unpack_if_can(argument))) if not is_Function(function): raise TypeError('function is not a FunctionClass, Functor or Lambda: %s'%function) if evaluate: function, argument = Apply.reduce(function, argument) if function == Id: return argument else: return Expr.__new__(cls, function, argument, **kwargs)
def __new__(cls, function, zet, **kwargs): evaluate = kwargs.pop("evaluate", global_evaluate[0]) if not is_Function(function): raise TypeError("function is not a FunctionClass, Functor or Lambda: %s" % function) if not isinstance(zet, Set): raise TypeError("zet is not a Set: %s" % zet) if evaluate: function, zet = Image.reduce(function, zet) if function == Id: return zet else: return Set.__new__(cls, function, zet, **kwargs)
def __new__(cls, *functions, **kwargs): evaluate = kwargs.pop('evaluate', global_evaluate[0]) for function in functions: if not is_Function(function): raise TypeError('function is not a FunctionClass, Functor or Lambda: %s'%function) if evaluate: functions = FunctionCompose.reduce(functions) if len(functions) == 0: return Id elif len(functions) == 1: return functions[0] else: return Functor.__new__(cls, *functions)