A 2D secant method?

1.3k Views Asked by At

I've recently had occasion (providing an engineering colleague with a little mathematical help) to solve a non linear system

$\begin{align*}f(x,y)&=0,\\ g(x,y)&=0.\end{align*}$

If derivatives of $f$ and $g$ were available, I could use Newton's method

$\mathbf{x}_{n+1}=\mathbf{x}_n-J_n^{-1}\mathbf{x}_n$

where $J$ is of course the Jacobian

$\displaystyle{\frac{\partial(f,g)}{\partial(x,y)}}$.

Since the functions are too complicated to be easily differentiated (computing each of $f$ and $f$ requires multiple steps), my next approach would be to use a secant method: something like Broyden's method.

However, given that this is only a 2D system, I wonder what is wrong with using a Newton-type iteration where the partial derivatives in the Jacobian are approximated by finite differences, so that, for example:

$\displaystyle{\frac{\partial f}{\partial x}\approx \frac{f(x_n,y_n)-f(x_{n-1},y_n)}{x_n-x_{n-1}}}$.

Broyden's formula aims to simplify the updating of the Jacobian approximation each step, and chooses that approximation to be a matrix $J_n$ for which

$J_n(\mathbf{x}_n-\mathbf{x}_{n-1})=\mathbf{F}(\mathbf{x}_n)-\mathbf{F}(\mathbf{x}_{n-1})$.

The use of finite differences provides a Jacobian approximation which doesn't satisfy any nice properties, but on the other hand it is very easy to implement (only a few lines of code), and seems to be quite fast. And for a 2D system I would guess it to be reasonably efficient.

My question is: is there any good reason for using Broyden's method for a 2D system, over the simpler finite-difference method? (Which, if it has a formal name, I don't know it). I'm not a numerical analyst (my knowledge is limited to the simple methods I've taught as part of elementary numerical methods courses), so if anybody can offer some expert opinions, I'll be glad to hear them.