factorial of negative one (-1)

Robert Kern robert.kern at gmail.com
Fri Oct 29 11:16:55 EDT 2010


On 10/29/10 12:02 AM, Chris Rebert wrote:
> On Thu, Oct 28, 2010 at 9:41 PM, Bj Raz<whitequill.bj at gmail.com>  wrote:
>> I am working with differential equations of the higher roots of negative
>> one. (dividing enormous numbers into other enormous numbers to come out with
>> very reasonable numbers).
>> I am mixing this in to a script for Maya (the final output is graph-able as
>> a spiral.)
>> I have heard that Sage, would be a good program to do this in, but I'd like
>> to try and get this to work in native python if I can.
>> The script I am trying to port to Python is; http://pastebin.com/sc1jW1n4.
>
> Unless your code is really long, just include it in the message in the future.
> So, for the archive:
> indvar = 200;
> q = 0;
> lnanswer = 0;
> for m = 1:150
>    lnanswer = (3 * m) * log(indvar) - log(factorial(3 * m))  ;
> q(m+1) = q(m)+ ((-1)^m) * exp(lnanswer);
> end
> lnanswer
> q
>
> Also, it helps to point out *what language non-Python code is in*. I'm
> guessing MATLAB in this case.
>
> Naive translation attempt (Disclaimer: I don't know much MATLAB):
>
> from math import log, factorial, exp
> indvar = 200
> q = [0]
> lnanswer = 0
> for m in range(1, 151):
>      lnanswer = (3 * m) * log(indvar) - log(factorial(3 * m))
>      q.append(q[-1] + (1 if m % 2 == 0 else -1) * exp(lnanswer))
> print(lnanswer)
> print(q)

I promised that I would reply when the OP posted here. Except you gave the 
answer that I would have.

To the OP: In your code snippet, q(m+1) and q(m) are not function calls. They 
are array indexing operations (with the special semantics that assigning beyond 
the last element in the array appends a new element to the array). You are not 
setting the result of a function to anything, just building up an array of 
results. You don't need symbolic math libraries like SAGE for this.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco




More information about the Python-list mailing list