Is gruntz expected to work properly for factorial2 (Double factorial) ???

14 views
Skip to first unread message

Anderson Bhat

unread,
Nov 7, 2021, 5:01:52 AM11/7/21
to sympy
I caught this while trying to execute the is_convergent() method from the concrete module for Sum . So the problem is that any expression of the form Sum( f(x), (x, 1, oo)).is_convergent() where f(x) contains factorial2 either gives out an error or False. 
Some examples being 

>>> Sum(factorial2(2*x-1)/factorial2(2*x) * 1/(2*x +1) , (x, 1, oo)).is_convergent()
False
>>> Sum((factorial2(2*x-1)/factorial2(2*x))**3 , (x, 1, oo)).is_convergent()
False 
>>> Sum(factorial2(2*x-1)/factorial2(2*x) * ((4*x+3)/(2*x +2)) , (x, 1, oo)).is_convergent()
False
>>> Sum((factorial2(2*x-1)/factorial2(2*x))**1 , (x, 1, oo)).is_convergent()
False

Usually double factorials work wonderfully when subjected to either Raabe's test or Krummer's test 
First 2 converge by Raabe's test  and last 2 diverge (obviously it gives false but I think it doesn't conduct proper evaluation ) . Their factorial counterparts are pretty similar and work as expected !

>>> Sum(factorial(2*x-1)/factorial(2*x) * 1/(2*x +1) , (x, 1, oo)).is_convergent()
True
>>> Sum((factorial(2*x-1)/factorial(2*x))**3 , (x, 1, oo)).is_convergent()
True
>>> Sum(factorial(2*x-1)/factorial(2*x) * (4*x+3)/(2*x +2) , (x, 1, oo)).is_convergent()
False
>>> Sum((factorial(2*x-1)/factorial(2*x))**1 , (x, 1, oo)).is_convergent()
False

Some like the following give long trace back of error 
>>> Sum(n/factorial(n) , (n, 1, oo)).is_convergent()
True
>>>Sum(n/factorial2(n) , (n, 1, oo)).is_convergent() # should give true like above 
>>> Sum(factorial2(n) , (n, 1, oo)).is_convergent() # should return false but gives long traceback

Now that most of these would involve Raabe's test and the initial Divergence test which involves taking limit at oo for expressions having factorial2
1) For Raabe's test we would need  limit( x ( ( f(x)/f(x + 1) - 1) , x, oo) 
2) For something like Sum(factorial2(n) , (n, 1, oo)).is_convergent( )  we would need limit(factorial2(x), x, oo) .

All of these are the actual reason for the error as gruntz is executed for the same which gives a long traceback. Corresponding factorial expressions work perfectly while using gruntz ! Obviously limit(factorial(x) , x, oo) gives oo.

 I am a bit new to gruntz and tend to get confused easily, hence Before reporting on github or trying to work on this I thought of confirming whether this is a legit issue . I have also mapped down couple more expressions from different issues reported on github for which gruntz leads to errors and will to work on them slowly as I get comfortable with gruntz !  
Any suggestions are welcome . Thanks 



Reply all
Reply to author
Forward
0 new messages