Here's a short comment: using Idx(n+1) seems to work a little better for me, since I've noticed that if I use Idx(n) with a very complicated expression, there is a possibility of terms with (n+1) indices ending up on the same side as the (n) indices.
That sounds like a bug. Can you give a specific example of an expression that does that?

Aaron Meurer


Sure, I can attempt to give an example. I've been unable to reproduce this behavior with a simple expression, so I am pasting below the full expression that I've been using. Of course, it may be something that I'm doing wrong, so I'm reluctant to cry wolf. But in a similar fashion to working with a building, if the pipes are a bit leaky, perhaps a small patch job would be beneficial if warranted.


Okay, here is a test program with a much simpler expression. The output of the program shows what I suspect to be right and wrong behavior. The questioned behavior seems to occur when two indexed terms are multiplied together:

This appears to be wrong:
(p[1, 2, 1 + n], -p[1, 2, n] + p[2, 2, n]*p[1, 2, 1 + n])
This appears to be right:
(-p[1, 2, n], p[2, 2, n]*p[1, 2, 1 + n] + p[1, 2, 1 + n])


Nicholas


#begin sample code
from sympy import *
from sympy.tensor import Indexed, Idx, IndexedBase
from sympy.matrices import *

p = IndexedBase('p')
var('deltax deltay delta deltat A B')
i,j,n = symbols('i j n', integer = True)


def test_as_independent(expr):
    expr0 = expr.lhs - expr.rhs
expr1 = expr0.as_independent(*filter(lambda t: t.args[-1] == Idx(n), expr0.atoms(Indexed) ) )
    print 'This appears to be wrong: '
    print expr1
    print 'This appears to be right: '
expr2 = expr0.as_independent(*filter(lambda t: t.args[-1] == Idx(n+1), expr0.atoms(Indexed) ) )
    print expr2


def run_scheme():
    expr1 = Eq( p[1,2,n+1] + p[2,2,n]*p[1,2,n+1], p[1,2,n])
    test_as_independent(expr1)

def main():
    run_scheme()

if __name__ == "__main__":
    main()
# end sample code



--
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.

Reply via email to