On Dec 29, 12:31 pm, William Stein <wst...@gmail.com> wrote:> On Dec 28, 2011 9:05 PM, "shreevatsa" <shreevatsa.pub...@gmail.com> wrote:> > On Dec 29, 3:29 am, John Cremona <john.crem...@gmail.com> wrote:> > > This follows very easily from Stirling's Formula. But I suppose the> > > original question was not so much "what is the answer" as "can I get> > > the answer from system [xyz] without having to think"!> > > Yes!> > > After all, anything Sage can do a human can probably do with enough> > patience and time. The point of the software is to make it easy.> > (Not meant as flaimbait) I can think of a lot of counterexamples to this,> at least in the context of number theory problems that involve counting,> which would be impossible to do in a lifetime because humans are just way> too slow... Yes, I agree. I thought of this actually... so I waffled a bit with "enough patience and time", despite realizing the time required can be more than a lifetime. :-) My fault.Either way, I think my point stands that even if we can do something by hand, it would still be useful for Sage to have the ability to do it.What needs to be done here for this particular case, does anyone know? To answer my original question (I just thought of this), this is how I think one can get the answer in Sage with minimum human effort. 1. Look up Stirling's series to as many terms as desired. E.g. n! = √(2πn) (n/e)^n (1 + 1/(12n) + 1/(288n^2) - 139/(51840n^3) - 571/ (2488320n^4) + O(1/n^5)) So this is √(2πn) (n/e)^n multiplied by a power series in 1/n. And Sage can handle power series. 2. In Sage: sage: var('n') n sage: f = sqrt(2*pi*n) * (n/e)^n sage: R.<x> = PowerSeriesRing(QQ) sage: g = 1 + 1/12 * x + 1/288 * x^2 - 139/51840 * x^3 - 571/2488320 * x^4 + O(x^5) We've written the power series separately, so that factorial(n) = f(n) * g(1/n). To check: sage: (f(1000)*g(1/1000)).n() 4.02387260077094e2567 sage: factorial(1000).n() 4.02387260077094e2567 Cool. Now, binomial(n, n/2) = factorial(n) / factorial(n/2)^2 = f(n)/ f(n/2)^2 * g(1/n)/g(2/n)^2. So to get a series expansion for binomial(n, n/2)/2^n: sage: simplify(f(n)/f(n/2)^2/2^n) sqrt(2)/(sqrt(pi)*sqrt(n)) and sage: g(x)/g(2*x)^2 1 - 1/4*x + 1/32*x^2 + 5/128*x^3 - 21/2048*x^4 + O(x^5) This shows that binomial(n, n/2)/2^n is √(2/(πn)) (1 - 1/(4n) + 1/(32n^2) + 5/(128n^3) - 21/(2048n^4) + O(1/ n^5)) which coincides with the answer given by WA. Much more convenient than multiplying and dividing power series by hand.(If the Stirling series were stored in Sage, it would avoid even the first step of typing it in.) Thanks again for Sage,Shreevatsa
-- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org