Brent's Method convergence criteria

946 Views Asked by At

I am using Brent's method to solve the BEM equations for a wind turbine model. I have run into a scenario where Brent's method has converged i.e., abs(m) is below set tolerance of 1e-8 but the value of the function f(root) = 5000. Can one then say that Brent's method failed to converge to a reasonable solution? What could be the reason for the function behaving like this?

Value of the function i.e., f(root) Stop criteria i.e., abs(m)

The same case when tried with fixed point iteration scheme converges below 1e-8. I was under the impression that Brent's method has the property of guaranteed convergence at a super-linear rate and hence was a better root-finding method than fixed-point iteration. However, it seems that it may not be so straight forward.

1

There are 1 best solutions below

6
On BEST ANSWER

As long as you start with two positions of opposite sign, Brent's method will always converge to a root. Contrary to your understanding, it is not guaranteed to be superlinear in convergence. It tries to be, but if the function is bad, it may be slightly slower than the bisection method (the function of your graph is really bad). This is because every time it tries to estimate a root location, the wild swings of the function make that estimate garbage, forcing it to resort to a bisection step.

So you end up with converging by bisection anyway, but spending a lot of wasted effort trying to make predictions that don't work.

Because Brent's method falls back on bisection, you are guaranteed it will converge. But note that its works by shrinking an interval $[a_n, b_n]$ with $f(a_n)f(b_n) < 0$. With each step, it shrinks that interval to be at most half the previous interval. While it does check to see if it happened to land exactly on a root, its normal stop criterion is $|a_n - b_n| < \text{tolerance}$. That tells you that there is a root somewhere between $a_n$ and $b_n$.

The tolerance is how much error you can accept in the location of the root, not in the value of $f$ at the root. The method does not guarantee a size limit for $f(r)$ where $r$ is the value it returns. Instead, it guarantees that $r$ is within your tolerance value of an actual root of the function.