# Compute roots of sum_i c_i/(a_i + b_i x)^p

How to compute the (real) roots of

$$\sum_{i=1}^n \frac{c_i}{(a_i + b_i \cdot x)^p}$$

for given reals $a_i, b_i, c_i$, and positive integers $n, p$? The cases $p=1, ..., 5$ and $n=6, ..., 20$ would already be very useful for me. I actually just need any root in a given interval.

Multiplying by the denominators, this task can be reduced to finding roots of a polynomial, but this only works for very small $n$ whereas even for $n=8$ the coefficients in the polynomial are numerically unstable.

The only other method I could think of is using binary search (aka the bisection method). But this is too slow. Is there a faster method that is numerically stable?

-
If $p$ is even, I don't think you'll find many real roots! –  Barry Cipra Feb 1 '13 at 20:40
Sorry, I had set $c_i = 1$ to simplify the question. I have now put it back in so there may be roots even for even $p$. –  Emanuele Viola Feb 1 '13 at 20:48
With a $c_i$ in the numerator, you can simplify the denominator to just $(x-d_i)^p$. –  Barry Cipra Feb 1 '13 at 20:52
did you try Newton-Raphson? –  Suvrit Feb 1 '13 at 20:53
Thanks. I have not tried it because I was not sure what starting point to choose/whether the method would work in general. Do you see it? –  Emanuele Viola Feb 1 '13 at 21:49
show 1 more comment

This recent master thesis by Leonardo Robol treats the case $p=1$ in a numerically sound way. I think they are going to release some code soon, so you might want to contact the author.
Thanks for the useful pointer. I wonder if something like that can be done for $p > 1$? –  Emanuele Viola Feb 19 '13 at 14:48