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

Remember to vote up questions/answers you find interesting or helpful (requires 15 reputation points)

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?

-

2
If $p$ is even, I don't think you'll find many real roots! – Barry Cipra Feb 1 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 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 at 20:52

1
did you try Newton-Raphson? – S. Sra Feb 1 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 at 21:49
show 1 more comment

1 Answer

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 at 14:48
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 13, "mathjax_display_tex": 1, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0}, "config": {"markdown_headings": false, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "github"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "english_confidence": 0.9370940327644348, "perplexity_flag": "middle"}