Ondrej Certik wrote: > On Thu, Jun 5, 2008 at 4:32 PM, Robert Cimrman <[EMAIL PROTECTED]> wrote: >> Ondrej Certik wrote: >>> 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. >> This stuff generates neverending discussions on numpy lists. Numpy >> currently solves this by having array (n-dimensional container) and >> matrix (special 2d array w.r.t. multiplication and some functions). As > > Well, not for sin: > > In [8]: from numpy import matrix, array, sin > > In [11]: a = matrix([[1,2],[3,0]]) > > In [12]: sin(a) > Out[12]: > matrix([[ 0.84147098, 0.90929743], > [ 0.14112001, 0. ]]) > > In [13]: sin(array(a)) > Out[13]: > array([[ 0.84147098, 0.90929743], > [ 0.14112001, 0. ]]) > > > > So that's not how I would like this to be. It should either work for > all functions or for no functions.
I see. I do not use numpy matrices anyway, just arrays, as they are not really the linear algebra matrices, only arrays with some peculiar modifications - they have no extra value that arrays have not. SymPy Matrix could differ in this respect, as otherwise the Matrix is just a misnomed Array. But my voting power is zero here :) >> Matrix in SymPy is a linear algebra matrix, it should IMHO behave as >> such, i.e. sin(A) = Q*sin(D)*Q^T. Then maybe an Array would be usefull, >> something like sympy version of list of lists [of lists...]. > > Yes, I think so too. Plus we could create some pure python arrray > implementation, fully compatible with numpy. But internally, SymPy should stick to one, otherwise checking all the argument combinations would be a nightmare, no? r. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected] 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 -~----------~----~----~----~------~----~------~--~---
