Can I simplify:
\begin{equation} \sum_{x=x_0}^{x_1} \frac{1}{ax+b} \end{equation}
Can I simplify:
\begin{equation} \sum_{x=x_0}^{x_1} \frac{1}{ax+b} \end{equation}
Mathematica (or rather Wolfram Alpha) gives an answer in terms of the digamma function: http://www.wolframalpha.com/input/?i=Sum[1%2F%28a+x%2Bb%29%2C{x%2Cx0%2Cx1}]
Using some Taylor approximations it turns out there's a fast approximation here. Code below.
float fastdigamma (float x) {
float twopx = 2.f + x;
return - (1.f + 2.f * x) / (x * (1.f + x))
- (13.f + 6.f * x) / (12.f * twopx * twopx)
+ log(twopx);
}
float FastHarmonicSum(float a, float b, float x0, float x1) {
return (fastdigamma(b/a + x1 + 1.) - fastdigamma(b/a + x0)) / a;
}
I found fastdigamma
at http://www.machinedlearnings.com/2011/06/faster-lda.html
Sometimes I estimate the sum of 1/p, where p ranges over a finite set of prime numbers. I often use 2/a as a lower bound for 1/(a+d) + 1/(a-d) when d is small compared to a. I often end up with a handy rational approximation with a small error I can calculate exactly when I need to do so. Perhaps a modification of this idea can help you in making elementary estimates of your sum.
Gerhard "Not Quite Splitting The Difference" Paseman, 2012.02.16