Firstly a clarification from the previous post in this series. The method presented in that post was a direct application of quadratic interpolation, rather than the inverse quadratic method, as implied by the post title. The inverse quadratic method will be described in this post, along with Muller’s method which is another variant using quadratic interpolation.
In the quadratic interpolation method described in the previous post the next approximation of the function root was found in two stages:
- Find the coefficients of the quadratic curve passing through three points of the function
- Find the closest root of that quadratic, using the quadratic formula.
In Muller’s method these two stages are combined into one, and the equation used to find the root of the quadratic is less prone to loss of significance; see the Wikipedia article on the topic:
The procedure for finding the next root approximation is considerably simplified in the Inverse Quadratic Method. In this method a quadratic curve is fitted to the three points on the function being solved, but using the f(x) values as the x values, and the x values as the f(x) values. The resulting function may be evaluated directly for x = 0 (i.e. f(x) = 0 in the original function). Note that the inverse quadratic function is an approximation to the quadratic function through the chosen points, so the root found by this process is not an exact root of the quadratic function.
The equation for the next root approximation is given by Wikipedia as:
Muller’s Method and the Inverse Quadratic Method are now incorporated in the ItSolve Functions.xls spreadsheet, along with full open source code: