[Math] Calculating roots using Newton’s Method for multiplicity $> 1$

newton raphsonnumerical methods

I have programmed Newton's method in Matlab and it is working quite good. However if the multiplicity of the found root is greater than one, the method doesn't work very well. Therefore I did some research on the internet and found out about the accelerated Newton's method.This calculates the roots by taking the multiplicity of the root in consideration:
$x_{n+1} = x_n – m \frac{f(x_n)}{f'(x_n)}$.

I can guess the multiplicity for some functions, but sometimes it is too difficult to guess. How can I calculate this $m$ in Matlab (for example doing a few iterations and updating $m$).

I have read that $\frac{f(x_n)}{f'(x_n)}$ is equal to $\frac{x-\alpha}{m}$ for $x$ close to $\alpha$?

How can I use this above to calculate $m$?

Best Answer

If you don't know $m$, you could always use what Burden and Faires call the "modified Newton's Method," which is to apply Newton's method to $\mu(x) = f(x)/f'(x)$.

But both the modified Newton's Method, and the method you propose, will suffer from the same practical problem. As $x_n$ gets close to the root, $f'(x_n)$ gets very close to zero. Thus $f(x_n)/f'(x_n)$ is very close to $0/0$. So while the answer isn't theoretically undefined, the numerical errors will be large, and eventually your iterates will be "Nan" (which stands for "not a number").

Anyway, if you do want to use the method you propose, then I think the best way to find $m$ is to try the accelerated Newton's Method for different $m$, and see which one converges fast.

This is essentially equivalent to the method you propose, that is, finding out how $f(x)/f'(x)$ compares to $(x-\alpha)/m$ for $x$ close to $\alpha$. This is because your method requires knowing what $\alpha$ is, and the only approximations to $\alpha$ you have are the iterates of your algorithm.

Related Question