To elaborate on what Sergey is saying, you need to understand that
SymPy is just Python, so it is limited by what is available in Python.
.* is not a valid operator in Python, so there is no way to make it
work.

In addition to this, SymPy philosophy is to make the Python operators
mean what they mean in normal Python. % is the modulo operator, so it
may not make sense to use it for something completely different. On
the other hand, I'm not sure if % can ever make sense for matrices, so
maybe it would be possible.

I would recommend just creating a light subclass of Matrix for your
work, and overload an operator to do elementwise multiplication. There
is a list of all Python operators here
http://docs.python.org/3.3/reference/expressions.html#operator-precedence.
You should be aware of the precedence of the operator you choose. %
actually probably is a good choice, because it has the same precedence
as *.

Something like

class MyMatrix(Matrix):
    def __mod__(self, other):
        return self.multiply_elementwise(other)

You'll want to be sure to document this nicely in your thesis, so that
people don't think that % is SymPy behavior.

If you come across an instance where something returns a normal Matrix
instead of a MyMatrix, that's most likely a bug that you should
report.

Aaron Meurer

On Sun, Feb 2, 2014 at 11:04 AM, Sergey Kirpichev <[email protected]> wrote:
> On Sunday, February 2, 2014 8:30:45 PM UTC+4, David Kremer wrote:
>>
>> What I would simply ask, is if it wouldn't be possible to overload an
>> operator such as "%" or ".*" to
>> implement matrix elementwise multiplication in sympy. It would greatly
>> improve the readability of my
>> code.
>
>
> First, there is no ".*" operator at all:
> http://docs.python.org/dev/reference/lexical_analysis.html#operators
>
> % - stands for integer division (yields the remainder).  While it's possible
> to overload
> it, I doubt if that's natural and pythonic (to include in sympy).  In your
> words, it's too hackish.
>
>>
>> About the second question, it is about the point if defining a single
>> operator such as ".*" in matlab
>> could be done in sympy
>
>
> Probably, this can be done only with some syntax extension.
>
> BTW, see also PEP 225.
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sympy.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to