Exemple #1
0
    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)