You are making your life unnecessarily difficult.  The standard way to 
alternate between
numbers is to use (-1)**i.  In this case, you could do ((-1)**(i+1) + 1)/2.  
Another option
is to use sin or cos, for example, here you could use abs(sin(pi/2*i)).

With that being said, maybe we should create a mod object and have x%y return 
it.

Aaron Meurer
On Mar 4, 2010, at 1:17 PM, Ondrej Certik wrote:

> On Thu, Mar 4, 2010 at 11:40 AM, Chad File <archeryguru2...@gmail.com> wrote:
>> Ondrej,
>> The only opportunity with the below statement
>> 
>> Sum(f(i), (i, 1, 2*n))  = Sum(f(2*k)+f(2*k-1), (k, 1, n))
>> 
>> is that 2*n would have to be even.  And in my case it is certainly not
>> always true.  This summation is part of a function that is called man
> 
> You can fix that easily for having 2*n+1 as the upper limit too (then
> you'll cover all cases). Do you know how to do that, or should I try
> it?
> 
>> hundreds of times.  And each time it is called my limit is a different
>> number... sometimes even, but sometime not.  In fact my limit is a function
>> itself that also uses the '%' operator.
>> 
>> return (...) + int(mpmath.calculus.nsum(lambda i: (i-i%2)/2, [1,x-Mx%2]))
>> 
>> where x and Mx are positive integers.  I need an integer as a return from
>> this function, hence the int() conversion.  The Sum() function will leave
>> the value in integer form and is much cleaner and easier to read than the
>> above nsum() over the iterated lambda function.
>> 
>> Either way, I tried the f(i) -> f(2*k) + f(2*k-1) substitution.  And the
>> results were inaccurate when x-Mx%2 was odd.  If I keep modifying my Sum()
> 
> Can you give me an example? It is mathematically equivalent, so I
> don't understand how it can be inaccurate.
> 
>> command to account for these discrepancies I believe I will lose the
>> readability that I'm searching for.
> 
> What exactly is your use case? Do you need a simple sympy command to
> calculate your sum, or do you need to just calculate the sum somehow
> (but precisely).
> 
>> 
>> Thanks anyway for all the assistance.  I was just hoping there was a simple
>> switch or rewrite that I was overlooking to accept the '%' operator.
> 
> I think it is not difficult to implement the above substitution, so
> that it happens automatically. After I understand your use case in
> more details, I can help you with that, if you are interested.
> 
> Ondrej
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sympy" group.
> To post to this group, send email to sy...@googlegroups.com.
> To unsubscribe from this group, send email to 
> sympy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sympy?hl=en.
> 

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

Reply via email to