On Thu, Jun 5, 2008 at 3:50 PM, Robert Cimrman <[EMAIL PROTECTED]> wrote:
>
> Hi,
>
> In [16]: sympy.__version__
> Out[16]: '0.5.15-hg'
> In [19]: K = sympy.Matrix(nm.array(1, ndmin = 2))
> In [20]: sympy.sympify(K)
> ...
> NotImplementedError: matrix support
>
> Is there a reason for this? Why a Matrix instance is not just passed
> along, since it is already a sympy object?

The patch fixing this is trivial:

$ hg di
diff --git a/sympy/core/sympify.py b/sympy/core/sympify.py
--- a/sympy/core/sympify.py
+++ b/sympy/core/sympify.py
@@ -107,7 +107,7 @@ def sympify(a, sympify_lists=False, loca
         if isinstance(a, Polynomial):
             return a
         if isinstance(a, Matrix):
-            raise NotImplementedError('matrix support')
+            return a

         if not isinstance(a, str):
             # At this point we were given an arbitrary expression

Is anyone against committing it? All tests pass.

>
> Then, what is the preferred way of dealing with symbolic matrices w.r.t.
> their usability in sympy functions:
> - use regular lists (numpy arrays would do too?) and call sympify() with
>  sympify_lists=True at the beginning of a function accepting a
> matrix-like argument
> - use Matrix
> Ideally, both should work the same way(?)

It depends what you want to do.

- for simple stuff I suggest to just use lists
- if you need linear algebra (which I think you almost always need),
I'd suggest Matrices
- in some special (numerical) cases numpy arrays could be used too

I just discovered we probably need to think about this:

In [1]: a = Matrix((1, x), (2, y))

In [2]: from numpy import array

In [3]: a
Out[3]:
⎡1 x⎤
⎣2 y⎦

In [4]: Matrix(sin(array(a)))
Out[4]:
⎡sin(1) sin(x)⎤
⎣sin(2) sin(y)⎦

In [5]: sin(a)
[...]

AttributeError: 'Matrix' object has no attribute 'is_Number'


What should [5] return? The same as [4] or the sin of a Matrix, which
is defined as sin(A) = Q*sin(D)*Q^T    if A = Q*D*Q^T   and D is
diagonal, so sin(D) is just the D with sin applied to the diagonal
terms.

Ondrej

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to