summing over bessel function

i like this post (click again to cancel)
0
i dont like this post (click again to cancel)

Hi.

I need to sum over a bessel function K:

sum(bessel_K(0,2*PI*abs(x+k)),k,-oo,oo)

How ever I get an error:

TypeError: Cannot evaluate symbolic expression to a numeric value.

Which sounds logical. I there any way around this?

Thanks

asked Jun 05 '11

yotama9 gravatar image yotama9
21 3 4

2 Answers:

i like this answer (click again to cancel)
2
i dont like this answer (click again to cancel)

Yes, as you say, something like

sage: G = lambda x,k: bessel_K(0,2*pi*(x+k))
sage: [sum([G(x,k) for k in [1..100]]) for x in [0,1,2,3]]
[0.000917807437286879, 1.22307638250860e-6, 1.87088814696602e-9, 3.03065972802175e-12]

However,

Sometimes bessel_K(nu,z) is denoted K_nu(z) in the literature. In
PARI, nu can be complex and z must be real and positive.

So we get errors trying to sum over negative numbers.

There is also the scipy algorithm.

sage: G = lambda x,k: bessel_K(0,2*pi*(x+k),algorithm='scipy')
sage: [sum([G(x,k) for k in [1..100]]) for x in [0,1,2,3]]
[0.000917807437286507, 1.22307638250709e-6, 1.87088814709167e-9, 3.03065985167335e-12]

But this also does not play well with negative input.

There is also the problem that bessel_k(0,0) is undefined, if you were going to do that.

You could try using Maxima inside Sage, which does give negative input meaning. But it won't do anything symbolic with a sum to infinity of Bessel K.

sage: maxima_console()
<snip>

(%i1) sum(bessel_k(0,1+k),k,-3,3); 

bessel_k: bessel_k(0,0) is undefined.
 -- an error. To debug this try: debugmode(true);
(%i2) sum(bessel_k(0,1.5+k),k,-3,3);
(%o2)              2.3647955753643517 - 8.514365020222318 %i
(%i3) sum(bessel_k(0,1.5+k),k,-100,100);
(%o3)           2.4596346751510154 - 1.2033957278916282e+42 %i
(%i4) sum(bessel_k(0,.01+k),k,-100,100);
(%o4)            5.894176649568293 - 5.299305601915854e+42 %i

Notice also the very large imaginary part, which I have no idea whether to trust.

link

posted Jun 06 '11

kcrisman gravatar image kcrisman
6639 13 66 150
Thanks. I need to sum over positive and negative k and I will not include K(0,0). yotama9 (Jun 09 '11)
i like this answer (click again to cancel)
0
i dont like this answer (click again to cancel)

The bessel_K function is only implemented as far as numerical evaluation (thanks to PARI). For example, if you try:

sage: x = var('x')
sage: f = bessel_K(0,x)
...
TypeError: Cannot evaluate symbolic expression to a numeric value.
link

posted Jun 05 '11

benjaminfjones gravatar image benjaminfjones
2470 3 33 66
http://bfj7.com/
So there is no way around this, perhaps using a for loop... yotama9 (Jun 06 '11)

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[hide preview]

Question tools

Tags:

Stats:

Asked: Jun 05 '11

Seen: 261 times

Last updated: Jun 06 '11

powered by ASKBOT version 0.7.22
Copyright Sage, 2010. Some rights reserved under creative commons license.